17 #ifndef _RTEMS_RTEMS_SEMIMPL_H 18 #define _RTEMS_RTEMS_SEMIMPL_H 23 #include <rtems/score/mrspimpl.h> 43 SEMAPHORE_VARIANT_MUTEX_INHERIT_PRIORITY,
44 SEMAPHORE_VARIANT_MUTEX_PRIORITY_CEILING,
45 SEMAPHORE_VARIANT_MUTEX_NO_PROTOCOL,
46 SEMAPHORE_VARIANT_SIMPLE_BINARY,
47 SEMAPHORE_VARIANT_COUNTING
48 #if defined(RTEMS_SMP) 50 SEMAPHORE_VARIANT_MRSP
55 SEMAPHORE_DISCIPLINE_PRIORITY,
56 SEMAPHORE_DISCIPLINE_FIFO
57 } Semaphore_Discipline;
63 if ( the_semaphore->
variant == SEMAPHORE_VARIANT_MUTEX_INHERIT_PRIORITY ) {
64 return &_Thread_queue_Operations_priority_inherit;
67 if ( the_semaphore->
discipline == SEMAPHORE_DISCIPLINE_PRIORITY ) {
68 return &_Thread_queue_Operations_priority;
71 return &_Thread_queue_Operations_FIFO;
119 #ifdef RTEMS_MULTIPROCESSING void _Objects_Free(Objects_Information *information, Objects_Control *the_object)
Frees an object.
Definition: objectfree.c:25
CORE Mutex Implementation.
Thread queue context for the thread queue methods.
Definition: threadq.h:193
Objects_Control * _Objects_Allocate(Objects_Information *information)
Allocates an object.
Definition: objectallocate.c:89
#define RTEMS_INLINE_ROUTINE
Definition: basedefs.h:65
Objects_Control * _Objects_Get(Objects_Id id, ISR_lock_Context *lock_context, const Objects_Information *information)
Maps the specified object identifier to the associated local object control block.
Definition: objectgetlocal.c:28
Classic Semaphore Manager Data Structures.
Objects_Control Object
Definition: semdata.h:42
RTEMS_INLINE_ROUTINE Semaphore_Control * _Semaphore_Allocate(void)
Allocates a semaphore control block from the inactive chain of free semaphore control blocks...
Definition: semimpl.h:81
RTEMS_INLINE_ROUTINE void _Thread_queue_Context_initialize(Thread_queue_Context *queue_context)
Initializes a thread queue context.
Definition: threadqimpl.h:108
Thread queue operations.
Definition: threadq.h:512
Thread_queue_Lock_context Lock_context
The lock context for the thread queue acquire and release operations.
Definition: threadq.h:198
RTEMS_INLINE_ROUTINE void _Semaphore_Free(Semaphore_Control *the_semaphore)
Frees a semaphore control block to the inactive chain of free semaphore control blocks.
Definition: semimpl.h:93
unsigned int discipline
The semaphore thread queue discipline.
Definition: semdata.h:88
Inlined Routines Associated with the SuperCore Semaphore.
Objects_Information _Semaphore_Information
The Classic Semaphore objects information.
ISR_lock_Context Lock_context
The lock context for the thread queue acquire and release operations.
Definition: threadq.h:125
uint32_t Objects_Id
Definition: object.h:75
Semaphore_Variant
Classic semaphore variants.
Definition: semimpl.h:42
unsigned int variant
The semaphore variant.
Definition: semdata.h:81