It is no longer necessary to protect the workspace allocations with the Giant lock due to the thread life cycle re-implementation. --- cpukit/posix/src/pthread.c | 2 +- cpukit/score/src/apimutexlock.c | 4 ++++ cpukit/score/src/apimutexunlock.c | 5 +---- 3 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/cpukit/posix/src/pthread.c b/cpukit/posix/src/pthread.c index 8d1a8eb..512cd70 100644 --- a/cpukit/posix/src/pthread.c +++ b/cpukit/posix/src/pthread.c @@ -227,7 +227,7 @@ static bool _POSIX_Threads_Create_extension( && _Objects_Get_class( created->Object.id ) == 1 #endif ) { - executing_api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; + executing_api = _Thread_Get_executing()->API_Extensions[ THREAD_API_POSIX ]; api->signals_blocked = executing_api->signals_blocked; } else { api->signals_blocked = SIGNAL_ALL_MASK; diff --git a/cpukit/score/src/apimutexlock.c b/cpukit/score/src/apimutexlock.c index 91f6af3..d943bdd 100644 --- a/cpukit/score/src/apimutexlock.c +++ b/cpukit/score/src/apimutexlock.c @@ -43,4 +43,8 @@ void _API_Mutex_Lock( 0, level ); + + #if defined(RTEMS_SMP) + _Thread_Enable_dispatch(); + #endif } diff --git a/cpukit/score/src/apimutexunlock.c b/cpukit/score/src/apimutexunlock.c index 354033c..43bdfe8 100644 --- a/cpukit/score/src/apimutexunlock.c +++ b/cpukit/score/src/apimutexunlock.c @@ -27,10 +27,7 @@ void _API_Mutex_Unlock( API_Mutex_Control *the_mutex ) { - /* Dispatch is already disabled in SMP while lock is held. */ - #if !defined(RTEMS_SMP) - _Thread_Disable_dispatch(); - #endif + _Thread_Disable_dispatch(); _CORE_mutex_Surrender( &the_mutex->Mutex, the_mutex->Object.id, -- 1.7.7 _______________________________________________ rtems-devel mailing list rtems-devel@rtems.org http://www.rtems.org/mailman/listinfo/rtems-devel