RTEMS 6.1-rc5
|
The Event Manager provides a high performance method of inter-task communication and synchronization. More...
Macros | |
#define | RTEMS_ALL_EVENTS 0xffffffff |
This event set constant represents all events of an event set. | |
#define | RTEMS_EVENT_0 0x00000001 |
This event set constant represents the bit in the event set associated with event 0. | |
#define | RTEMS_EVENT_1 0x00000002 |
This event set constant represents the bit in the event set associated with event 1. | |
#define | RTEMS_EVENT_2 0x00000004 |
This event set constant represents the bit in the event set associated with event 2. | |
#define | RTEMS_EVENT_3 0x00000008 |
This event set constant represents the bit in the event set associated with event 3. | |
#define | RTEMS_EVENT_4 0x00000010 |
This event set constant represents the bit in the event set associated with event 4. | |
#define | RTEMS_EVENT_5 0x00000020 |
This event set constant represents the bit in the event set associated with event 5. | |
#define | RTEMS_EVENT_6 0x00000040 |
This event set constant represents the bit in the event set associated with event 6. | |
#define | RTEMS_EVENT_7 0x00000080 |
This event set constant represents the bit in the event set associated with event 7. | |
#define | RTEMS_EVENT_8 0x00000100 |
This event set constant represents the bit in the event set associated with event 8. | |
#define | RTEMS_EVENT_9 0x00000200 |
This event set constant represents the bit in the event set associated with event 9. | |
#define | RTEMS_EVENT_10 0x00000400 |
This event set constant represents the bit in the event set associated with event 10. | |
#define | RTEMS_EVENT_11 0x00000800 |
This event set constant represents the bit in the event set associated with event 11. | |
#define | RTEMS_EVENT_12 0x00001000 |
This event set constant represents the bit in the event set associated with event 12. | |
#define | RTEMS_EVENT_13 0x00002000 |
This event set constant represents the bit in the event set associated with event 13. | |
#define | RTEMS_EVENT_14 0x00004000 |
This event set constant represents the bit in the event set associated with event 14. | |
#define | RTEMS_EVENT_15 0x00008000 |
This event set constant represents the bit in the event set associated with event 15. | |
#define | RTEMS_EVENT_16 0x00010000 |
This event set constant represents the bit in the event set associated with event 16. | |
#define | RTEMS_EVENT_17 0x00020000 |
This event set constant represents the bit in the event set associated with event 17. | |
#define | RTEMS_EVENT_18 0x00040000 |
This event set constant represents the bit in the event set associated with event 18. | |
#define | RTEMS_EVENT_19 0x00080000 |
This event set constant represents the bit in the event set associated with event 19. | |
#define | RTEMS_EVENT_20 0x00100000 |
This event set constant represents the bit in the event set associated with event 20. | |
#define | RTEMS_EVENT_21 0x00200000 |
This event set constant represents the bit in the event set associated with event 21. | |
#define | RTEMS_EVENT_22 0x00400000 |
This event set constant represents the bit in the event set associated with event 22. | |
#define | RTEMS_EVENT_23 0x00800000 |
This event set constant represents the bit in the event set associated with event 23. | |
#define | RTEMS_EVENT_24 0x01000000 |
This event set constant represents the bit in the event set associated with event 24. | |
#define | RTEMS_EVENT_25 0x02000000 |
This event set constant represents the bit in the event set associated with event 25. | |
#define | RTEMS_EVENT_26 0x04000000 |
This event set constant represents the bit in the event set associated with event 26. | |
#define | RTEMS_EVENT_27 0x08000000 |
This event set constant represents the bit in the event set associated with event 27. | |
#define | RTEMS_EVENT_28 0x10000000 |
This event set constant represents the bit in the event set associated with event 28. | |
#define | RTEMS_EVENT_29 0x20000000 |
This event set constant represents the bit in the event set associated with event 29. | |
#define | RTEMS_EVENT_30 0x40000000 |
This event set constant represents the bit in the event set associated with event 30. | |
#define | RTEMS_EVENT_31 0x80000000 |
This event set constant represents the bit in the event set associated with event 31. | |
#define | RTEMS_PENDING_EVENTS 0 |
This event set constant indicates that rtems_event_receive() shall return the set of pending events. | |
Typedefs | |
typedef uint32_t | rtems_event_set |
This integer type represents a bit field which can hold exactly 32 individual events. | |
Functions | |
rtems_status_code | rtems_event_send (rtems_id id, rtems_event_set event_in) |
Sends the event set to the task. | |
rtems_status_code | rtems_event_receive (rtems_event_set event_in, rtems_option option_set, rtems_interval ticks, rtems_event_set *event_out) |
Receives or gets an event set from the calling task. | |
The Event Manager provides a high performance method of inter-task communication and synchronization.
#define RTEMS_ALL_EVENTS 0xffffffff |
This event set constant represents all events of an event set.
This event set constant is equal to the bitwise or of RTEMS_EVENT_0, RTEMS_EVENT_1, RTEMS_EVENT_2, RTEMS_EVENT_3, RTEMS_EVENT_4, RTEMS_EVENT_5, RTEMS_EVENT_6, RTEMS_EVENT_7, RTEMS_EVENT_8, RTEMS_EVENT_9, RTEMS_EVENT_10, RTEMS_EVENT_11, RTEMS_EVENT_12, RTEMS_EVENT_13, RTEMS_EVENT_14, RTEMS_EVENT_15, RTEMS_EVENT_16, RTEMS_EVENT_17, RTEMS_EVENT_18, RTEMS_EVENT_19, RTEMS_EVENT_20, RTEMS_EVENT_21, RTEMS_EVENT_22, RTEMS_EVENT_23, RTEMS_EVENT_24, RTEMS_EVENT_25, RTEMS_EVENT_26, RTEMS_EVENT_27, RTEMS_EVENT_28, RTEMS_EVENT_29, RTEMS_EVENT_30, and RTEMS_EVENT_31.
rtems_status_code rtems_event_receive | ( | rtems_event_set | event_in, |
rtems_option | option_set, | ||
rtems_interval | ticks, | ||
rtems_event_set * | event_out | ||
) |
Receives or gets an event set from the calling task.
event_in | is the event set of interest. Use RTEMS_PENDING_EVENTS to get the pending events. |
option_set | is the option set. |
ticks | is the timeout in clock ticks if the RTEMS_WAIT option is set. Use RTEMS_NO_TIMEOUT to wait potentially forever. |
event_out | is the pointer to an event set. The received or pending events are stored in the referenced event set if the operation was successful. |
This directive can be used to
To get the pending events use the constant RTEMS_PENDING_EVENTS for the event_in
parameter. The pending events are returned to the calling task but the event set of the calling task is left unaltered. The option_set
and ticks
parameters are ignored in this case. The directive returns immediately and does not block.
To receive events you have to define an input event condition and some options.
The option set specified in option_set
is built through a bitwise or of the option constants described below. Not all combinations of options are allowed. Some options are mutually exclusive. If mutually exclusive options are combined, the behaviour is undefined. Options not mentioned below are not evaluated by this directive and have no effect. Default options can be selected by using the RTEMS_DEFAULT_OPTIONS constant. The option set defines
The calling task can wait or poll for the events.
ticks
parameter defines how long the calling task is willing to wait. Use RTEMS_NO_TIMEOUT to wait potentially forever, otherwise set a timeout interval in clock ticks.ticks
parameter is ignored.The calling task can receive all or any of the input events specified in event_in
.
RTEMS_SUCCESSFUL | The requested operation was successful. |
RTEMS_INVALID_ADDRESS | The event_out parameter was NULL. |
RTEMS_UNSATISFIED | The events of interest were not immediately available. |
RTEMS_TIMEOUT | The events of interest were not available within the specified timeout interval. |
This directive only affects the events specified in event_in
. Any pending events that do not correspond to any of the events specified in event_in
will be left pending.
To receive all events use the event set constant RTEMS_ALL_EVENTS for the event_in
parameter. Do not confuse this event set constant with the directive option RTEMS_EVENT_ALL.
A task can receive all of the pending events by calling the directive with a value of RTEMS_ALL_EVENTS for the event_in
parameter and the bitwise or of the RTEMS_NO_WAIT and RTEMS_EVENT_ANY options for the option_set
parameter. The pending events are returned and the event set of the task is cleared. If no events are pending then the RTEMS_UNSATISFIED status code will be returned.
The following constraints apply to this directive:
rtems_status_code rtems_event_send | ( | rtems_id | id, |
rtems_event_set | event_in | ||
) |
Sends the event set to the task.
id | is the identifier of the target task to receive the event set. |
event_in | is the event set to send. |
This directive sends the event set, event_in
, to the target task identified by id
. Based upon the state of the target task, one of the following situations applies:
RTEMS_SUCCESSFUL | The requested operation was successful. |
RTEMS_INVALID_ID | There was no task associated with the identifier specified by id . |
Events can be sent by tasks or an ISR.
Specifying RTEMS_SELF for id
results in the event set being sent to the calling task.
The event set to send shall be built by a bitwise or of the desired events. The set of valid events is RTEMS_EVENT_0 through RTEMS_EVENT_31. If an event is not explicitly specified in the set, then it is not present.
Identical events sent to a task are not queued. In other words, the second, and subsequent, posting of an event to a task before it can perform an rtems_event_receive() has no effect.
The calling task will be preempted if it has preemption enabled and a higher priority task is unblocked as the result of this directive.
Sending an event set to a global task which does not reside on the local node will generate a request telling the remote node to send the event set to the appropriate task.
The following constraints apply to this directive: