From 3bd43f00a7fdb244333c51ef835cd1fd60b79c8e Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 5 Jun 2019 13:29:20 +0200 Subject: Add RTEMS-specific getcredhostuuid() --- .../include/machine/rtems-bsd-kernel-namespace.h | 1 + rtemsbsd/rtems/rtems-kernel-jail.c | 39 ++++++++++++++++------ 2 files changed, 29 insertions(+), 11 deletions(-) (limited to 'rtemsbsd') 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 * @@ -39,13 +39,6 @@ #include -/*#include -#include -#include -#include -#include -#include */ - #include #include #include @@ -70,6 +63,8 @@ #include #include +#include + #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); +} -- cgit v1.2.3