/*-------------------------------------------------------------*/
/***************************************************************
* A netwib_bufpool permits to obtain and release memory, *
* without having to malloc and free it : this is done once. *
* This is mainly advantageous for programs needing to allocate*
* and free frequently. For programs allocating memory and then*
* only freeing it at the end, function netwib_buf_init_malloc *
* is more appropriated. *
***************************************************************/
/*-------------------------------------------------------------*/
typedef struct netwib_bufpool netwib_bufpool;
/*-------------------------------------------------------------*/
/* Name : netwib_bufpool_init
Description :
Initialize a netwib_bufpool.
Input parameter(s) :
mt : for multithread access
Input/output parameter(s) :
**ppbufpool : bufpool initialized
Output parameter(s) :
Normal return values :
NETWIB_ERR_OK : ok
*/
netwib_err netwib_bufpool_init(netwib_bool mt,
netwib_bufpool **ppbufpool);
#define netwib_bufpool_initdefault(ppbufpool) netwib_bufpool_init(NETWIB_FALSE,ppbufpool)
/*-------------------------------------------------------------*/
/* Name : netwib_bufpool_close
Description :
Close a netwib_bufpool.
Input parameter(s) :
Input/output parameter(s) :
**ppbufpool : bufpool closed
Output parameter(s) :
Normal return values :
NETWIB_ERR_OK : ok
*/
netwib_err netwib_bufpool_close(netwib_bufpool **ppbufpool);
/*-------------------------------------------------------------*/
/* Name : netwib_bufpool_buf_init
Description :
Give a buffer pointer to user.
Input parameter(s) :
Input/output parameter(s) :
*pbufpool : bufpool
Output parameter(s) :
*ppbuf : pointer obtained
Normal return values :
NETWIB_ERR_OK : ok
*/
netwib_err netwib_bufpool_buf_init(netwib_bufpool *pbufpool,
netwib_buf **ppbuf);
/*-------------------------------------------------------------*/
/* Name : netwib_bufpool_buf_close
Description :
The user indicates he does not need the buffer anymore.
Input parameter(s) :
Input/output parameter(s) :
*pbufpool : bufpool
*ppbuf : pointer to close
Output parameter(s) :
Normal return values :
NETWIB_ERR_OK : ok
*/
netwib_err netwib_bufpool_buf_close(netwib_bufpool *pbufpool,
netwib_buf **ppbuf);