|
ChibiOS/NIL
4.0.1
|

Macros | |
| #define | ALL_EVENTS ((eventmask_t)-1) |
| All events allowed mask. More... | |
| #define | EVENT_MASK(eid) ((eventmask_t)1 << (eventmask_t)(eid)) |
| Returns an event mask from an event identifier. More... | |
| #define | _EVENTSOURCE_DATA(name) {(event_listener_t *)(&name)} |
| Data part of a static event source initializer. More... | |
| #define | EVENTSOURCE_DECL(name) event_source_t name = _EVENTSOURCE_DATA(name) |
| Static event source initializer. More... | |
Macro Functions | |
| #define | chEvtObjectInit(esp) |
| Initializes an Event Source. More... | |
| #define | chEvtRegisterMask(esp, elp, events) chEvtRegisterMaskWithFlags(esp, elp, events, (eventflags_t)-1) |
| Registers an Event Listener on an Event Source. More... | |
| #define | chEvtRegister(esp, elp, event) chEvtRegisterMask(esp, elp, EVENT_MASK(event)) |
| Registers an Event Listener on an Event Source. More... | |
| #define | chEvtIsListeningI(esp) (bool)((esp) != (event_source_t *)(esp)->next) |
Verifies if there is at least one event_listener_t registered. More... | |
| #define | chEvtBroadcast(esp) chEvtBroadcastFlags(esp, (eventflags_t)0) |
| Signals all the Event Listeners registered on the specified Event Source. More... | |
| #define | chEvtBroadcastI(esp) chEvtBroadcastFlagsI(esp, (eventflags_t)0) |
| Signals all the Event Listeners registered on the specified Event Source. More... | |
| #define | chEvtAddEventsI(events) (nil.current->epmask |= events) |
Adds (OR) a set of events to the current thread, this is much faster than using chEvtBroadcast() or chEvtSignal(). More... | |
| #define | chEvtGetEventsX(void) (nil.current->epmask) |
| Returns the events mask. More... | |
| #define | chEvtWaitOne(events) chEvtWaitOneTimeout(events, TIME_INFINITE) |
| Waits for exactly one of the specified events. More... | |
| #define | chEvtWaitAny(events) chEvtWaitAnyTimeout(events, TIME_INFINITE) |
| Waits for any of the specified events. More... | |
| #define | chEvtWaitAll(events) chEvtWaitAllTimeout(events, TIME_INFINITE) |
| Waits for all the specified events. More... | |
Typedefs | |
| typedef struct event_source | event_source_t |
| Event Source structure. More... | |
| typedef void(* | evhandler_t) (eventid_t id) |
| Event Handler callback function. More... | |
Data Structures | |
| struct | event_listener |
| Event Listener structure. More... | |
| struct | event_source |
| Event Source structure. More... | |
Functions | |
| void | chEvtRegisterMaskWithFlags (event_source_t *esp, event_listener_t *elp, eventmask_t events, eventflags_t wflags) |
| Registers an Event Listener on an Event Source. More... | |
| void | chEvtUnregister (event_source_t *esp, event_listener_t *elp) |
| Unregisters an Event Listener from its Event Source. More... | |
| eventmask_t | chEvtGetAndClearEventsI (eventmask_t events) |
| Clears the pending events specified in the events mask. More... | |
| eventmask_t | chEvtGetAndClearEvents (eventmask_t events) |
| Clears the pending events specified in the events mask. More... | |
| eventmask_t | chEvtAddEvents (eventmask_t events) |
Adds (OR) a set of events to the current thread, this is much faster than using chEvtBroadcast() or chEvtSignal(). More... | |
| void | chEvtBroadcastFlagsI (event_source_t *esp, eventflags_t flags) |
| Signals all the Event Listeners registered on the specified Event Source. More... | |
| eventflags_t | chEvtGetAndClearFlags (event_listener_t *elp) |
Returns the flags associated to an event_listener_t. More... | |
| void | chEvtSignal (thread_t *tp, eventmask_t events) |
Adds a set of event flags directly to the specified thread_t. More... | |
| void | chEvtSignalI (thread_t *tp, eventmask_t events) |
Adds a set of event flags directly to the specified thread_t. More... | |
| void | chEvtBroadcastFlags (event_source_t *esp, eventflags_t flags) |
| Signals all the Event Listeners registered on the specified Event Source. More... | |
| eventflags_t | chEvtGetAndClearFlagsI (event_listener_t *elp) |
Returns the unmasked flags associated to an event_listener_t. More... | |
| void | chEvtDispatch (const evhandler_t *handlers, eventmask_t events) |
| Invokes the event handlers associated to an event flags mask. More... | |
| eventmask_t | chEvtWaitOneTimeout (eventmask_t events, sysinterval_t timeout) |
| Waits for exactly one of the specified events. More... | |
| eventmask_t | chEvtWaitAnyTimeout (eventmask_t mask, sysinterval_t timeout) |
| Waits for any of the specified events. More... | |
| eventmask_t | chEvtWaitAllTimeout (eventmask_t mask, sysinterval_t timeout) |
| Waits for all the specified events. More... | |
| #define ALL_EVENTS ((eventmask_t)-1) |
| #define EVENT_MASK | ( | eid | ) | ((eventmask_t)1 << (eventmask_t)(eid)) |
| #define _EVENTSOURCE_DATA | ( | name | ) | {(event_listener_t *)(&name)} |
| #define EVENTSOURCE_DECL | ( | name | ) | event_source_t name = _EVENTSOURCE_DATA(name) |
| #define chEvtObjectInit | ( | esp | ) |
Initializes an Event Source.
event_source_t structure.| [in] | esp | pointer to the event_source_t structure |
| #define chEvtRegisterMask | ( | esp, | |
| elp, | |||
| events | |||
| ) | chEvtRegisterMaskWithFlags(esp, elp, events, (eventflags_t)-1) |
Registers an Event Listener on an Event Source.
Once a thread has registered as listener on an event source it will be notified of all events broadcasted there.
| [in] | esp | pointer to the event_source_t structure |
| [out] | elp | pointer to the event_listener_t structure |
| [in] | events | the mask of events to be ORed to the thread when the event source is broadcasted |
| #define chEvtRegister | ( | esp, | |
| elp, | |||
| event | |||
| ) | chEvtRegisterMask(esp, elp, EVENT_MASK(event)) |
Registers an Event Listener on an Event Source.
| [in] | esp | pointer to the event_source_t structure |
| [out] | elp | pointer to the event_listener_t structure |
| [in] | event | numeric identifier assigned to the Event Listener. The value must range between zero and the size, in bit, of the eventmask_t type minus one. |
| #define chEvtIsListeningI | ( | esp | ) | (bool)((esp) != (event_source_t *)(esp)->next) |
Verifies if there is at least one event_listener_t registered.
| [in] | esp | pointer to the event_source_t structure |
| #define chEvtBroadcast | ( | esp | ) | chEvtBroadcastFlags(esp, (eventflags_t)0) |
| #define chEvtBroadcastI | ( | esp | ) | chEvtBroadcastFlagsI(esp, (eventflags_t)0) |
Signals all the Event Listeners registered on the specified Event Source.
| [in] | esp | pointer to the event_source_t structure |
| #define chEvtAddEventsI | ( | events | ) | (nil.current->epmask |= events) |
Adds (OR) a set of events to the current thread, this is much faster than using chEvtBroadcast() or chEvtSignal().
| [in] | events | the events to be added |
| #define chEvtGetEventsX | ( | void | ) | (nil.current->epmask) |
| #define chEvtWaitOne | ( | events | ) | chEvtWaitOneTimeout(events, TIME_INFINITE) |
Waits for exactly one of the specified events.
The function waits for one event among those specified in events to become pending then the event is cleared and returned.
| [in] | events | events that the function should wait for, ALL_EVENTS enables all the events |
| 0 | if the operation has timed out. |
| #define chEvtWaitAny | ( | events | ) | chEvtWaitAnyTimeout(events, TIME_INFINITE) |
Waits for any of the specified events.
The function waits for any event among those specified in mask to become pending then the events are cleared and returned.
| [in] | events | events that the function should wait for, ALL_EVENTS enables all the events |
| 0 | if the operation has timed out. |
| #define chEvtWaitAll | ( | events | ) | chEvtWaitAllTimeout(events, TIME_INFINITE) |
Waits for all the specified events.
The function waits for all the events specified in mask to become pending then the events are cleared and returned.
| [in] | events | events that the function should wait for, ALL_EVENTS enables all the events |
| 0 | if the operation has timed out. |
| typedef struct event_source event_source_t |
Event Source structure.
| typedef void(* evhandler_t) (eventid_t id) |
| void chEvtRegisterMaskWithFlags | ( | event_source_t * | esp, |
| event_listener_t * | elp, | ||
| eventmask_t | events, | ||
| eventflags_t | wflags | ||
| ) |
Registers an Event Listener on an Event Source.
Once a thread has registered as listener on an event source it will be notified of all events broadcasted there.
| [in] | esp | pointer to the event_source_t structure |
| [in] | elp | pointer to the event_listener_t structure |
| [in] | events | events to be ORed to the thread when the event source is broadcasted |
| [in] | wflags | mask of flags the listening thread is interested in |
Definition at line 71 of file chevt.c.
References chDbgCheck, chSysLock, chSysUnlock, chThdGetSelfX, event_listener::events, event_listener::flags, event_listener::listener, event_listener::next, event_source::next, and event_listener::wflags.
| void chEvtUnregister | ( | event_source_t * | esp, |
| event_listener_t * | elp | ||
| ) |
Unregisters an Event Listener from its Event Source.
| [in] | esp | pointer to the event_source_t structure |
| [in] | elp | pointer to the event_listener_t structure |
Definition at line 101 of file chevt.c.
References chDbgCheck, chSysLock, chSysUnlock, and event_listener::next.
| eventmask_t chEvtGetAndClearEventsI | ( | eventmask_t | events | ) |
Clears the pending events specified in the events mask.
| [in] | events | the events to be cleared |
Definition at line 130 of file chevt.c.
References chThdGetSelfX.
Referenced by chEvtGetAndClearEvents().
| eventmask_t chEvtGetAndClearEvents | ( | eventmask_t | events | ) |
Clears the pending events specified in the events mask.
| [in] | events | the events to be cleared |
Definition at line 147 of file chevt.c.
References chEvtGetAndClearEventsI(), chSysLock, and chSysUnlock.

| eventmask_t chEvtAddEvents | ( | eventmask_t | events | ) |
Adds (OR) a set of events to the current thread, this is much faster than using chEvtBroadcast() or chEvtSignal().
| [in] | events | the events to be added |
Definition at line 166 of file chevt.c.
References chEvtAddEventsI, chSysLock, and chSysUnlock.
| void chEvtBroadcastFlagsI | ( | event_source_t * | esp, |
| eventflags_t | flags | ||
| ) |
Signals all the Event Listeners registered on the specified Event Source.
This function variants ORs the specified event flags to all the threads registered on the event_source_t in addition to the event flags specified by the threads themselves in the event_listener_t objects.
| [in] | esp | pointer to the event_source_t structure |
| [in] | flags | the flags set to be added to the listener flags mask |
Definition at line 193 of file chevt.c.
References chDbgCheck, chDbgCheckClassI(), chEvtSignalI(), event_listener::events, event_listener::flags, event_listener::listener, event_listener::next, event_source::next, and event_listener::wflags.
Referenced by chEvtBroadcastFlags().

| eventflags_t chEvtGetAndClearFlags | ( | event_listener_t * | elp | ) |
Returns the flags associated to an event_listener_t.
The flags are returned and the event_listener_t flags mask is cleared.
| [in] | elp | pointer to the event_listener_t structure |
Definition at line 225 of file chevt.c.
References chSysLock, chSysUnlock, event_listener::flags, and event_listener::wflags.
| void chEvtSignal | ( | thread_t * | tp, |
| eventmask_t | events | ||
| ) |
Adds a set of event flags directly to the specified thread_t.
| [in] | tp | the thread to be signaled |
| [in] | events | the event flags set to be ORed |
Definition at line 244 of file chevt.c.
References chEvtSignalI(), chSchRescheduleS(), chSysLock, and chSysUnlock.

| void chEvtSignalI | ( | thread_t * | tp, |
| eventmask_t | events | ||
| ) |
Adds a set of event flags directly to the specified thread_t.
| [in] | tp | the thread to be signaled |
| [in] | events | the event flags set to be ORed |
Definition at line 264 of file chevt.c.
References chDbgCheck, chDbgCheckClassI(), and nil_thread::epmask.
Referenced by chEvtBroadcastFlagsI(), and chEvtSignal().

| void chEvtBroadcastFlags | ( | event_source_t * | esp, |
| eventflags_t | flags | ||
| ) |
Signals all the Event Listeners registered on the specified Event Source.
This function variants ORs the specified event flags to all the threads registered on the event_source_t in addition to the event flags specified by the threads themselves in the event_listener_t objects.
| [in] | esp | pointer to the event_source_t structure |
| [in] | flags | the flags set to be added to the listener flags mask |
Definition at line 291 of file chevt.c.
References chEvtBroadcastFlagsI(), chSchRescheduleS(), chSysLock, and chSysUnlock.

| eventflags_t chEvtGetAndClearFlagsI | ( | event_listener_t * | elp | ) |
Returns the unmasked flags associated to an event_listener_t.
The flags are returned and the event_listener_t flags mask is cleared.
| [in] | elp | pointer to the event_listener_t structure |
Definition at line 310 of file chevt.c.
References event_listener::flags, and event_listener::wflags.
| void chEvtDispatch | ( | const evhandler_t * | handlers, |
| eventmask_t | events | ||
| ) |
Invokes the event handlers associated to an event flags mask.
| [in] | events | mask of events to be dispatched |
| [in] | handlers | an array of evhandler_t. The array must have size equal to the number of bits in eventmask_t. |
Definition at line 328 of file chevt.c.
References chDbgAssert, chDbgCheck, and EVENT_MASK.
| eventmask_t chEvtWaitOneTimeout | ( | eventmask_t | events, |
| sysinterval_t | timeout | ||
| ) |
Waits for exactly one of the specified events.
The function waits for one event among those specified in events to become pending then the event is cleared and returned.
| [in] | events | events that the function should wait for, ALL_EVENTS enables all the events |
| [in] | timeout | the number of ticks before the operation timeouts, the following special values are allowed:
|
| 0 | if the operation has timed out. |
Definition at line 366 of file chevt.c.
References chSchGoSleepTimeoutS(), chSysLock, chSysUnlock, nil_system::current, nil_thread::epmask, nil_thread::ewmask, MSG_OK, nil, NIL_STATE_WTOREVT, and TIME_IMMEDIATE.

| eventmask_t chEvtWaitAnyTimeout | ( | eventmask_t | mask, |
| sysinterval_t | timeout | ||
| ) |
Waits for any of the specified events.
The function waits for any event among those specified in mask to become pending then the events are cleared and returned.
| [in] | mask | mask of the event flags that the function should wait for, ALL_EVENTS enables all the events |
| [in] | timeout | the number of ticks before the operation timeouts, the following special values are allowed:
|
| 0 | if the operation has timed out. |
Definition at line 411 of file chevt.c.
References chSchGoSleepTimeoutS(), chSysLock, chSysUnlock, nil_system::current, nil_thread::epmask, nil_thread::ewmask, MSG_OK, nil, NIL_STATE_WTOREVT, and TIME_IMMEDIATE.

| eventmask_t chEvtWaitAllTimeout | ( | eventmask_t | mask, |
| sysinterval_t | timeout | ||
| ) |
Waits for all the specified events.
The function waits for all the events specified in mask to become pending then the events are cleared and returned.
| [in] | mask | mask of the event flags that the function should wait for, ALL_EVENTS enables all the events |
| [in] | timeout | the number of ticks before the operation timeouts, the following special values are allowed:
|
| 0 | if the operation has timed out. |
Definition at line 453 of file chevt.c.
References chSchGoSleepTimeoutS(), chSysLock, chSysUnlock, nil_system::current, nil_thread::epmask, nil_thread::ewmask, MSG_OK, nil, NIL_STATE_WTANDEVT, and TIME_IMMEDIATE.
