RTEMS: Semaphore Manager Implementation

| RTEMS 5.4-rc2

Loading...
Searching...
No Matches
Files | Data Structures | Macros | Enumerations | Functions | Variables
Semaphore Manager Implementation
Internal » Classic

## Files
file | semdata.h
| Classic Semaphore Manager Data Structures.
file | semimpl.h
| Classic Semaphore Manager Implementation.

## Data Structures
struct | Semaphore_Control

## Macros
#define | SEMAPHORE_INFORMATION_DEFINE(max, scheduler_count)
| Macro to define the objects information for the Classic Semaphore objects.

## Enumerations
enum | Semaphore_Variant { SEMAPHORE_VARIANT_MUTEX_INHERIT_PRIORITY , SEMAPHORE_VARIANT_MUTEX_PRIORITY_CEILING , SEMAPHORE_VARIANT_MUTEX_NO_PROTOCOL , SEMAPHORE_VARIANT_SIMPLE_BINARY , SEMAPHORE_VARIANT_COUNTING }
| Classic semaphore variants. More...
enum | Semaphore_Discipline { SEMAPHORE_DISCIPLINE_PRIORITY , SEMAPHORE_DISCIPLINE_FIFO }

## Functions
RTEMS_INLINE_ROUTINE uintptr_t | _Semaphore_Get_flags (const Semaphore_Control *the_semaphore)
RTEMS_INLINE_ROUTINE void | _Semaphore_Set_flags (Semaphore_Control *the_semaphore, uintptr_t flags)
RTEMS_INLINE_ROUTINE Semaphore_Variant | _Semaphore_Get_variant (uintptr_t flags)
RTEMS_INLINE_ROUTINE uintptr_t | _Semaphore_Set_variant (uintptr_t flags, Semaphore_Variant variant)
RTEMS_INLINE_ROUTINE Semaphore_Discipline | _Semaphore_Get_discipline (uintptr_t flags)
RTEMS_INLINE_ROUTINE uintptr_t | _Semaphore_Set_discipline (uintptr_t flags, Semaphore_Discipline discipline)
RTEMS_INLINE_ROUTINE const Thread_queue_Operations * | _Semaphore_Get_operations (uintptr_t flags)
RTEMS_INLINE_ROUTINE Semaphore_Control * | _Semaphore_Allocate (void)
| Allocates a semaphore control block from the inactive chain of free semaphore control blocks.
RTEMS_INLINE_ROUTINE void | _Semaphore_Free (Semaphore_Control *the_semaphore)
| Frees a semaphore control block to the inactive chain of free semaphore control blocks.
RTEMS_INLINE_ROUTINE Semaphore_Control * | _Semaphore_Get (Objects_Id id, Thread_queue_Context *queue_context)

## Variables
Objects_Information | _Semaphore_Information
| The Classic Semaphore objects information.

## Detailed Description

## Macro Definition Documentation

## ◆ SEMAPHORE_INFORMATION_DEFINE

#define SEMAPHORE_INFORMATION_DEFINE | ( |  | max,
|  |  | scheduler_count
| ) |  |

Value:
OBJECTS_INFORMATION_DEFINE( \
_Semaphore, \
OBJECTS_CLASSIC_API, \
OBJECTS_RTEMS_SEMAPHORES, \
Semaphore_Control, \
max, \
OBJECTS_NO_STRING_NAME, \
_Semaphore_MP_Send_extract_proxy \
)
OBJECTS_NO_STRING_NAME
#define OBJECTS_NO_STRING_NAME
Constant for the object information string name length to indicate that this object class has no stri...
Definition: objectdata.h:101
OBJECTS_INFORMATION_DEFINE
#define OBJECTS_INFORMATION_DEFINE(name, api, cls, type, max, nl, ex)
Statically initializes an objects information.
Definition: objectdata.h:427
Semaphore_Control
Definition: semdata.h:40

Macro to define the objects information for the Classic Semaphore objects.

This macro should only be used by <rtems/confdefs.h>.

Parameters

  max | The configured object maximum (the OBJECTS_UNLIMITED_OBJECTS flag may be set).
  scheduler_count | The configured scheduler count (only used in SMP configurations).

## Enumeration Type Documentation

## ◆ Semaphore_Variant

enum Semaphore_Variant

Classic semaphore variants.

Must be in synchronization with Semaphore_Control::variant.

## Function Documentation

## ◆ _Semaphore_Allocate()

RTEMS_INLINE_ROUTINE Semaphore_Control * _Semaphore_Allocate | ( | void |  | ) |

Allocates a semaphore control block from the inactive chain of free semaphore control blocks.

This function allocates a semaphore control block from the inactive chain of free semaphore control blocks.

## ◆ _Semaphore_Free()

RTEMS_INLINE_ROUTINE void _Semaphore_Free | ( | Semaphore_Control * | the_semaphore | ) |

Frees a semaphore control block to the inactive chain of free semaphore control blocks.

This routine frees a semaphore control block to the inactive chain of free semaphore control blocks.