Esempio n. 1
0
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;
}
Esempio n. 2
0
/*---------------------------------------------------------------------------*
 * 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;
}