@@ -104,6 +104,34 @@ int odp_buffer_pool_destroy(odp_buffer_pool_t pool);
*/
odp_buffer_pool_t odp_buffer_pool_lookup(const char *name);
+/**
+ * Buffer pool information struct
+ * Used to get information about a buffer pool.
+ */
+typedef struct odp_buffer_pool_info_t {
+ const char *name; /**< pool name */
+ odp_shm_t shm; /**< handle of shared memory area
+ supplied by application to
+ contain buffer pool, or
+ ODP_SHM_NULL if this pool is
+ managed by ODP */
+ odp_buffer_pool_param_t params; /**< pool parameters */
+} odp_buffer_pool_info_t;
+
+/**
+ * Retrieve information about a buffer pool
+ *
+ * @param pool Buffer pool handle
+ *
+ * @param[out] info Receives an odp_buffer_pool_info_t object
+ * that describes the pool.
+ *
+ * @retval 0 Success
+ * @retval -1 Failure. Info could not be retrieved.
+ */
+
+int odp_buffer_pool_info(odp_buffer_pool_t pool,
+ odp_buffer_pool_info_t *info);
/**
* Print buffer pool info
@@ -390,6 +390,26 @@ odp_buffer_pool_t odp_buffer_pool_lookup(const char *name)
return ODP_BUFFER_POOL_INVALID;
}
+int odp_buffer_pool_info(odp_buffer_pool_t pool_hdl,
+ odp_buffer_pool_info_t *info)
+{
+ uint32_t pool_id = pool_handle_to_index(pool_hdl);
+ pool_entry_t *pool = get_pool_entry(pool_id);
+
+ if (pool == NULL || info == NULL)
+ return -1;
+
+ info->name = pool->s.name;
+ info->shm = pool->s.flags.user_supplied_shm ?
+ pool->s.pool_shm : ODP_SHM_NULL;
+ info->params.buf_size = pool->s.params.buf_size;
+ info->params.buf_align = pool->s.params.buf_align;
+ info->params.num_bufs = pool->s.params.num_bufs;
+ info->params.buf_type = pool->s.params.buf_type;
+
+ return 0;
+}
+
int odp_buffer_pool_destroy(odp_buffer_pool_t pool_hdl)
{
uint32_t pool_id = pool_handle_to_index(pool_hdl);