[rtems commit] posix: Simplify _POSIX_Threads_Create_extension()

Sebastian Huber sebh at rtems.org
Wed Oct 18 06:52:37 UTC 2017


Module:    rtems
Branch:    master
Commit:    37eb717f90c04b9a2654ef5c5b247eb50652e54b
Changeset: http://git.rtems.org/rtems/commit/?id=37eb717f90c04b9a2654ef5c5b247eb50652e54b

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Tue Oct 17 11:46:54 2017 +0200

posix: Simplify _POSIX_Threads_Create_extension()

Move unblocked signals initialization to pthread_create().

Update #2514.

---

 cpukit/posix/src/pthread.c       | 17 -----------------
 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 8bd44ca..ba394b4 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 0de566f..2315b7f 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 );




More information about the vc mailing list