diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-10-17 11:46:54 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-10-17 12:10:31 +0200 |
commit | 37eb717f90c04b9a2654ef5c5b247eb50652e54b (patch) | |
tree | a7b40d593bbccdf1e880faa2cd9f6bdafdf1747f /cpukit | |
parent | posix: Remove POSIX_API_Control::schedparam (diff) | |
download | rtems-37eb717f90c04b9a2654ef5c5b247eb50652e54b.tar.bz2 |
posix: Simplify _POSIX_Threads_Create_extension()
Move unblocked signals initialization to pthread_create().
Update #2514.
Diffstat (limited to 'cpukit')
-rw-r--r-- | cpukit/posix/src/pthread.c | 17 | ||||
-rw-r--r-- | cpukit/posix/src/pthreadcreate.c | 4 |
2 files changed, 4 insertions, 17 deletions
diff --git a/cpukit/posix/src/pthread.c b/cpukit/posix/src/pthread.c index 8bd44ca03a..ba394b4924 100644 --- a/cpukit/posix/src/pthread.c +++ b/cpukit/posix/src/pthread.c @@ -122,26 +122,9 @@ static bool _POSIX_Threads_Create_extension( ) { POSIX_API_Control *api; - POSIX_API_Control *executing_api; api = created->API_Extensions[ THREAD_API_POSIX ]; - /* - * If the thread is not a posix thread, then all posix signals are blocked - * by default. - * - * The check for class == 1 is debug. Should never really happen. - */ - RTEMS_STATIC_ASSERT( SIGNAL_EMPTY_MASK == 0, signals_pending ); - if ( _Objects_Get_API( created->Object.id ) == OBJECTS_POSIX_API - #if defined(RTEMS_DEBUG) - && _Objects_Get_class( created->Object.id ) == 1 - #endif - ) { - executing_api = _Thread_Get_executing()->API_Extensions[ THREAD_API_POSIX ]; - api->signals_unblocked = executing_api->signals_unblocked; - } - api->Sporadic.thread = created; _Watchdog_Preinitialize( &api->Sporadic.Timer, _Per_CPU_Get_by_index( 0 ) ); _Watchdog_Initialize( &api->Sporadic.Timer, _POSIX_Threads_Sporadic_timer ); diff --git a/cpukit/posix/src/pthreadcreate.c b/cpukit/posix/src/pthreadcreate.c index 0de566f7c2..2315b7f5ee 100644 --- a/cpukit/posix/src/pthreadcreate.c +++ b/cpukit/posix/src/pthreadcreate.c @@ -74,6 +74,7 @@ int pthread_create( Thread_Control *executing; const Scheduler_Control *scheduler; POSIX_API_Control *api; + const POSIX_API_Control *executing_api; int schedpolicy = SCHED_RR; struct sched_param schedparam; Objects_Name name; @@ -237,6 +238,9 @@ int pthread_create( * finish initializing the per API structure */ api = the_thread->API_Extensions[ THREAD_API_POSIX ]; + executing_api = executing->API_Extensions[ THREAD_API_POSIX ]; + + api->signals_unblocked = executing_api->signals_unblocked; api->created_with_explicit_scheduler = ( the_attr->inheritsched == PTHREAD_EXPLICIT_SCHED ); |