diff options
Diffstat (limited to 'arm9/lib/src/OS_message.c')
-rw-r--r-- | arm9/lib/src/OS_message.c | 124 |
1 files changed, 0 insertions, 124 deletions
diff --git a/arm9/lib/src/OS_message.c b/arm9/lib/src/OS_message.c deleted file mode 100644 index 3b5c33b0..00000000 --- a/arm9/lib/src/OS_message.c +++ /dev/null @@ -1,124 +0,0 @@ -#include "OS_message.h" -#include "function_target.h" -#include "OS_system.h" -#include "OS_thread.h" - -ARM_FUNC void OS_InitMessageQueue(OSMessageQueue *mq, OSMessage *msgArray, s32 msgCount) -{ - OS_InitThreadQueue(&mq->queueSend); - OS_InitThreadQueue(&mq->queueReceive); - mq->msgArray = msgArray; - mq->msgCount = msgCount; - mq->firstIndex = 0; - mq->usedCount = 0; -} - -ARM_FUNC BOOL OS_SendMessage(OSMessageQueue *mq, OSMessage msg, s32 flags) -{ - OSIntrMode enabled = OS_DisableInterrupts(); - - while (mq->msgCount <= mq->usedCount) - { - if (!(flags & OS_MESSAGE_BLOCK)) - { - (void)OS_RestoreInterrupts(enabled); - return FALSE; - } - else - { - OS_SleepThread(&mq->queueSend); - } - } - - s32 lastIndex = (mq->firstIndex + mq->usedCount) % mq->msgCount; - mq->msgArray[lastIndex] = msg; - mq->usedCount++; - - OS_WakeupThread(&mq->queueReceive); - - (void)OS_RestoreInterrupts(enabled); - return TRUE; -} - -ARM_FUNC BOOL OS_ReceiveMessage(OSMessageQueue *mq, OSMessage *msg, s32 flags) -{ - OSIntrMode enabled = OS_DisableInterrupts(); - - while (mq->usedCount == 0) - { - if (!(flags & OS_MESSAGE_BLOCK)) - { - (void)OS_RestoreInterrupts(enabled); - return FALSE; - } - else - { - OS_SleepThread(&mq->queueReceive); - } - } - - if (msg != NULL) - { - *msg = mq->msgArray[mq->firstIndex]; - } - mq->firstIndex = (mq->firstIndex + 1) % mq->msgCount; - mq->usedCount--; - - OS_WakeupThread(&mq->queueSend); - - (void)OS_RestoreInterrupts(enabled); - return TRUE; -} - -ARM_FUNC BOOL OS_JamMessage(OSMessageQueue *mq, OSMessage msg, s32 flags) -{ - OSIntrMode enabled = OS_DisableInterrupts(); - - while (mq->msgCount <= mq->usedCount) - { - if (!(flags & OS_MESSAGE_BLOCK)) - { - (void)OS_RestoreInterrupts(enabled); - return FALSE; - } - else - { - OS_SleepThread(&mq->queueSend); - } - } - - mq->firstIndex = (mq->firstIndex + mq->msgCount - 1) % mq->msgCount; - mq->msgArray[mq->firstIndex] = msg; - mq->usedCount++; - - OS_WakeupThread(&mq->queueReceive); - - (void)OS_RestoreInterrupts(enabled); - return TRUE; -} - -ARM_FUNC BOOL OS_ReadMessage(OSMessageQueue *mq, OSMessage *msg, s32 flags) -{ - OSIntrMode enabled = OS_DisableInterrupts(); - - while (mq->usedCount == 0) - { - if (!(flags & OS_MESSAGE_BLOCK)) - { - (void)OS_RestoreInterrupts(enabled); - return FALSE; - } - else - { - OS_SleepThread(&mq->queueReceive); - } - } - - if (msg != NULL) - { - *msg = mq->msgArray[mq->firstIndex]; - } - - (void)OS_RestoreInterrupts(enabled); - return TRUE; -} |