EM-ODP  3.7.0
Event Machine on ODP
em_queue_group.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define invalid_qgrp(queue_group)   ((unsigned int)qgrp_hdl2idx((queue_group)) >= EM_MAX_QUEUE_GROUPS)
 

Functions

em_status_t queue_group_init (queue_group_tbl_t *const queue_group_tbl, queue_group_pool_t *const queue_group_pool)
 
em_status_t queue_group_init_local (void)
 
void queue_group_join_all (void)
 The calling core joins all available queue groups. More...
 
em_queue_group_t queue_group_create (const char *name, const em_core_mask_t *mask, int num_notif, const em_notif_t notif_tbl[], em_queue_group_t queue_group)
 
em_queue_group_t queue_group_create_sync (const char *name, const em_core_mask_t *mask, em_queue_group_t requested_queue_group)
 
em_status_t queue_group_modify (queue_group_elem_t *const qgrp_elem, const em_core_mask_t *new_mask, int num_notif, const em_notif_t notif_tbl[], bool is_delete)
 
em_status_t queue_group_modify_sync (queue_group_elem_t *const qgrp_elem, const em_core_mask_t *new_mask, bool is_delete)
 
void queue_group_add_queue_list (queue_group_elem_t *const queue_group_elem, queue_elem_t *const queue_elem)
 
void queue_group_rem_queue_list (queue_group_elem_t *const queue_group_elem, queue_elem_t *const queue_elem)
 
unsigned int queue_group_count (void)
 
em_status_t queue_group_check_mask (const em_core_mask_t *mask)
 Check that only running EM cores are set in mask. More...
 
void queue_group_info_print_all (void)
 Print EM queue group info.
 
void queue_group_queues_print (em_queue_group_t qgrp)
 Print info about all queues belonging to the given queue group.
 
void i_event__qgrp_add_core_req (const internal_event_t *i_ev)
 EM internal event handler, add core to an EM queue group. (see em_internal_event.c&h) More...
 
void i_event__qgrp_rem_core_req (const internal_event_t *i_ev)
 EM internal event handler, remove core from an EM queue group. (see em_internal_event.c&h) More...
 

Detailed Description

EM internal queue group functions

Definition in file em_queue_group.h.

Function Documentation

◆ i_event__qgrp_add_core_req()

void i_event__qgrp_add_core_req ( const internal_event_t i_ev)

EM internal event handler, add core to an EM queue group. (see em_internal_event.c&h)

Handle the internal event requesting to add the core to an ODP schedule group that is related to an EM queue group.

Definition at line 1207 of file em_queue_group.c.

◆ i_event__qgrp_rem_core_req()

void i_event__qgrp_rem_core_req ( const internal_event_t i_ev)

EM internal event handler, remove core from an EM queue group. (see em_internal_event.c&h)

Handle the internal event requesting to remove the core from an ODP schedule group that is related to an EM queue group.

Definition at line 1220 of file em_queue_group.c.

◆ queue_group_check_mask()

em_status_t queue_group_check_mask ( const em_core_mask_t mask)

Check that only running EM cores are set in mask.

Parameters
maskQueue group core mask
Returns
EM_OK if mask is valid

Definition at line 610 of file em_queue_group.c.

◆ queue_group_create()

em_queue_group_t queue_group_create ( const char *  name,
const em_core_mask_t mask,
int  num_notif,
const em_notif_t  notif_tbl[],
em_queue_group_t  requested_queue_group 
)

Allow creating a queue group with a specific handle if requested and available.

Definition at line 583 of file em_queue_group.c.

◆ queue_group_create_sync()

em_queue_group_t queue_group_create_sync ( const char *  name,
const em_core_mask_t mask,
em_queue_group_t  requested_queue_group 
)

Allow creating a queue group synchronously with a specific handle if requested and available. No need for sync blocking when creating a new queue group.

Definition at line 598 of file em_queue_group.c.

◆ queue_group_init()

em_status_t queue_group_init ( queue_group_tbl_t *const  queue_group_tbl,
queue_group_pool_t *const  queue_group_pool 
)

Queue group inits done at global init (once at startup on one core)

Definition at line 122 of file em_queue_group.c.

◆ queue_group_join_all()

void queue_group_join_all ( void  )

The calling core joins all available queue groups.

Main use case for em_term(): to be able to flush the scheduler with only the last EM-core running we need to modify all queue groups to include this last core in the queue groups' core masks

Definition at line 370 of file em_queue_group.c.

◆ queue_group_modify()

em_status_t queue_group_modify ( queue_group_elem_t *const  qgrp_elem,
const em_core_mask_t new_mask,
int  num_notif,
const em_notif_t  notif_tbl[],
bool  is_delete 
)

Called by em_queue_group_modify with flag is_delete=0 and by em_queue_group_delete() with flag is_delete=1

Parameters
qgrp_elemQueue group element
new_maskNew core mask
num_notifNumber of entries in notif_tbl (0 for no notification)
notif_tblArray of notifications to send as the operation completes
is_deleteIs this modify triggered by em_queue_group_delete()?

Definition at line 942 of file em_queue_group.c.

◆ queue_group_modify_sync()

em_status_t queue_group_modify_sync ( queue_group_elem_t *const  qgrp_elem,
const em_core_mask_t new_mask,
bool  is_delete 
)

Called by em_queue_group_modify_sync with flag is_delete=0 and by em_queue_group_delete_sync() with flag is_delete=1

Parameters
qgrp_elemQueue group element
new_maskNew core mask
is_deleteIs this modify triggered by em_queue_group_delete_sync()?

Definition at line 1034 of file em_queue_group.c.