/*
 * @file hv_vos_Pool.h
 * @brief Header file of pool.
 *
 * @verbatim
 * ==============================================================================
 *                        ##### How to use #####
 * ==============================================================================
 * (+) Use ()
 *
 * @endverbatim
 * @author HiView SoC Software Team
 * @version 1.0.0
 * @date 2023-03-01
 */



#ifndef _HV_VOS_POOL_H
#define _HV_VOS_POOL_H

#include "hv_vos_Types.h"

VOS_EXTERN_C_BEGIN

/** @defgroup VOS_POOL VOS_POOL
 *  VOS memory pool routines
 *  @{
 */

typedef struct _HV_VOS_POOL_S Hv_Vos_POOL_S;

Hv_Vos_POOL_S *Hv_Vos_POOL_Init(UINT32 elementSize, UINT32 elementCount);

void *Hv_Vos_POOL_Alloc(Hv_Vos_POOL_S *self);

void Hv_Vos_POOL_Free(Hv_Vos_POOL_S *self, void *node);

void Hv_Vos_POOL_Cleanup(Hv_Vos_POOL_S *self);

/** @} */

VOS_EXTERN_C_END

#endif



