Lines Matching refs:mq
33 void OS_InitMessageQueue(OSMessageQueue *mq, OSMessage *msgArray, s32 msgCount) in OS_InitMessageQueue() argument
35 OS_InitThreadQueue(&mq->queueSend); in OS_InitMessageQueue()
36 OS_InitThreadQueue(&mq->queueReceive); in OS_InitMessageQueue()
37 mq->msgArray = msgArray; in OS_InitMessageQueue()
38 mq->msgCount = msgCount; in OS_InitMessageQueue()
39 mq->firstIndex = 0; in OS_InitMessageQueue()
40 mq->usedCount = 0; in OS_InitMessageQueue()
55 BOOL OS_SendMessage(OSMessageQueue *mq, OSMessage msg, s32 flags) in OS_SendMessage() argument
62 while (mq->msgCount <= mq->usedCount) // check for full queue in OS_SendMessage()
72 OS_SleepThread(&mq->queueSend); in OS_SendMessage()
77 lastIndex = (mq->firstIndex + mq->usedCount) % mq->msgCount; in OS_SendMessage()
78 mq->msgArray[lastIndex] = msg; in OS_SendMessage()
79 mq->usedCount++; in OS_SendMessage()
82 OS_WakeupThread(&mq->queueReceive); in OS_SendMessage()
100 BOOL OS_ReceiveMessage(OSMessageQueue *mq, OSMessage *msg, s32 flags) in OS_ReceiveMessage() argument
106 while (mq->usedCount == 0) // check for empty queue in OS_ReceiveMessage()
116 OS_SleepThread(&mq->queueReceive); in OS_ReceiveMessage()
123 *msg = mq->msgArray[mq->firstIndex]; in OS_ReceiveMessage()
125 mq->firstIndex = (mq->firstIndex + 1) % mq->msgCount; in OS_ReceiveMessage()
126 mq->usedCount--; in OS_ReceiveMessage()
129 OS_WakeupThread(&mq->queueSend); in OS_ReceiveMessage()
148 BOOL OS_JamMessage(OSMessageQueue *mq, OSMessage msg, s32 flags) in OS_JamMessage() argument
154 while (mq->msgCount <= mq->usedCount) // check for full queue in OS_JamMessage()
164 OS_SleepThread(&mq->queueSend); in OS_JamMessage()
169 mq->firstIndex = (mq->firstIndex + mq->msgCount - 1) % mq->msgCount; in OS_JamMessage()
170 mq->msgArray[mq->firstIndex] = msg; in OS_JamMessage()
171 mq->usedCount++; in OS_JamMessage()
174 OS_WakeupThread(&mq->queueReceive); in OS_JamMessage()
194 BOOL OS_ReadMessage(OSMessageQueue *mq, OSMessage *msg, s32 flags) in OS_ReadMessage() argument
200 while (mq->usedCount == 0) // check for empty queue in OS_ReadMessage()
210 OS_SleepThread(&mq->queueReceive); in OS_ReadMessage()
217 *msg = mq->msgArray[mq->firstIndex]; in OS_ReadMessage()