Ejemplo n.º 1
0
/* Available in: irq, thread. */
TT_BMSG_QUEUE_T *tt_bmsg_queue_init (void *msg_buffer, size_t msg_buffer_size, size_t each_msg_size)
{
	TT_BMSG_QUEUE_T *msg_queue;
	if (msg_buffer == NULL)
		return NULL;
	if (msg_buffer_size <= sizeof (TT_BMSG_QUEUE_T))
		return NULL;

	msg_queue = (TT_BMSG_QUEUE_T *) msg_buffer;
	msg_buffer = (void *)((char *) msg_buffer + sizeof (TT_BMSG_QUEUE_T));
	msg_buffer_size -= sizeof (TT_BMSG_QUEUE_T);
	each_msg_size = (each_msg_size + sizeof (int) - 1) / sizeof (int) * sizeof (int);
	
	msg_queue->queue.msg_free = __memInit (
		msg_buffer,
		msg_buffer_size,
		GetOffsetSize(TT_BMSG_T, msg_data) + each_msg_size,	
		(size_t) &((TT_BMSG_T *) 0)->list);
	if (msg_queue->queue.msg_free == NULL)
		return NULL;
		
	msg_queue->queue.max_msg_limit = listLength (msg_queue->queue.msg_free);
	if (msg_queue->queue.max_msg_limit <= 0)
		return NULL;
	
	msg_queue->queue.msg_buffer = msg_buffer;
	msg_queue->queue.msg_buffer_size = msg_buffer_size;
	listInit (&msg_queue->queue.msg_used);
	tt_pc_init (&msg_queue->queue.pc_semaphore, msg_queue->queue.max_msg_limit);
	
	msg_queue->each_msg_size = each_msg_size;
	return msg_queue;
}
Ejemplo n.º 2
0
/* Available in: irq, thread. */
TT_MSG_QUEUE_T *tt_msg_queue_init (void *msg_buffer, size_t msg_buffer_size)
{
	TT_MSG_QUEUE_T *msg_queue;
	if (msg_buffer == NULL)
		return NULL;
	if (msg_buffer_size <= sizeof (TT_MSG_QUEUE_T))
		return NULL;

	msg_queue = (TT_MSG_QUEUE_T *) msg_buffer;
	msg_buffer = (void *)((char *) msg_buffer + sizeof (TT_MSG_QUEUE_T));
	msg_buffer_size -= sizeof (TT_MSG_QUEUE_T);
	
	msg_queue->msg_free = memInit (msg_buffer, msg_buffer_size, TT_MSG_T);
	if (msg_queue->msg_free == NULL)
		return NULL;
		
	msg_queue->max_msg_limit = listLength (msg_queue->msg_free);
	if (msg_queue->max_msg_limit <= 0)
		return NULL;
	
	msg_queue->msg_buffer = msg_buffer;
	msg_queue->msg_buffer_size = msg_buffer_size;
	listInit (&msg_queue->msg_used);
	tt_pc_init (&msg_queue->pc_semaphore, msg_queue->max_msg_limit);
	
	return msg_queue;
}
Ejemplo n.º 3
0
int testaudio_init(void)
{
	bufTestAudioInitMemoryPool ();
	
	listInit (&g_testaudio.listAudio);
	tt_pc_init (&g_testaudio.pcAudio, bufTestAudioGetTotalBlocksNum ());
	
	return 0;
}