From 4fef7312b31bed6c77add331805f5212551c54cd Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 19 Sep 2017 15:08:35 +0200 Subject: [PATCH] RTEMS: Optimize pthread_once_t Reduce size of pthread_once_t and make it zero-initialized. Signed-off-by: Sebastian Huber --- newlib/libc/sys/rtems/include/machine/_threads.h | 5 ++--- newlib/libc/sys/rtems/include/sys/_pthreadtypes.h | 8 ++++---- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/newlib/libc/sys/rtems/include/machine/_threads.h b/newlib/libc/sys/rtems/include/machine/_threads.h index 24db21c0e..5faa78f46 100644 --- a/newlib/libc/sys/rtems/include/machine/_threads.h +++ b/newlib/libc/sys/rtems/include/machine/_threads.h @@ -41,12 +41,11 @@ typedef __uint32_t tss_t; /* pthread_once_t */ typedef struct { - int _is_initialized; - int _init_executed; + unsigned char _flags; } once_flag; /* PTHREAD_ONCE_INIT */ -#define ONCE_FLAG_INIT { 1, 0 } +#define ONCE_FLAG_INIT { 0 } /* PTHREAD_DESTRUCTOR_ITERATIONS */ #define TSS_DTOR_ITERATIONS 4 diff --git a/newlib/libc/sys/rtems/include/sys/_pthreadtypes.h b/newlib/libc/sys/rtems/include/sys/_pthreadtypes.h index bd66c689e..9db50fe44 100644 --- a/newlib/libc/sys/rtems/include/sys/_pthreadtypes.h +++ b/newlib/libc/sys/rtems/include/sys/_pthreadtypes.h @@ -169,11 +169,11 @@ typedef struct { typedef __uint32_t pthread_key_t; /* thread-specific data keys */ typedef struct { - int is_initialized; /* is this structure initialized? */ - int init_executed; /* has the initialization routine been run? */ -} pthread_once_t; /* dynamic package initialization */ + unsigned char _flags; +} pthread_once_t; + +#define _PTHREAD_ONCE_INIT { 0 } -#define _PTHREAD_ONCE_INIT { 1, 0 } /* is initialized and not run */ #endif /* defined(_POSIX_THREADS) */ /* POSIX Barrier Types */