/* 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; }
/* 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; }
int testaudio_init(void) { bufTestAudioInitMemoryPool (); listInit (&g_testaudio.listAudio); tt_pc_init (&g_testaudio.pcAudio, bufTestAudioGetTotalBlocksNum ()); return 0; }