38#ifndef EM_QUEUE_GROUP_H_
39#define EM_QUEUE_GROUP_H_
58#define invalid_qgrp(queue_group) \
59 ((unsigned int)qgrp_hdl2idx((queue_group)) >= EM_MAX_QUEUE_GROUPS)
71 em_queue_group_t queue_group);
74 em_queue_group_t requested_queue_group);
89unsigned int queue_group_count(
void);
131qgrp_hdl2idx(
const em_queue_group_t queue_group)
133 return (
int)((uintptr_t)queue_group - 1);
139static inline em_queue_group_t
140qgrp_idx2hdl(
const int queue_group_idx)
142 return (em_queue_group_t)(uintptr_t)(queue_group_idx + 1);
149queue_group_elem_get(em_queue_group_t queue_group)
151 const int qgrp_idx = qgrp_hdl2idx(queue_group);
157 qgrp_elem = &
em_shm->queue_group_tbl.queue_group_elem[qgrp_idx];
172core_queue_grp_name(
int core,
char qgrp_name[],
size_t len)
177 if (unlikely(maxlen == 0))
181 snprintf(qgrp_name, maxlen,
"%s%d",
183 qgrp_name[maxlen - 1] =
'\0';
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)
void queue_group_join_all(void)
The calling core joins all available queue groups.
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_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_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_leave_all(bool flush_orphan_qgrps)
The calling core leaves all queue groups it is part of.
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....
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_check_mask(const em_core_mask_t *mask)
Check that only running EM cores are set in mask.
em_status_t queue_group_init(queue_group_tbl_t *const queue_group_tbl, queue_group_pool_t *const queue_group_pool)
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.
#define EM_MAX_QUEUE_GROUPS
#define EM_QUEUE_GROUP_NAME_LEN
#define EM_QUEUE_GROUP_CORE_BASE_NAME
objpool_elem_t queue_group_pool_elem