diff options
author | Joel Sherrill <joel.sherrill@oarcorp.com> | 2014-03-04 15:54:12 -0600 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@oarcorp.com> | 2014-03-07 13:21:11 -0600 |
commit | e6c87f78724743bc74a38678f93ed579ace840f2 (patch) | |
tree | dce3962edb00574dade0c8caf837cd85b9607831 /cpukit/score | |
parent | Remove trailing whitespace in previous patches (diff) | |
download | rtems-e6c87f78724743bc74a38678f93ed579ace840f2.tar.bz2 |
POSIX keys now enabled in all configurations.
Formerly POSIX keys were only enabled when POSIX threads
were enabled. Because they are a truly safe alternative
to per-task variables in an SMP system, they are being
enabled in all configurations.
Diffstat (limited to 'cpukit/score')
-rw-r--r-- | cpukit/score/include/rtems/score/thread.h | 13 | ||||
-rw-r--r-- | cpukit/score/src/threadinitialize.c | 6 |
2 files changed, 18 insertions, 1 deletions
diff --git a/cpukit/score/include/rtems/score/thread.h b/cpukit/score/include/rtems/score/thread.h index ed12ad272a..527be58110 100644 --- a/cpukit/score/include/rtems/score/thread.h +++ b/cpukit/score/include/rtems/score/thread.h @@ -8,7 +8,7 @@ */ /* - * COPYRIGHT (c) 1989-2009. + * COPYRIGHT (c) 1989-2014. * On-Line Applications Research Corporation (OAR). * * The license and distribution terms for this file may be @@ -471,8 +471,19 @@ struct Thread_Control_struct { void *API_Extensions[ THREAD_API_LAST + 1 ]; /** This field points to the user extension pointers. */ void **extensions; + /** This field points to the set of per task variables. */ rtems_task_variable_t *task_variables; + + /** + * This is the thread key value chain's control, which is used + * to track all key value for specific thread, and when thread + * exits, we can remove all key value for specific thread by + * iterating this chain, or we have to search a whole rbtree, + * which is inefficient. + */ + Chain_Control Key_Chain; + }; #if (CPU_PROVIDES_IDLE_THREAD_BODY == FALSE) diff --git a/cpukit/score/src/threadinitialize.c b/cpukit/score/src/threadinitialize.c index acd6636ac8..808c425d33 100644 --- a/cpukit/score/src/threadinitialize.c +++ b/cpukit/score/src/threadinitialize.c @@ -2,6 +2,7 @@ * @file * * @brief Initialize Thread + * * @ingroup ScoreThread */ /* @@ -233,6 +234,11 @@ bool _Thread_Initialize( #endif /* + * initialize thread's key vaule node chain + */ + _Chain_Initialize_empty( &the_thread->Key_Chain ); + + /* * Open the object */ _Objects_Open( information, &the_thread->Object, name ); |