EM-ODP 4.4.0
Event Machine on ODP
Loading...
Searching...
No Matches
event_hdr Struct Reference

#include <em_event_types.h>

Collaboration diagram for event_hdr:

Public Member Functions

void *end[0] ODP_ALIGNED (8)
 

Data Fields

evstate_cnt_t state_cnt
 
ev_hdr_state_t state
 
union { 
 
   uint8_t   all 
 
   struct { 
 
      uint8_t   refs_used: 1 
 
      uint8_t   tmo_type: 2 
 
      uint8_t   vectype_set: 1 
 
      uint8_t   aggr_sent: 1 
 
      uint8_t   unused: 3 
 
   }  
 
flags 
 
uint8_t align_offset
 
em_event_type_t event_type
 
em_event_t event
 
uint32_t event_size
 
uint32_t egrp_gen
 
em_event_group_t egrp
 
em_tmo_t tmo
 
ev_hdr_user_area_t user_area
 
em_event_type_t vector_type
 
uint8_t end_hdr_data [0]
 

Detailed Description

Event header

SW & I/O originated events.

Definition at line 194 of file em_event_types.h.

Field Documentation

◆ aggr_sent

uint8_t event_hdr::aggr_sent

Indicate that the event is enqueued by the user to an EM_QUEUE_TYPE_AGGR queue. Allows dispatch to apply the missing em2usr ESV transition for inner events of aggregation-produced vectors when received as vector. Cleared after the transition.

Definition at line 248 of file em_event_types.h.

◆ align_offset

uint8_t event_hdr::align_offset

Payload alloc alignment offset. Value is copied from pool_elem->align_offset for easy access.

Definition at line 258 of file em_event_types.h.

◆ all

uint8_t event_hdr::all

Definition at line 223 of file em_event_types.h.

◆ egrp

em_event_group_t event_hdr::egrp

Event Group handle (cannot be used by event references)

Examples
event_group_assign_end.c.

Definition at line 287 of file em_event_types.h.

◆ egrp_gen

uint32_t event_hdr::egrp_gen

Event group generation

Definition at line 282 of file em_event_types.h.

◆ end_hdr_data

uint8_t event_hdr::end_hdr_data[0]

End of event header data, for offsetof(event_hdr_t, end_hdr_data)

Definition at line 315 of file em_event_types.h.

◆ event

em_event_t event_hdr::event

Event handle (this event)

Definition at line 268 of file em_event_types.h.

◆ event_size

uint32_t event_hdr::event_size

Event size

buf: current size pkt & vec: original alloc size (otherwise not used, odp size used) periodic ring timer tmo (EM_EVENT_TYPE_TIMER_IND): 0

Examples
bench_event.c.

Definition at line 277 of file em_event_types.h.

◆ event_type

em_event_type_t event_hdr::event_type

Event type, contains major and minor parts

Definition at line 263 of file em_event_types.h.

◆ [union]

union { ... } event_hdr::flags

Event flags

◆ refs_used

uint8_t event_hdr::refs_used

Indicate that this event has (or had) references and some of the ESV checks must be omitted (evgen). Will be set for the whole lifetime of the event.

Definition at line 230 of file em_event_types.h.

◆ state

ev_hdr_state_t event_hdr::state

Event State Verification (ESV) state.

Event state, updated on valid state transitions. "Best effort" update, i.e. atomic update not guaranteed in invalid simultaneous state-updates.

Contains the previously known good state and will be printed when detecting an invalid state transition.

Examples
timer_test.c, timer_test_periodic.c, and timer_test_ring.c.

Definition at line 217 of file em_event_types.h.

◆ state_cnt

evstate_cnt_t event_hdr::state_cnt

Event State Verification (ESV) counters.

Together the evstate_cnt_t counters (evgen, ref_cnt and send_cnt) can be used to detect invalid states and operations on the event, e.g.: double-free, double-send, send-after-free, free-after-send, usage-after-output, usage-after-timer-tmo-set/ack/cancel/delete etc.

Definition at line 205 of file em_event_types.h.

◆ tmo

em_tmo_t event_hdr::tmo

Holds the tmo handle in case event is used as timeout indication. Only valid if flags.tmo_type is not EM_TMO_TYPE_NONE (0). Initialized only when used as timeout indication by timer code.

Examples
timer_test.c.

Definition at line 294 of file em_event_types.h.

◆ tmo_type

uint8_t event_hdr::tmo_type

Indicate that this event is used as tmo indication. See em_tmo_type_t. Initially 0 = EM_TMO_TYPE_NONE

Definition at line 235 of file em_event_types.h.

◆ unused

uint8_t event_hdr::unused

currently unused bits

Definition at line 250 of file em_event_types.h.

◆ user_area

ev_hdr_user_area_t event_hdr::user_area

Event User Area metadata

Definition at line 299 of file em_event_types.h.

◆ vector_type

em_event_type_t event_hdr::vector_type

Event type of the events in the vector. Used by events of (major) type EM_EVENT_TYPE_VECTOR and specifies the type of all events in the vector's event table (em_event_t ev_tbl[]). Only valid if flags.vectype_set = 1, otherwise the vector type is considered not set by EM yet. Can also be EM_EVENT_TYPE_ANY, see em_event_type_t.

Definition at line 309 of file em_event_types.h.

◆ vectype_set

uint8_t event_hdr::vectype_set

Indicate that the .vector_type field is set by EM and contains a valid value.

Definition at line 240 of file em_event_types.h.


The documentation for this struct was generated from the following file: