mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-08-13 17:03:47 -04:00
39cc86c260
subrepo: subdir: "soh" merged: "ba904bbd0" upstream: origin: "https://github.com/HarbourMasters/soh.git" branch: "master" commit: "ba904bbd0" git-subrepo: version: "0.4.1" origin: "???" commit: "???"
29 lines
664 B
C
29 lines
664 B
C
#include "global.h"
|
|
|
|
s32 osSendMesg(OSMesgQueue* mq, OSMesg mesg, s32 flag) {
|
|
register u32 prevInt = __osDisableInt();
|
|
register u32 index;
|
|
|
|
while (mq->validCount >= mq->msgCount) {
|
|
if (flag == OS_MESG_BLOCK) {
|
|
__osRunningThread->state = 8;
|
|
__osEnqueueAndYield(&mq->fullqueue);
|
|
} else {
|
|
__osRestoreInt(prevInt);
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
index = (mq->first + mq->validCount) % mq->msgCount;
|
|
mq->msg[index] = mesg;
|
|
mq->validCount++;
|
|
|
|
if (mq->mtqueue->next != NULL) {
|
|
osStartThread(__osPopThread(&mq->mtqueue));
|
|
}
|
|
|
|
__osRestoreInt(prevInt);
|
|
|
|
return 0;
|
|
}
|