From ba74ebde7461b28bf0261523d4e91e7c0e17b622 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Fri, 14 Feb 2020 19:09:56 +0100 Subject: libio: Add POSIX user environment pointer to TCB The IO library used a POSIX key to store an optional POSIX user environment pointer. This pulled in the POSIX keys support in every application configuration. Add a user environment pointer to the thread control block (TCB) instead. Applications which do not need the POSIX user environment will just get an overhead of one pointer per thread. Close #3882. --- cpukit/libcsupport/src/__usrenv.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'cpukit/libcsupport/src/__usrenv.c') diff --git a/cpukit/libcsupport/src/__usrenv.c b/cpukit/libcsupport/src/__usrenv.c index 611e0d7a92..cd191f33ea 100644 --- a/cpukit/libcsupport/src/__usrenv.c +++ b/cpukit/libcsupport/src/__usrenv.c @@ -24,6 +24,8 @@ #include #include +#include +#include static int null_handler_open( rtems_libio_t *iop, @@ -249,4 +251,14 @@ rtems_user_env_t rtems_global_user_env = { .umask = S_IWGRP | S_IWOTH }; -pthread_key_t rtems_current_user_env_key; +rtems_user_env_t *rtems_current_user_env_get(void) +{ + Thread_Control *executing = _Thread_Get_executing(); + rtems_user_env_t *env = executing->user_environment; + + if (env == NULL) { + return &rtems_global_user_env; + } + + return env; +} -- cgit v1.2.3