diff options
Diffstat (limited to 'cpukit/rtems/include/rtems/rtems/semimpl.h')
-rw-r--r-- | cpukit/rtems/include/rtems/rtems/semimpl.h | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/cpukit/rtems/include/rtems/rtems/semimpl.h b/cpukit/rtems/include/rtems/rtems/semimpl.h index ac55bc7354..c23bef905a 100644 --- a/cpukit/rtems/include/rtems/rtems/semimpl.h +++ b/cpukit/rtems/include/rtems/rtems/semimpl.h @@ -134,18 +134,31 @@ RTEMS_INLINE_ROUTINE void _Semaphore_Free ( _Objects_Free( &_Semaphore_Information, &the_semaphore->Object ); } -RTEMS_INLINE_ROUTINE Semaphore_Control *_Semaphore_Get( - Objects_Id id, - ISR_lock_Context *lock_context +RTEMS_INLINE_ROUTINE Semaphore_Control *_Semaphore_Do_get( + Objects_Id id, + Thread_queue_Context *queue_context +#if defined(RTEMS_MULTIPROCESSING) + , + Thread_queue_MP_callout mp_callout +#endif ) { + _Thread_queue_Context_initialize( queue_context, mp_callout ); return (Semaphore_Control *) _Objects_Get( id, - lock_context, + &queue_context->Lock_context, &_Semaphore_Information ); } +#if defined(RTEMS_MULTIPROCESSING) + #define _Semaphore_Get( id, queue_context, mp_callout ) \ + _Semaphore_Do_get( id, queue_context, mp_callout ) +#else + #define _Semaphore_Get( id, queue_context, mp_callout ) \ + _Semaphore_Do_get( id, queue_context ) +#endif + #ifdef __cplusplus } #endif |