diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-06-05 11:48:57 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-06-07 17:06:43 +0200 |
commit | 2d2352bab92c51c2fd857b9555242545bd08c95e (patch) | |
tree | de11a05e5b361a161e93c98866aa704ed24ed3ae /cpukit/posix/src/pthreadjoin.c | |
parent | score: Add _Objects_Put_for_get_isr_disable() (diff) | |
download | rtems-2d2352bab92c51c2fd857b9555242545bd08c95e.tar.bz2 |
score: Add and use _Objects_Put()
Add and use _Objects_Put_without_thread_dispatch(). These two functions
pair with the _Objects_Get() function. This helps to introduce object
specific SMP locks to avoid lock contention.
Diffstat (limited to 'cpukit/posix/src/pthreadjoin.c')
-rw-r--r-- | cpukit/posix/src/pthreadjoin.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/cpukit/posix/src/pthreadjoin.c b/cpukit/posix/src/pthreadjoin.c index 8304aa3685..cd8c40af18 100644 --- a/cpukit/posix/src/pthreadjoin.c +++ b/cpukit/posix/src/pthreadjoin.c @@ -45,12 +45,12 @@ on_EINTR: api = the_thread->API_Extensions[ THREAD_API_POSIX ]; if ( api->detachstate == PTHREAD_CREATE_DETACHED ) { - _Thread_Enable_dispatch(); + _Objects_Put( &the_thread->Object ); return EINVAL; } if ( _Thread_Is_executing( the_thread ) ) { - _Thread_Enable_dispatch(); + _Objects_Put( &the_thread->Object ); return EDEADLK; } @@ -70,7 +70,7 @@ on_EINTR: _Thread_queue_Enter_critical_section( &api->Join_List ); _Thread_queue_Enqueue( &api->Join_List, WATCHDOG_NO_TIMEOUT ); } - _Thread_Enable_dispatch(); + _Objects_Put( &the_thread->Object ); if ( _Thread_Executing->Wait.return_code == EINTR ) goto on_EINTR; |