summaryrefslogtreecommitdiffstats
path: root/cpukit/rtems/include/rtems/rtems/semimpl.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/rtems/include/rtems/rtems/semimpl.h')
-rw-r--r--cpukit/rtems/include/rtems/rtems/semimpl.h21
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