RTEMS
semdata.h
Go to the documentation of this file.
1 
9 /*
10  * COPYRIGHT (c) 1989-2008, 2016.
11  * On-Line Applications Research Corporation (OAR).
12  *
13  * The license and distribution terms for this file may be
14  * found in the file LICENSE in this distribution or at
15  * http://www.rtems.org/license/LICENSE.
16  */
17 
18 #ifndef _RTEMS_RTEMS_SEMDATA_H
19 #define _RTEMS_RTEMS_SEMDATA_H
20 
21 #include <rtems/rtems/sem.h>
22 #include <rtems/score/coremutex.h>
23 #include <rtems/score/coresem.h>
24 #include <rtems/score/mrsp.h>
25 #include <rtems/score/object.h>
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 
40 typedef struct {
51 
61  union {
66 
72 
78 
79 #if defined(RTEMS_SMP)
80  MRSP_Control MRSP;
81 #endif
82  } Core_control;
84 
89 
90 #if defined(RTEMS_MULTIPROCESSING)
91 
98 void _Semaphore_MP_Send_extract_proxy (
99  Thread_Control *the_thread,
100  Objects_Id id
101 );
102 #endif
103 
115 #if defined(RTEMS_SMP)
116 #define SEMAPHORE_INFORMATION_DEFINE( max, scheduler_count ) \
117  typedef union { \
118  Objects_Control Object; \
119  Semaphore_Control Semaphore; \
120  struct { \
121  Objects_Control Object; \
122  MRSP_Control Control; \
123  Priority_Control ceiling_priorities[ scheduler_count ]; \
124  } MRSP; \
125  } Semaphore_Configured_control; \
126  OBJECTS_INFORMATION_DEFINE( \
127  _Semaphore, \
128  OBJECTS_CLASSIC_API, \
129  OBJECTS_RTEMS_SEMAPHORES, \
130  Semaphore_Configured_control, \
131  max, \
132  OBJECTS_NO_STRING_NAME, \
133  _Semaphore_MP_Send_extract_proxy \
134  )
135 #else
136 #define SEMAPHORE_INFORMATION_DEFINE( max, scheduler_count ) \
137  OBJECTS_INFORMATION_DEFINE( \
138  _Semaphore, \
139  OBJECTS_CLASSIC_API, \
140  OBJECTS_RTEMS_SEMAPHORES, \
141  Semaphore_Control, \
142  max, \
143  OBJECTS_NO_STRING_NAME, \
144  _Semaphore_MP_Send_extract_proxy \
145  )
146 #endif
147 
150 #ifdef __cplusplus
151 }
152 #endif
153 
154 #endif
155 /* end of include file */
CORE_ceiling_mutex_Control Mutex
Definition: semdata.h:71
Constants and Structures Associated with the Object Handler.
Thread_queue_Control Wait_queue
The thread queue present in all other variants.
Definition: semdata.h:65
Objects_Control Object
The object management portion of a semaphore instance.
Definition: semdata.h:50
This header file defines the Semaphore Manager API.
MrsP control block.
Definition: mrsp.h:62
The information structure used to manage each API class of objects.
Definition: objectdata.h:176
Definitions for Multiprocessor Resource Sharing Protocol (MrsP).
CORE_semaphore_Control Semaphore
Definition: semdata.h:77
uint32_t Objects_Id
Definition: object.h:80
Objects_Information _Semaphore_Information
The Classic Semaphore objects information.
Definition: sem.c:47
The recursive mutex control with priority ceiling protocol support.
Definition: coremutex.h:83
CORE Mutex API.
Data Associated with the Counting Semaphore Handler.