Example #1
0
static inline lagopus_result_t
bridgeq_mgr_map_to_array(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;

  if (bridgeq_table != NULL) {
    bridgeq_mgr_lock();
    n_bridgeqs = 0;

    if (lagopus_hashmap_size(&bridgeq_table) != 0) {
      /* NOTE:
       *   hashmap_iterate() is very slow.
       */
      ret = lagopus_hashmap_iterate(&bridgeq_table,
                                    iter_to_array,
                                    NULL);
    } else {
      ret = LAGOPUS_RESULT_OK;
    }
    bridgeq_mgr_unlock();
  } else {
    ret = LAGOPUS_RESULT_INVALID_OBJECT;
    lagopus_msg_warning("bridgeq_table is NULL.\n");
  }

  return ret;
}
Example #2
0
static inline lagopus_result_t
s_config_list(testobj_config_t ***list) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;

  if (list != NULL) {
    size_t n = (size_t)lagopus_hashmap_size(&s_tbl);
    *list = NULL;
    if (n > 0) {
      testobj_config_t **configs = (testobj_config_t **)
                                   malloc(sizeof(testobj_config_t *) * n);
      if (configs != NULL) {
        testobj_config_iter_ctx_t ctx;
        ctx.m_configs = configs;
        ctx.m_n_configs = 0;
        ctx.m_max = n;
        ret = lagopus_hashmap_iterate(&s_tbl, s_config_iterate,
                                      (void *)&ctx);
        if (ret == LAGOPUS_RESULT_OK) {
          *list = configs;
          ret = (ssize_t)n;
        } else {
          free((void *)configs);
        }
      } else {
        ret = LAGOPUS_RESULT_NO_MEMORY;
      }
    } else {
      ret = LAGOPUS_RESULT_OK;
    }
  } else {
    ret = LAGOPUS_RESULT_INVALID_ARGS;
  }

  return ret;
}