![]() |
EM-ODP 4.4.0
Event Machine on ODP
|
#include <stdbool.h>#include <stdint.h>#include <event_machine.h>#include "em_event_types.h"#include "em_mem.h"

Go to the source code of this file.
Macros | |
| #define | EVGEN_INIT ((uint16_t)0x1000) |
| #define | EVGEN_MAX ((uint16_t)UINT16_MAX - 0x1000) |
| #define | SEND_CNT_INIT ((uint16_t)0x8000) /* = 0 + 'offset' */ |
| #define | REF_CNT_INIT ((uint16_t)0x8000) /* = 0 + 'offset' */ |
Enumerations | |
| enum | esv_apiop_t { EVSTATE__UNDEF = 0 , EVSTATE__PREALLOC , EVSTATE__ALLOC , EVSTATE__ALLOC_MULTI , EVSTATE__EVENT_CLONE , EVSTATE__EVENT_REF , EVSTATE__FREE , EVSTATE__FREE_MULTI , EVSTATE__EVENT_VECTOR_FREE , EVSTATE__INIT , EVSTATE__INIT_MULTI , EVSTATE__INIT_EXTEV , EVSTATE__INIT_EXTEV_MULTI , EVSTATE__UPDATE_EXTEV , EVSTATE__SEND , EVSTATE__SEND__FAIL , EVSTATE__SEND_EGRP , EVSTATE__SEND_EGRP__FAIL , EVSTATE__SEND_MULTI , EVSTATE__SEND_MULTI__FAIL , EVSTATE__SEND_EGRP_MULTI , EVSTATE__SEND_EGRP_MULTI__FAIL , EVSTATE__EO_START_SEND_BUFFERED , EVSTATE__MARK_SEND , EVSTATE__UNMARK_SEND , EVSTATE__MARK_FREE , EVSTATE__UNMARK_FREE , EVSTATE__MARK_FREE_MULTI , EVSTATE__UNMARK_FREE_MULTI , EVSTATE__DISPATCH , EVSTATE__DISPATCH_MULTI , EVSTATE__DISPATCH_AGGR , EVSTATE__DISPATCH_SCHED__FAIL , EVSTATE__DISPATCH_LOCAL__FAIL , EVSTATE__DEQUEUE , EVSTATE__DEQUEUE_MULTI , EVSTATE__TMO_SET_ABS , EVSTATE__TMO_SET_ABS__FAIL , EVSTATE__TMO_SET_REL , EVSTATE__TMO_SET_REL__FAIL , EVSTATE__TMO_SET_PERIODIC , EVSTATE__TMO_SET_PERIODIC__FAIL , EVSTATE__TMO_CANCEL , EVSTATE__TMO_ACK , EVSTATE__TMO_ACK__NOSKIP , EVSTATE__TMO_ACK__FAIL , EVSTATE__TMO_CREATE , EVSTATE__TMO_DELETE , EVSTATE__AG_DELETE , EVSTATE__TERM_CORE__QUEUE_LOCAL , EVSTATE__TERM , EVSTATE__LAST } |
| ESV API operation IDs. More... | |
Functions | |
| COMPILE_TIME_ASSERT (EVSTATE__LAST<=UINT8_MAX, EVSTATE__LAST__TOO_BIG) | |
| em_status_t | esv_init (void) |
| em_event_t | evstate_prealloc (const em_event_t event, event_hdr_t *const ev_hdr) |
| em_event_t | evstate_alloc_tmo (const em_event_t event, event_hdr_t *const ev_hdr) |
| em_event_t | evstate_alloc (const em_event_t event, event_hdr_t *const ev_hdr, const uint16_t api_op) |
| void | evstate_alloc_multi (em_event_t ev_tbl[], event_hdr_t *const ev_hdr_tbl[], const int num) |
| em_event_t | evstate_ref (const em_event_t event, event_hdr_t *const ev_hdr) |
| em_event_t | evstate_init (const em_event_t event, event_hdr_t *const ev_hdr, bool is_extev) |
| void | evstate_init_multi (em_event_t ev_tbl[], event_hdr_t *const ev_hdr_tbl[], const int num, bool is_extev) |
| em_event_t | evstate_update (const em_event_t event, event_hdr_t *const ev_hdr, bool is_extev) |
| void | evstate_free (const em_event_t event, event_hdr_t *const ev_hdr, const uint16_t api_op) |
| void | evstate_free_revert (const em_event_t event, event_hdr_t *const ev_hdr, const uint16_t api_op) |
| void | evstate_free_multi (const em_event_t ev_tbl[], event_hdr_t *const ev_hdr_tbl[], const int num, const uint16_t api_op) |
| void | evstate_free_revert_multi (const em_event_t ev_tbl[], event_hdr_t *const ev_hdr_tbl[], const int num, const uint16_t api_op) |
| em_event_t | evstate_em2usr (const em_event_t event, event_hdr_t *const ev_hdr, const uint16_t api_op) |
| em_event_t | evstate_em2usr_revert (const em_event_t event, event_hdr_t *const ev_hdr, const uint16_t api_op) |
| void | evstate_em2usr_multi (em_event_t ev_tbl[], event_hdr_t *const ev_hdr_tbl[], const int num, const uint16_t api_op) |
| void | evstate_em2usr_revert_multi (em_event_t ev_tbl[], event_hdr_t *const ev_hdr_tbl[], const int num, const uint16_t api_op) |
| void | evstate_usr2em (const em_event_t event, event_hdr_t *const ev_hdr, const uint16_t api_op) |
| void | evstate_usr2em_revert (const em_event_t event, event_hdr_t *const ev_hdr, const uint16_t api_op) |
| void | evstate_usr2em_multi (const em_event_t ev_tbl[], event_hdr_t *const ev_hdr_tbl[], const int num, const uint16_t api_op) |
| void | evstate_usr2em_revert_multi (const em_event_t ev_tbl[], event_hdr_t *const ev_hdr_tbl[], const int num, const uint16_t api_op) |
| void | evstate_unmark_send (const em_event_t event, event_hdr_t *const ev_hdr) |
| void | evstate_unmark_free (const em_event_t event, event_hdr_t *const ev_hdr, const uint16_t api_op) |
| void | evstate_unmark_free_multi (const em_event_t ev_tbl[], event_hdr_t *const ev_hdr_tbl[], const int num, const uint16_t api_op) |
EM event state verification support
Definition in file em_event_state.h.
| #define EVGEN_INIT ((uint16_t)0x1000) |
Init values for the event-state counters.
The counters are 16-bit but are updated as one combined 64-bit atomic var, thus the init values are in the middle of the u16-range to avoid wraparounds when decrementing below '0'. Initial event generation value
Definition at line 120 of file em_event_state.h.
| #define EVGEN_MAX ((uint16_t)UINT16_MAX - 0x1000) |
Max evgen value before resetting to 'EVGEN_INIT' to avoid wrap
Definition at line 122 of file em_event_state.h.
| #define REF_CNT_INIT ((uint16_t)0x8000) /* = 0 + 'offset' */ |
Initial reference count value
Definition at line 126 of file em_event_state.h.
| #define SEND_CNT_INIT ((uint16_t)0x8000) /* = 0 + 'offset' */ |
Initial send count value
Definition at line 124 of file em_event_state.h.
| enum esv_apiop_t |
ESV API operation IDs.
Definition at line 54 of file em_event_state.h.
| em_status_t esv_init | ( | void | ) |
Init ESV (if enabled at compile time), read config options
Definition at line 1259 of file em_event_state.c.
| em_event_t evstate_alloc | ( | const em_event_t | event, |
| event_hdr_t *const | ev_hdr, | ||
| const uint16_t | api_op | ||
| ) |
Set the initial event state during em_alloc() / em_event_clone()
Definition at line 776 of file em_event_state.c.
| void evstate_alloc_multi | ( | em_event_t | ev_tbl[], |
| event_hdr_t *const | ev_hdr_tbl[], | ||
| const int | num | ||
| ) |
Set the initial state of multiple events during em_alloc_multi()
Definition at line 793 of file em_event_state.c.
| em_event_t evstate_alloc_tmo | ( | const em_event_t | event, |
| event_hdr_t *const | ev_hdr | ||
| ) |
Set the initial event state during timeout allocation.
Definition at line 788 of file em_event_state.c.
| em_event_t evstate_em2usr | ( | const em_event_t | event, |
| event_hdr_t *const | ev_hdr, | ||
| const uint16_t | api_op | ||
| ) |
Check & update event state - event passed from EM to user.
em_dispatch(), em_queue_dequeue(), em_tmo_cancel(), em_tmo_delete()
Definition at line 990 of file em_event_state.c.
| void evstate_em2usr_multi | ( | em_event_t | ev_tbl[], |
| event_hdr_t *const | ev_hdr_tbl[], | ||
| const int | num, | ||
| const uint16_t | api_op | ||
| ) |
Check & update the state of multiple events - events passed from EM to user
em_dispatch(), em_queue_dequeue_multi(), em_term()
Definition at line 1014 of file em_event_state.c.
| em_event_t evstate_em2usr_revert | ( | const em_event_t | event, |
| event_hdr_t *const | ev_hdr, | ||
| const uint16_t | api_op | ||
| ) |
Revert EM-to-user event-state update on failed operation.
Definition at line 1002 of file em_event_state.c.
| void evstate_em2usr_revert_multi | ( | em_event_t | ev_tbl[], |
| event_hdr_t *const | ev_hdr_tbl[], | ||
| const int | num, | ||
| const uint16_t | api_op | ||
| ) |
Revert EM-to-user event-state updates on failed operation.
Definition at line 1024 of file em_event_state.c.
| void evstate_free | ( | const em_event_t | event, |
| event_hdr_t *const | ev_hdr, | ||
| const uint16_t | api_op | ||
| ) |
Check & update event state during em_free() or em_event_mark_free()
Definition at line 952 of file em_event_state.c.
| void evstate_free_multi | ( | const em_event_t | ev_tbl[], |
| event_hdr_t *const | ev_hdr_tbl[], | ||
| const int | num, | ||
| const uint16_t | api_op | ||
| ) |
Check & update the state of multiple events during em_free_multi() or em_event_mark_free_multi()
Definition at line 970 of file em_event_state.c.
| void evstate_free_revert | ( | const em_event_t | event, |
| event_hdr_t *const | ev_hdr, | ||
| const uint16_t | api_op | ||
| ) |
Check & update event state during em_event_unmark_free()
Definition at line 961 of file em_event_state.c.
| void evstate_free_revert_multi | ( | const em_event_t | ev_tbl[], |
| event_hdr_t *const | ev_hdr_tbl[], | ||
| const int | num, | ||
| const uint16_t | api_op | ||
| ) |
Check & update event state during em_event_unmark_free_multi()
Definition at line 980 of file em_event_state.c.
| em_event_t evstate_init | ( | const em_event_t | event, |
| event_hdr_t *const | ev_hdr, | ||
| bool | is_extev | ||
| ) |
Set the initial state for an event (e.g. an new odp-event converted into an EM-event)
Definition at line 826 of file em_event_state.c.
| void evstate_init_multi | ( | em_event_t | ev_tbl[], |
| event_hdr_t *const | ev_hdr_tbl[], | ||
| const int | num, | ||
| bool | is_extev | ||
| ) |
Set the initial state for events (e.g. new odp-events converted into EM-events)
Definition at line 835 of file em_event_state.c.
| em_event_t evstate_prealloc | ( | const em_event_t | event, |
| event_hdr_t *const | ev_hdr | ||
| ) |
Set the initial event state during em_pool_create() when preallocating events
Definition at line 771 of file em_event_state.c.
| em_event_t evstate_ref | ( | const em_event_t | event, |
| event_hdr_t *const | ev_hdr | ||
| ) |
Update event state during em_event_ref()
Definition at line 818 of file em_event_state.c.
| void evstate_unmark_free | ( | const em_event_t | event, |
| event_hdr_t *const | ev_hdr, | ||
| const uint16_t | api_op | ||
| ) |
Check & update event state during em_event_unmark_free()
Wrapper function for evstate_free_revert(..., EVSTATE__UNMARK_FREE) with extra error checks.
Definition at line 1144 of file em_event_state.c.
| void evstate_unmark_free_multi | ( | const em_event_t | ev_tbl[], |
| event_hdr_t *const | ev_hdr_tbl[], | ||
| const int | num, | ||
| const uint16_t | api_op | ||
| ) |
Check & update event state for multiple events during em_event_unmark_free_multi()
Wrapper function for evstate_free_revert_multi(..., EVSTATE__UNMARK_FREE_MULTI) with extra error checks.
Definition at line 1160 of file em_event_state.c.
| void evstate_unmark_send | ( | const em_event_t | event, |
| event_hdr_t *const | ev_hdr | ||
| ) |
Check & update event state during em_event_unmark_send()
Wrapper function for evstate_usr2em_revert(..., EVSTATE__UNMARK_SEND) with extra error checks.
Definition at line 1129 of file em_event_state.c.
| em_event_t evstate_update | ( | const em_event_t | event, |
| event_hdr_t *const | ev_hdr, | ||
| bool | is_extev | ||
| ) |
Update the state for external events input into EM. Used when esv.prealloc_pools = true and the input event was allocated externally to EM (e.g. by ODP) but from an EM event-pool.
Definition at line 933 of file em_event_state.c.
| void evstate_usr2em | ( | const em_event_t | event, |
| event_hdr_t *const | ev_hdr, | ||
| const uint16_t | api_op | ||
| ) |
Check & update event state - event passed from the user to EM.
em_send(), em_send_group(), em_tmo_set_abs/rel/periodic(), em_tmo_ack()
Definition at line 1034 of file em_event_state.c.
| void evstate_usr2em_multi | ( | const em_event_t | ev_tbl[], |
| event_hdr_t *const | ev_hdr_tbl[], | ||
| const int | num, | ||
| const uint16_t | api_op | ||
| ) |
Check & update the state of multiple events - events passed from user to EM
em_send_multi(), em_send_group_multi()
Definition at line 1058 of file em_event_state.c.
| void evstate_usr2em_revert | ( | const em_event_t | event, |
| event_hdr_t *const | ev_hdr, | ||
| const uint16_t | api_op | ||
| ) |
Revert user-to-EM event-state update on failed operation.
Definition at line 1046 of file em_event_state.c.
| void evstate_usr2em_revert_multi | ( | const em_event_t | ev_tbl[], |
| event_hdr_t *const | ev_hdr_tbl[], | ||
| const int | num, | ||
| const uint16_t | api_op | ||
| ) |
Revert user-to-EM event-state updates on failed operation.
Definition at line 1068 of file em_event_state.c.