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

#include <em_queue_types.h>

Collaboration diagram for queue_elem_t:

Data Fields

uint16_t valid_check
 
queue_elem_flags_t flags
 
queue_state_t state
 
uint8_t priority
 
uint8_t type
 
uint16_t max_events
 
uint16_t eo
 
uint32_t queue
 
odp_queue_t odp_queue
 
void * context
 
union { 
 
   em_receive_func_t   receive_func 
 
   em_receive_multi_func_t   receive_multi_func 
 
};  
 
void * eo_ctx
 
q_elem_atomic_group_t agrp
 
union { 
 
   q_elem_aggr_parent_t   aggr_parent 
 
   q_elem_aggr_t   aggr 
 
   q_elem_output_t   output 
 
};  
 
eo_elem_teo_elem
 
em_queue_group_t queue_group
 
list_node_t eo_queue_node
 
list_node_t qgrp_node
 
objpool_elem_t queue_pool_elem
 
uint8_t end_data [0]
 
void *end[0] ENV_CACHE_LINE_ALIGNED
 

Detailed Description

EM queue element

Definition at line 236 of file em_queue_types.h.

Field Documentation

◆ [union]

union { ... } queue_elem_t

Type-specific queue data (union).

Only one variant is active, determined by the queue type:

  • aggr_parent: scheduled or unscheduled queue with child aggregator queues, only used when aggregators have been configured and set up.
  • aggr: EM_QUEUE_TYPE_AGGR (aggregator child queue)
  • output: EM_QUEUE_TYPE_OUTPUT

◆ aggr

q_elem_aggr_t queue_elem_t::aggr

Definition at line 306 of file em_queue_types.h.

◆ aggr_parent

q_elem_aggr_parent_t queue_elem_t::aggr_parent

Definition at line 305 of file em_queue_types.h.

◆ agrp

q_elem_atomic_group_t queue_elem_t::agrp

Atomic group specific data. Only used if the queue belongs to an atomic group. Cannot be placed in the union below (with the other q_elem_*_t's) since a queue might both belong to an atomic group and have aggregator child queues (i.e. .agrp and .aggr_parent might be simultaneously in use).

Definition at line 293 of file em_queue_types.h.

◆ context

void* queue_elem_t::context

User defined queue context (can be NULL)

Definition at line 274 of file em_queue_types.h.

◆ end_data

uint8_t queue_elem_t::end_data[0]

End of queue element data, for offsetof(queue_elem_t, end_data)

Definition at line 328 of file em_queue_types.h.

◆ ENV_CACHE_LINE_ALIGNED

void* end [0] queue_elem_t::ENV_CACHE_LINE_ALIGNED

Guarantee that size is a multiple of cache line size

Definition at line 335 of file em_queue_types.h.

◆ eo

uint16_t queue_elem_t::eo

EM EO that this queue belongs to

Definition at line 265 of file em_queue_types.h.

◆ eo_ctx

void* queue_elem_t::eo_ctx

Copy of the user defined eo context (or NULL) for performance

Definition at line 284 of file em_queue_types.h.

◆ eo_elem

eo_elem_t* queue_elem_t::eo_elem

Associated eo element

Definition at line 311 of file em_queue_types.h.

◆ eo_queue_node

list_node_t queue_elem_t::eo_queue_node

List node for linking queue elems belonging to an EO

Definition at line 317 of file em_queue_types.h.

◆ flags

queue_elem_flags_t queue_elem_t::flags

Queue flags

Definition at line 250 of file em_queue_types.h.

◆ max_events

uint16_t queue_elem_t::max_events

Max number of events passed to the EO's multi-event receive function

Definition at line 262 of file em_queue_types.h.

◆ odp_queue

odp_queue_t queue_elem_t::odp_queue

Associated ODP queue handle

Definition at line 271 of file em_queue_types.h.

◆ output

q_elem_output_t queue_elem_t::output

Definition at line 307 of file em_queue_types.h.

◆ priority

uint8_t queue_elem_t::priority

Queue priority

Definition at line 256 of file em_queue_types.h.

◆ qgrp_node

list_node_t queue_elem_t::qgrp_node

List node for linking queue elems belonging to a queue group

Definition at line 319 of file em_queue_types.h.

◆ queue

uint32_t queue_elem_t::queue

Queue handle

Definition at line 268 of file em_queue_types.h.

◆ queue_group

em_queue_group_t queue_elem_t::queue_group

Queue group handle of this queue

Definition at line 314 of file em_queue_types.h.

◆ queue_pool_elem

objpool_elem_t queue_elem_t::queue_pool_elem

Queue pool elem for linking free queues for queue_alloc()

Definition at line 322 of file em_queue_types.h.

◆ receive_func

em_receive_func_t queue_elem_t::receive_func

Copy of the event receive function for better performance

Definition at line 278 of file em_queue_types.h.

◆ receive_multi_func

em_receive_multi_func_t queue_elem_t::receive_multi_func

Copy of the multi-event receive function for better performance

Definition at line 280 of file em_queue_types.h.

◆ state

queue_state_t queue_elem_t::state

Queue state

Definition at line 253 of file em_queue_types.h.

◆ type

uint8_t queue_elem_t::type

Atomic, parallel, ordered, unscheduled, local, output, aggregator

Definition at line 259 of file em_queue_types.h.

◆ valid_check

uint16_t queue_elem_t::valid_check

Check that contents is an EM queue elem.

EM will verify that the ODP queue context actually points to an EM queue elem and not to something else: queue_elem_t *q_elem = odp_queue_context(odp_queue); if (!q_elem || q_elem->valid_check != QUEUE_ELEM_VALID) EM_ERROR(...); Keep first.

Definition at line 247 of file em_queue_types.h.


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