static void pool_create_destroy(odp_pool_param_t *params) { odp_pool_t pool; char pool_name[ODP_POOL_NAME_LEN]; snprintf(pool_name, sizeof(pool_name), "test_pool-%d", pool_name_number++); pool = odp_pool_create(pool_name, params); CU_ASSERT_FATAL(pool != ODP_POOL_INVALID); CU_ASSERT(odp_pool_to_u64(pool) != odp_pool_to_u64(ODP_POOL_INVALID)); CU_ASSERT(odp_pool_destroy(pool) == 0); }
int odp_buffer_snprint(char *str, uint32_t n, odp_buffer_t buf) { odp_buffer_hdr_t *hdr; int len = 0; if (!odp_buffer_is_valid(buf)) { ODP_PRINT("Buffer is not valid.\n"); return len; } hdr = odp_buf_to_hdr(buf); len += snprintf(&str[len], n-len, "Buffer\n"); len += snprintf(&str[len], n-len, " pool %" PRIu64 "\n", odp_pool_to_u64(hdr->pool_hdl)); len += snprintf(&str[len], n-len, " addr %p\n", hdr->addr); len += snprintf(&str[len], n-len, " size %" PRIu32 "\n", hdr->size); len += snprintf(&str[len], n-len, " ref_count %" PRIu32 "\n", odp_atomic_load_u32(&hdr->ref_count)); len += snprintf(&str[len], n-len, " type %i\n", hdr->type); return len; }
void odp_pool_print(odp_pool_t pool_hdl) { pool_entry_t *pool; uint32_t pool_id; pool_id = pool_handle_to_index(pool_hdl); pool = get_pool_entry(pool_id); uint32_t bufcount = odp_atomic_load_u32(&pool->s.bufcount); uint32_t blkcount = odp_atomic_load_u32(&pool->s.blkcount); uint64_t bufallocs = odp_atomic_load_u64(&pool->s.poolstats.bufallocs); uint64_t buffrees = odp_atomic_load_u64(&pool->s.poolstats.buffrees); uint64_t blkallocs = odp_atomic_load_u64(&pool->s.poolstats.blkallocs); uint64_t blkfrees = odp_atomic_load_u64(&pool->s.poolstats.blkfrees); uint64_t bufempty = odp_atomic_load_u64(&pool->s.poolstats.bufempty); uint64_t blkempty = odp_atomic_load_u64(&pool->s.poolstats.blkempty); uint64_t hiwmct = odp_atomic_load_u64(&pool->s.poolstats.high_wm_count); uint64_t lowmct = odp_atomic_load_u64(&pool->s.poolstats.low_wm_count); ODP_DBG("Pool info\n"); ODP_DBG("---------\n"); ODP_DBG(" pool %" PRIu64 "\n", odp_pool_to_u64(pool->s.pool_hdl)); ODP_DBG(" name %s\n", pool->s.flags.has_name ? pool->s.name : "Unnamed Pool"); ODP_DBG(" pool type %s\n", pool->s.params.type == ODP_POOL_BUFFER ? "buffer" : (pool->s.params.type == ODP_POOL_PACKET ? "packet" : (pool->s.params.type == ODP_POOL_TIMEOUT ? "timeout" : "unknown"))); ODP_DBG(" pool storage ODP managed shm handle %" PRIu64 "\n", odp_shm_to_u64(pool->s.pool_shm)); ODP_DBG(" pool status %s\n", pool->s.quiesced ? "quiesced" : "active"); ODP_DBG(" pool opts %s, %s, %s\n", pool->s.flags.unsegmented ? "unsegmented" : "segmented", pool->s.flags.zeroized ? "zeroized" : "non-zeroized", pool->s.flags.predefined ? "predefined" : "created"); ODP_DBG(" pool base %p\n", pool->s.pool_base_addr); ODP_DBG(" pool size %lu(k)\n", pool->s.pool_size / 1024); ODP_DBG(" pool mdata base %p\n", pool->s.pool_mdata_addr); ODP_DBG(" udata size %u\n", pool->s.udata_size); ODP_DBG(" headroom %u\n", pool->s.headroom); ODP_DBG(" tailroom %u\n", pool->s.tailroom); if (pool->s.params.type == ODP_POOL_BUFFER) { ODP_DBG(" buf size %1u\n", pool->s.params.buf.size); ODP_DBG(" buf align %u requested, %u used\n", pool->s.params.buf.align, pool->s.buf_align); } else if (pool->s.params.type == ODP_POOL_PACKET) { ODP_DBG(" seg length %u requested, %u used\n", pool->s.params.pkt.seg_len, pool->s.seg_size); ODP_DBG(" pkt length %u requested, %u used\n", pool->s.params.pkt.len, pool->s.blk_size); } ODP_DBG(" num bufs %u\n", pool->s.buf_num); ODP_DBG(" bufs available %u %s\n", bufcount, pool->s.low_wm_assert ? " **low wm asserted**" : ""); ODP_DBG(" bufs in use %u\n", pool->s.buf_num - bufcount); ODP_DBG(" buf allocs %lu\n", bufallocs); ODP_DBG(" buf frees %lu\n", buffrees); ODP_DBG(" buf empty %lu\n", bufempty); ODP_DBG(" blk size %1u\n", pool->s.seg_size > ODP_MAX_INLINE_BUF ? pool->s.seg_size : 0); ODP_DBG(" blks available %u\n", blkcount); ODP_DBG(" blk allocs %lu\n", blkallocs); ODP_DBG(" blk frees %lu\n", blkfrees); ODP_DBG(" blk empty %lu\n", blkempty); ODP_DBG(" high wm value %u\n", pool->s.high_wm); ODP_DBG(" high wm count %lu\n", hiwmct); ODP_DBG(" low wm value %u\n", pool->s.low_wm); ODP_DBG(" low wm count %lu\n", lowmct); }