35                  odp_stash_t *
const event_group_stash)
 
   42         odp_stash_param_t stash_param;
 
   43         odp_stash_capability_t stash_capa;
 
   45         if (odp_stash_capability(&stash_capa, ODP_STASH_TYPE_FIFO) != 0)
 
   50                        "Maximum number of event groups(%d) exceeds the maximum\n" 
   51                        "number of object handles(%" PRIu64 
") a stash can hold.\n",
 
   59         odp_stash_param_init(&stash_param);
 
   61         stash_param.type = ODP_STASH_TYPE_FIFO;
 
   62         stash_param.put_mode = ODP_STASH_OP_MT;
 
   63         stash_param.get_mode = ODP_STASH_OP_MT;
 
   65         stash_param.obj_size = 
sizeof(uint32_t);
 
   67         stash = odp_stash_create(
"event_grp", &stash_param);
 
   68         if (stash == ODP_STASH_INVALID)
 
   72                 egrp_elem = &
em_shm->event_group_tbl.egrp_elem[idx];
 
   76                 env_atomic64_set(&egrp_elem->post.atomic, 0);
 
   77                 env_atomic64_set(&egrp_elem->pre.atomic, 0);
 
   80                 if (odp_stash_put_u32(stash, &idx, 1) != 1) {
 
   87         *event_group_stash = stash;
 
   92         for (uint32_t i = 0; i < idx; i++) {
 
   93                 odp_stash_get_u32(stash, &val, 1);
 
   95                 egrp_elem = &
em_shm->event_group_tbl.egrp_elem[i];
 
  101         odp_stash_destroy(stash);
 
  109         odp_stash_t stash = 
em_shm->event_group_stash;
 
  112                 num = odp_stash_get_u32(stash, &tmp, 1);
 
  120                 EM_PRINT(
"Stash get failed: %i\n", num);
 
  124         if (odp_stash_destroy(stash))
 
  131 event_group_alloc(
void)
 
  136         if (unlikely(odp_stash_get_u32(
em_shm->event_group_stash, &idx, 1) != 1))
 
  142         egrp_elem = &
em_shm->event_group_tbl.egrp_elem[idx];
 
  147         return egrp_idx2hdl(idx);
 
  151 event_group_free(em_event_group_t event_group)
 
  154         uint32_t idx = (uint32_t)egrp_hdl2idx(event_group);
 
  156         if (unlikely(egrp_elem == NULL))
 
  163         if (unlikely(odp_stash_put_u32(
em_shm->event_group_stash, &idx, 1) != 1)) {
 
  173 event_group_count(
void)
 
  178 #define EGRP_INFO_HDR_FMT \ 
  179 "Number of event groups: %d\n\n" \
 
  180 "ID        Ready  Cnt(post)  Gen  Num-notif\n" \
 
  181 "------------------------------------------\n%s\n"
 
  183 #define EGRP_INFO_LEN 43 
  184 #define EGRP_INFO_FMT "%-10" PRI_EGRP "%-7c%-11d%-5d%-9d\n" 
 
  188         unsigned int egrp_num;
 
  189         em_event_group_t egrp;
 
  207         const int egrp_info_str_len = (egrp_num + 10) * EGRP_INFO_LEN + 1;
 
  208         char egrp_info_str[egrp_info_str_len];
 
  211                 egrp_elem = event_group_elem_get(egrp);
 
  213                 if (unlikely(egrp_elem == NULL || !event_group_allocated(egrp_elem))) {
 
  218                 egrp_count.all = EM_ATOMIC_GET(&egrp_elem->post.atomic);
 
  220                 n_print = snprintf(egrp_info_str + len,
 
  221                                    egrp_info_str_len - len,
 
  223                                    egrp_elem->
ready ? 
'Y' : 
'N',
 
  228                 if (n_print >= egrp_info_str_len - len)
 
  237                 EM_PRINT(
"No event group!\n");
 
  245         egrp_info_str[len] = 
'\0';
 
  246         EM_PRINT(EGRP_INFO_HDR_FMT, egrp_num, egrp_info_str);
 
void event_group_info_print(void)
 
#define EM_EVENT_GROUP_SAFE_MODE
 
#define EM_MAX_EVENT_GROUPS
 
#define EM_EVENT_GROUP_UNDEF
 
em_event_group_t em_event_group_get_next(void)
 
em_event_group_t em_event_group_get_first(unsigned int *num)
 
env_atomic32_t event_group_count
 
em_event_group_t event_group