summaryrefslogtreecommitdiffstats
path: root/rtemsbsd
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2019-06-05 13:29:20 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2019-06-05 14:26:38 +0200
commit3bd43f00a7fdb244333c51ef835cd1fd60b79c8e (patch)
treedcee1104e581b22d9b096f8e6cd919e1f449024b /rtemsbsd
parentCONTRIBUTING: mention pyelftools dependency (diff)
downloadrtems-libbsd-3bd43f00a7fdb244333c51ef835cd1fd60b79c8e.tar.bz2
Add RTEMS-specific getcredhostuuid()
Diffstat (limited to 'rtemsbsd')
-rw-r--r--rtemsbsd/include/machine/rtems-bsd-kernel-namespace.h1
-rw-r--r--rtemsbsd/rtems/rtems-kernel-jail.c39
2 files changed, 29 insertions, 11 deletions
diff --git a/rtemsbsd/include/machine/rtems-bsd-kernel-namespace.h b/rtemsbsd/include/machine/rtems-bsd-kernel-namespace.h
index d7967c65..83c4366a 100644
--- a/rtemsbsd/include/machine/rtems-bsd-kernel-namespace.h
+++ b/rtemsbsd/include/machine/rtems-bsd-kernel-namespace.h
@@ -1279,6 +1279,7 @@
#define GetAckModified _bsd_GetAckModified
#define GetAliasAddress _bsd_GetAliasAddress
#define GetAliasPort _bsd_GetAliasPort
+#define getcredhostuuid _bsd_getcredhostuuid
#define GetDefaultAliasAddress _bsd_GetDefaultAliasAddress
#define GetDeltaAckIn _bsd_GetDeltaAckIn
#define GetDeltaSeqOut _bsd_GetDeltaSeqOut
diff --git a/rtemsbsd/rtems/rtems-kernel-jail.c b/rtemsbsd/rtems/rtems-kernel-jail.c
index 59068ed4..e53e4cc2 100644
--- a/rtemsbsd/rtems/rtems-kernel-jail.c
+++ b/rtemsbsd/rtems/rtems-kernel-jail.c
@@ -3,14 +3,14 @@
*
* @ingroup rtems_bsd_rtems
*
- * @brief This object is an minimal rtems implementation of kern_jail.c.
+ * @brief This object is an minimal RTEMS implementation of kern_jail.c.
*/
/*
- * Copyright (c) 2009, 2010 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2009, 2019 embedded brains GmbH. All rights reserved.
*
* embedded brains GmbH
- * Obere Lagerstr. 30
+ * Dornierstr. 4.
* 82178 Puchheim
* Germany
* <rtems@embedded-brains.de>
@@ -39,13 +39,6 @@
#include <machine/rtems-bsd-kernel-space.h>
-/*#include <sys/types.h>
-#include <sys/systm.h>
-#include <sys/malloc.h>
-#include <sys/jail.h>
-#include <sys/lock.h>
-#include <sys/mutex.h>*/
-
#include <sys/param.h>
#include <sys/types.h>
#include <sys/kernel.h>
@@ -70,6 +63,8 @@
#include <sys/syscallsubr.h>
#include <sys/sysctl.h>
+#include <rtems/score/threadqimpl.h>
+
#define DEFAULT_HOSTUUID "00000000-0000-0000-0000-000000000000"
/* Keep struct prison prison0 and some code in kern_jail_set() readable. */
@@ -96,6 +91,19 @@ struct prison prison0 = {
.pr_path = "/",
.pr_securelevel = -1,
.pr_childmax = JAIL_MAX,
+
+ /*
+ * Statically initialize this mutex to allow a garbage collection of this
+ * structure.
+ */
+ .pr_mtx = {
+ .lock_object = { .lo_flags = LO_INITIALIZED },
+ .mutex = {
+ .queue = THREAD_QUEUE_INITIALIZER("jail mutex"),
+ .nest_level = 0
+ }
+ },
+
.pr_hostuuid = DEFAULT_HOSTUUID,
.pr_children = LIST_HEAD_INITIALIZER(prison0.pr_children),
#ifdef VIMAGE
@@ -105,4 +113,13 @@ struct prison prison0 = {
#endif
.pr_allow = PR_ALLOW_ALL_STATIC
};
-MTX_SYSINIT(prison0, &prison0.pr_mtx, "jail mutex", MTX_DEF);
+
+void
+getcredhostuuid(struct ucred *cred, char *buf, size_t size)
+{
+
+ (void)cred;
+ mtx_lock(&prison0.pr_mtx);
+ strlcpy(buf, prison0.pr_hostuuid, size);
+ mtx_unlock(&prison0.pr_mtx);
+}