Hi, Comments inline...
On 12 August 2015 at 00:01, Zoltan Kiss <[email protected]> wrote: > Applications can preset certain parts of the buffer or user area, so when > that > memory will be allocated it starts from a known state. If the platform > allocates the memory during pool creation, it's enough to run the > constructor > after that. If it's allocating memory on demand, it should call the > constructor each time. > [Bala] Not sure if I understand the above description correctly does it mean that if the memory is allocated for an existing pool this call should be called only during the pool creation and not during each and every buffer allocation? Then it will be applications responsibility to reset the user area before freeing the buffer? Is this the use-case this API is trying to address? > > Signed-off-by: Zoltan Kiss <[email protected]> > --- > include/odp/api/pool.h | 20 ++++++++++++++++++++ > 1 file changed, 20 insertions(+) > > diff --git a/include/odp/api/pool.h b/include/odp/api/pool.h > index 2e79a55..1bd19bf 100644 > --- a/include/odp/api/pool.h > +++ b/include/odp/api/pool.h > @@ -41,6 +41,20 @@ extern "C" { > #define ODP_POOL_NAME_LEN 32 > > /** > + * Buffer constructor callback function for pools. > + * > + * @param pool Handle of the pool which owns the buffer > + * @param buf_ctor_arg Opaque pointer defined in odp_pool_param_t > + * @param buf Pointer to the buffer > + * > + * @note If the application specifies this pointer, it expects that every > buffer > + * is initialized with it when the underlying memory is allocated. > + */ > +typedef void (odp_pool_buf_ctor_t)(odp_pool_t pool, > + void *buf_ctor_arg, > + void *buf); > + > [Bala] We have avoided call back functions in ODP architecture so if the requirement can be addressed without a call-back maybe we can follow that approach. Again I am not clear if this call-back function should be called only once during pool creation or every time during buffer alloc. > +/** > * Pool parameters > * Used to communicate pool creation options. > */ > @@ -88,6 +102,12 @@ typedef struct odp_pool_param_t { > uint32_t num; > } tmo; > }; > + > + /** Buffer constructor to initialize every buffer. Use NULL if no > + initialization needed. */ > + odp_pool_buf_ctor_t *buf_ctor; > + /** Opaque pointer passed to buffer constructor */ > + void *buf_ctor_arg; > } odp_pool_param_t; > > /** Packet pool*/ > -- > 1.9.1 > > _______________________________________________ > lng-odp mailing list > [email protected] > https://lists.linaro.org/mailman/listinfo/lng-odp > Regards, Bala
_______________________________________________ lng-odp mailing list [email protected] https://lists.linaro.org/mailman/listinfo/lng-odp
