> -----Original Message-----
> From: lng-odp [mailto:[email protected]] On Behalf Of
> Christophe Milard
> Sent: Thursday, December 29, 2016 9:57 AM
> To: [email protected]; [email protected]; [email protected];
> [email protected]; [email protected]
> Subject: [lng-odp] [API-NEXT PATCHv2 2/6] drv: adding odpdrv_shm_pool
> functions
> 
> Adding functions to create and destroy memory pools (from which memory
> can be allocated and freed) are added.
> These functions enable the usage of small memory amount (compared to
> drvshm_reserve() whose granularity is the page size).
> The usage of this pool guatantees that allocated memory is sharable
> between ODP threads. (using malloc would not work when ODP threads
> are linux processes).
> 
> Signed-off-by: Christophe Milard <[email protected]>
> ---
>  include/odp/drv/spec/shm.h                         | 97
> ++++++++++++++++++++++
>  .../linux-generic/include/odp/drv/plat/shm_types.h |  3 +
>  2 files changed, 100 insertions(+)
> 
> diff --git a/include/odp/drv/spec/shm.h b/include/odp/drv/spec/shm.h
> index ef64f5d..20bbfd2 100644
> --- a/include/odp/drv/spec/shm.h
> +++ b/include/odp/drv/spec/shm.h
> @@ -220,6 +220,103 @@ int odpdrv_shm_print_all(const char *title);
>  uint64_t odpdrv_shm_to_u64(odpdrv_shm_t hdl);
> 
>  /**
> + * drv shm pool parameters
> + * Used to communicate pool creation options.
> + */
> +typedef struct {
> +     /** sum of all (simultaneous) allocs (bytes)*/

Capital 'S' for clean doxygen doc.

> +     uint64_t pool_size;
> +
> +     /** Minimum alloc size application will request from pool (bytes)*/
> +     uint64_t min_alloc;

Since this is a driver interface: ... size *driver* will request ... 

> +
> +     /** Maximum alloc size application will request from pool (bytes)*/

Same here.

> +     uint64_t max_alloc;
> +} odpdrv_shm_pool_param_t;
> +
> +/**
> + * @typedef odpdrv_shm_pool_t
> + * odpdrv shared memory pool
> + */
> +
> +/**
> + * Create a memory pool
> + *
> + * This routine is used to create a memory pool. The use of pool name is
> + * optional.
> + * Unique names are not required. However, odpdrv_shm_pool_lookup()
> + * returns only a single matching pool.
> + *
> + * @param name     Name of the pool or NULL.
> + * @param params   Pool parameters.
> + *
> + * @return Handle of the created drv shm memory pool
> + * @retval ODPDRV_SHM_POOL_INVALID  Pool could not be created
> + */
> +odpdrv_shm_pool_t odpdrv_shm_pool_create(const char *pool_name,
> +                                      odpdrv_shm_pool_param_t *params);

We are have chosen to use "xxx_param_t *param", not the plural "params".

> +
> +/**
> + * Destroy a pool previously created by odpdrv_shm_pool_create()
> + *
> + * @param pool    Handle of the pool to be destroyed
> + *
> + * @retval 0 Success
> + * @retval -1 Failure

We are using <0 for failure, implementation usually returns -1 but API is more 
portable/extendable with <0.


> + *
> + * @note This routine destroys a previously created pool, and will
> destroy any
> + * internal shared memory objects associated with the pool. Results are
> + * undefined if an attempt is made to destroy a pool that contains
> allocated
> + * or otherwise active allocations.
> + */
> +int odpdrv_shm_pool_destroy(odpdrv_shm_pool_t pool);
> +
> +/**
> + * Find a memory pool by name
> + *
> + * @param name      Name of the pool
> + *
> + * @return Handle of the first matching pool
> + * @retval ODPDRV_SHM_POOL_INVALID Pool could not be found
> + */
> +odpdrv_shm_pool_t odpdrv_shm_pool_lookup(const char *name);
> +
> +/**
> + * Allocate memory from a memory pool
> + *
> + * @param pool      Memory Pool handle

Lower case 'p' for pool

> + * @param size      Number of bytes to allocate (bytes)
> + *
> + * @return A pointer to the allocated memory
> + * @retval NULL on error.
> + */
> +void *odpdrv_shm_pool_alloc(odpdrv_shm_pool_t pool, uint64_t size);
> +
> +/**
> + * Free memory  back to a memory pool
> + *
> + * @param pool      Memory Pool handle

Lower case 'p' for pool

> + * @param addr      pointer to a previously allocated memory
> + *               (as returned by a previous cal to odpdrv_shm_pool_alloc)

Upper case 'P' for pointer.

Typo: cal -> call



> + *
> + * @return A pointer to the allocated memory
> + * @retval NULL on error.

No return value. Remove these. Doesn't 'make doxygen-doc' run doxygen on this 
file, or didn't it warn about @return on a void function.


> + */
> +void odpdrv_shm_pool_free(odpdrv_shm_pool_t pool, void *addr);
> +
> +/**
> + * Print memory pool info
> + *
> + * @param title     A string to be printed as a title (e.g. location)
> + * @param pool      Memory Pool handle

Lower case 'p' for pool

> + *
> + * @return Non-zero value if pool inconsistency is detected

0   on success
<0  on failure

> + *
> + * @note This routine writes implementation-defined information about the
> + * specified pool to the ODP log. The intended use is for debugging.
> + */
> +int  odpdrv_shm_pool_print(const char *title, odpdrv_shm_pool_t pool);
> +/**
>   * @}
>   */


-Petri

Reply via email to