RTEMS CPU Kit with SuperCore  4.10.99.0
coremsg.h
Go to the documentation of this file.
1 
10 /*
11  * COPYRIGHT (c) 1989-2009.
12  * On-Line Applications Research Corporation (OAR).
13  *
14  * The license and distribution terms for this file may be
15  * found in the file LICENSE in this distribution or at
16  * http://www.rtems.org/license/LICENSE.
17  */
18 
19 #ifndef _RTEMS_SCORE_COREMSG_H
20 #define _RTEMS_SCORE_COREMSG_H
21 
22 #include <rtems/score/chain.h>
23 #include <rtems/score/threadq.h>
24 #include <rtems/score/watchdog.h>
25 
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29 
40 #if defined(RTEMS_POSIX_API)
41 
46  #define RTEMS_SCORE_COREMSG_ENABLE_MESSAGE_PRIORITY
47 #endif
48 
49 #if defined(RTEMS_POSIX_API)
50 
55  #define RTEMS_SCORE_COREMSG_ENABLE_NOTIFICATION
56 #endif
57 
58 #if defined(RTEMS_POSIX_API)
59 
63  #define RTEMS_SCORE_COREMSG_ENABLE_BLOCKING_SEND
64 #endif
65 
75 typedef struct {
77  size_t size;
79  uint32_t buffer[1];
81 
88 typedef struct {
91  #if defined(RTEMS_SCORE_COREMSG_ENABLE_MESSAGE_PRIORITY)
92 
93  int priority;
94  #endif
95 
98 
105 typedef enum {
111 
118 typedef struct {
122 
123 #if defined(RTEMS_SCORE_COREMSG_ENABLE_NOTIFICATION)
124 
131  typedef void (*CORE_message_queue_Notify_Handler)( void * );
132 #endif
133 
140 typedef struct {
169  #if defined(RTEMS_SCORE_COREMSG_ENABLE_NOTIFICATION)
170 
173  CORE_message_queue_Notify_Handler notify_handler;
175  void *notify_argument;
176  #endif
177 
182 
185 #ifdef __cplusplus
186 }
187 #endif
188 
189 #endif
190 /* end of include file */
This is used to manage each element (node) which is placed on a chain.
Definition: chain.h:65
Chain_Control Inactive_messages
This chain is the set of inactive messages.
Definition: coremsg.h:180
This is used to manage a chain.
Definition: chain.h:83
Control block used to manage the attributes of each message queue.
Definition: coremsg.h:118
Chain_Node Node
This element allows this structure to be placed on chains.
Definition: coremsg.h:90
This is the structure used to manage sets of tasks which are blocked waiting to acquire a resource...
Definition: threadq.h:55
The organization of a message buffer.
Definition: coremsg.h:88
Constants and Structures Associated with Watchdog Timers.
This value indicates that blocking tasks are in FIFO order.
Definition: coremsg.h:107
Constants and Structures Needed to Declare a Thread Queue.
uint32_t number_of_pending_messages
This element is the number of messages which are currently pending.
Definition: coremsg.h:155
CORE_message_queue_Buffer Contents
This field points to the contents of the message.
Definition: coremsg.h:96
size_t size
This field is the size of this message.
Definition: coremsg.h:77
CORE_message_queue_Disciplines discipline
This field specifies the order in which blocking tasks will be ordered.
Definition: coremsg.h:120
uint32_t maximum_pending_messages
This element is maximum number of messages which may be pending at any given time.
Definition: coremsg.h:152
Chain_Control Pending_messages
This chain is the set of pending messages.
Definition: coremsg.h:163
Data types needed to manipulate the contents of message buffers.
Definition: coremsg.h:75
Chain Handler API.
Control block used to manage each message queue.
Definition: coremsg.h:140
This value indicates that blocking tasks are in priority order.
Definition: coremsg.h:109
CORE_message_queue_Disciplines
The possible blocking disciplines for a message queue.
Definition: coremsg.h:105
CORE_message_queue_Attributes Attributes
This element is the set of attributes which define this instance's behavior.
Definition: coremsg.h:148
size_t maximum_message_size
This is the size in bytes of the largest message which may be sent via this queue.
Definition: coremsg.h:159
Thread_queue_Control Wait_queue
This field is the Waiting Queue used to manage the set of tasks which are blocked waiting to receive ...
Definition: coremsg.h:144
CORE_message_queue_Buffer * message_buffers
This is the address of the memory allocated for message buffers.
Definition: coremsg.h:168