⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 compo_pool.c

📁 COMPO source code for reference
💻 C
字号:
/*******************************************************************************File name   : compo_pool.cDescription : Functions of the data pool ManagerCOPYRIGHT (C) STMicroelectronics 2000.Date               Modification                               Name----               ------------                               ----5 May 2004        Creation                                   TM*******************************************************************************//* Includes ----------------------------------------------------------------- */#include <stdlib.h>#include "stddefs.h"#include <string.h>#include "compo_pool.h"/* Private Types ------------------------------------------------------------ *//* Private Constants -------------------------------------------------------- *//* Private Variables -------------------------------------------------------- *//* Private Macros ----------------------------------------------------------- *//* Private Function prototypes ---------------------------------------------- *//* Functions ---------------------------------------------------------------- *//*******************************************************************************Name        : stcompo_InitDataPoolDescription : initializes a generic datapoolParameters  :Assumptions :Limitations : No error checking is performedReturns     :*******************************************************************************/void stcompo_InitDataPool(  stcompo_DataPoolDesc_t*    DataPool_p,  U32                       NbElem,  U32                       ElemSize,  void*                     ElemArray_p,  void**                    HandleArray_p){  U32 i;  DataPool_p->NbFreeElem      = NbElem;  DataPool_p->NbElem          = NbElem;  DataPool_p->ElemSize        = ElemSize;  DataPool_p->ElemArray_p     = ElemArray_p;  DataPool_p->HandleArray_p   = HandleArray_p;  /* Initialize Handle array content*/  for( i=0; i < NbElem; i++)    DataPool_p->HandleArray_p[i] = (void*) ((U32)ElemArray_p + ElemSize*(NbElem - 1 -i));}/*******************************************************************************Name        : stcompo_GetElementDescription : gets an element from the data pool returning its handleParameters  :Assumptions :Limitations :Returns     :*******************************************************************************/ST_ErrorCode_t stcompo_GetElement( stcompo_DataPoolDesc_t* DataPool_p, void** Handle_p){    if(DataPool_p->NbFreeElem > 0)    {        *Handle_p = (void*) DataPool_p->HandleArray_p[DataPool_p->NbFreeElem - 1];        DataPool_p->HandleArray_p[DataPool_p->NbFreeElem - 1] = NULL;        DataPool_p->NbFreeElem--;        return(ST_NO_ERROR);    }    else    {        return(ST_ERROR_NO_FREE_HANDLES);    }}/*******************************************************************************Name        : stcompo_ReleaseElementDescription :Parameters  :Assumptions :Limitations : upper level must ensure an handle is released only once              upper level must also ensure handle validityReturns     :*******************************************************************************/ST_ErrorCode_t stcompo_ReleaseElement(stcompo_DataPoolDesc_t*  DataPool_p,                                      void*                    Handle){    if ( Handle == NULL )    {        return (ST_ERROR_INVALID_HANDLE);    }    if (DataPool_p->NbFreeElem == DataPool_p->NbElem)    {        return (ST_ERROR_NO_FREE_HANDLES);    }    DataPool_p->NbFreeElem++;    DataPool_p->HandleArray_p[DataPool_p->NbFreeElem - 1] = Handle;    return(ST_NO_ERROR);}/* End of compo_pool.c */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -