BT_HANDLE BT_FifoCreate(BT_u32 ulElements, BT_u32 ulElementWidth, BT_ERROR *pError) { BT_HANDLE hFifo; BT_ERROR Error = BT_ERR_NONE; hFifo = BT_CreateHandle(&oHandleInterface, sizeof(struct _BT_OPAQUE_HANDLE), pError); if(!hFifo) { Error = BT_ERR_NO_MEMORY; goto err_out; } hFifo->hQueue = BT_CreateQueue(ulElements, ulElementWidth, &Error); if (!hFifo->hQueue) { Error = BT_ERR_NO_MEMORY; goto err_free_out; } hFifo->ulElementWidth = ulElementWidth; hFifo->ulElements = ulElements; return hFifo; err_free_out: BT_DestroyHandle(hFifo); err_out: if (pError) { *pError = Error; } return NULL; }
/*---------------------------------------------------------------------------* * Routine: sys_mbox_new *---------------------------------------------------------------------------* * Description: * Creates a new mailbox * Inputs: * int size -- Size of elements in the mailbox * Outputs: * sys_mbox_t -- Handle to new mailbox *---------------------------------------------------------------------------*/ err_t sys_mbox_new( sys_mbox_t *pxMailBox, int iSize ) { err_t xReturn = ERR_MEM; BT_ERROR Error = BT_ERR_NONE; *pxMailBox = BT_CreateQueue( (BT_u32)iSize, sizeof( void * ), &Error); if( *pxMailBox != NULL ) { xReturn = ERR_OK; SYS_STATS_INC_USED( mbox ); } return xReturn; }