From 7068ad3703f2cd2e08e6661ab57c9b1877dbd4b2 Mon Sep 17 00:00:00 2001 From: Tharo <17233964+Thar0@users.noreply.github.com> Date: Sat, 9 Apr 2022 01:20:23 +0100 Subject: [PATCH] Message Queues, Threads, and surroundings cleanup (#1178) * message queues, threads, and surroundings cleanup * Format, make the formatter prefer clang-format-11 if found * Fix __osThreadTail type * Q -> Queue, thread defines renamed * Reformat, add missing NULL * Suggested changes and further casting cleanup * Reformat * padmgr name fixes --- format.sh | 8 ++-- include/functions.h | 10 ++--- include/irqmgr.h | 2 +- include/padmgr.h | 8 ++-- include/ultra64/controller.h | 1 - include/ultra64/thread.h | 6 +++ include/ultra64/vi.h | 2 +- include/variables.h | 4 +- include/z64.h | 67 ++++++++++++++++------------- include/z64audio.h | 18 ++++---- src/boot/boot_main.c | 3 +- src/boot/idle.c | 6 +-- src/boot/z_std_dma.c | 48 ++++++++++----------- src/code/__osMalloc.c | 6 +-- src/code/audioMgr.c | 39 +++++++++-------- src/code/audio_load.c | 31 +++++++------- src/code/code_800E4FE0.c | 24 ++++++----- src/code/fault.c | 7 ++-- src/code/graph.c | 6 +-- src/code/irqmgr.c | 10 ++--- src/code/main.c | 29 ++++++------- src/code/padmgr.c | 70 +++++++++++++++---------------- src/code/sched.c | 36 +++++++--------- src/code/z_jpeg.c | 4 +- src/code/z_kankyo.c | 4 +- src/code/z_msgevent.c | 7 ++-- src/code/z_player_lib.c | 2 +- src/code/z_room.c | 2 +- src/code/z_scene.c | 2 +- src/code/z_ss_sram.c | 10 ++--- src/libultra/io/contramwrite.c | 4 +- src/libultra/io/controller.c | 16 +++---- src/libultra/io/devmgr.c | 10 ++--- src/libultra/io/piacs.c | 13 +++--- src/libultra/io/pimgr.c | 6 +-- src/libultra/io/siacs.c | 20 ++++----- src/libultra/io/vimgr.c | 10 ++--- src/libultra/os/createmesgqueue.c | 4 +- src/libultra/os/createthread.c | 10 ++--- src/libultra/os/jammesg.c | 2 +- src/libultra/os/recvmesg.c | 4 +- src/libultra/os/sendmesg.c | 8 ++-- src/libultra/os/setthreadpri.c | 4 +- src/libultra/os/startthread.c | 12 +++--- src/libultra/os/stopthread.c | 12 +++--- 45 files changed, 311 insertions(+), 296 deletions(-) diff --git a/format.sh b/format.sh index d5d3c2d49c..f8e5ef9091 100755 --- a/format.sh +++ b/format.sh @@ -21,13 +21,13 @@ export -f add_final_newline shopt -s globstar -if [ $(command -v clang-format) ] +if [ $(command -v clang-format-${FORMAT_VER}) ] then - CLANG_FORMAT="clang-format" + CLANG_FORMAT="clang-format-${FORMAT_VER}" else - if [ $(command -v clang-format-${FORMAT_VER}) ] + if [ $(command -v clang-format) ] then - CLANG_FORMAT="clang-format-${FORMAT_VER}" + CLANG_FORMAT="clang-format" else echo "Neither clang-format nor clang-format-${FORMAT_VER} found. Exiting." exit 1 diff --git a/include/functions.h b/include/functions.h index fe355f1640..5a800b058c 100644 --- a/include/functions.h +++ b/include/functions.h @@ -31,7 +31,7 @@ void DmaMgr_Error(DmaRequest* req, const char* file, const char* errorName, cons const char* DmaMgr_GetFileNameImpl(u32 vrom); const char* DmaMgr_GetFileName(u32 vrom); void DmaMgr_ProcessMsg(DmaRequest* req); -void DmaMgr_ThreadEntry(void* arg0); +void DmaMgr_ThreadEntry(void* arg); s32 DmaMgr_SendRequestImpl(DmaRequest* req, u32 ram, u32 vrom, u32 size, u32 unk, OSMesgQueue* queue, OSMesg msg); s32 DmaMgr_SendRequest0(u32 ram, u32 vrom, u32 size); void DmaMgr_Init(void); @@ -79,7 +79,7 @@ s32 sprintf(char* dst, const char* fmt, ...); void __osPiCreateAccessQueue(void); void __osPiGetAccess(void); void __osPiRelAccess(void); -s32 osSendMesg(OSMesgQueue* mq, OSMesg mesg, s32 flag); +s32 osSendMesg(OSMesgQueue* mq, OSMesg msg, s32 flag); void osStopThread(OSThread* thread); void osViExtendVStart(u32 arg0); s32 osRecvMesg(OSMesgQueue* mq, OSMesg* msg, s32 flag); @@ -101,7 +101,7 @@ void __osSetSR(u32); u32 __osGetSR(void); void osWritebackDCache(void* vaddr, s32 nbytes); void* osViGetNextFramebuffer(void); -void osCreatePiManager(OSPri pri, OSMesgQueue* cmdQ, OSMesg* cmdBuf, s32 cmdMsgCnt); +void osCreatePiManager(OSPri pri, OSMesgQueue* cmdQueue, OSMesg* cmdBuf, s32 cmdMsgCnt); void __osDevMgrMain(void* arg); s32 __osPiRawStartDma(s32 dir, u32 cartAddr, void* dramAddr, size_t size); u32 osVirtualToPhysical(void* vaddr); @@ -122,7 +122,7 @@ void osInvalICache(void* vaddr, s32 nbytes); void osCreateMesgQueue(OSMesgQueue* mq, OSMesg* msg, s32 count); void osInvalDCache(void* vaddr, s32 nbytes); s32 __osSiDeviceBusy(void); -s32 osJamMesg(OSMesgQueue* mq, OSMesg mesg, s32 flag); +s32 osJamMesg(OSMesgQueue* mq, OSMesg msg, s32 flag); void osSetThreadPri(OSThread* thread, OSPri pri); OSPri osGetThreadPri(OSThread* thread); s32 __osEPiRawReadIo(OSPiHandle* handle, u32 devAddr, u32* data); @@ -1646,7 +1646,7 @@ void PadMgr_HandlePreNMI(PadMgr* padmgr); // This function must remain commented out, because it is called incorrectly in // fault.c (actual bug in game), and the compiler notices and won't compile it // void PadMgr_RequestPadData(PadMgr* padmgr, Input* inputs, s32 mode); -void PadMgr_Init(PadMgr* padmgr, OSMesgQueue* siIntMsgQ, IrqMgr* irqMgr, OSId id, OSPri priority, void* stack); +void PadMgr_Init(PadMgr* padmgr, OSMesgQueue* serialEventQueue, IrqMgr* irqMgr, OSId id, OSPri priority, void* stack); void Sched_SwapFrameBuffer(CfbInfo* cfbInfo); void func_800C84E4(SchedContext* sc, CfbInfo* cfbInfo); void Sched_HandleReset(SchedContext* sc); diff --git a/include/irqmgr.h b/include/irqmgr.h index 6c5b72458a..e1b3befbca 100644 --- a/include/irqmgr.h +++ b/include/irqmgr.h @@ -40,7 +40,7 @@ typedef struct { void IrqMgr_Init(IrqMgr* irqMgr, void* stack, OSPri pri, u8 retraceCount); -void IrqMgr_AddClient(IrqMgr* irqMgr, IrqMgrClient* client, OSMesgQueue* msgQ); +void IrqMgr_AddClient(IrqMgr* irqMgr, IrqMgrClient* client, OSMesgQueue* msgQueue); void IrqMgr_RemoveClient(IrqMgr* irqMgr, IrqMgrClient* client); #endif diff --git a/include/padmgr.h b/include/padmgr.h index 459bcfeba1..52f6f08ee7 100644 --- a/include/padmgr.h +++ b/include/padmgr.h @@ -12,12 +12,12 @@ typedef struct { typedef struct PadMgr { /* 0x0000 */ OSContStatus padStatus[4]; - /* 0x0010 */ OSMesg serialMsgBuf[1]; + /* 0x0010 */ OSMesg serialLockMsgBuf[1]; /* 0x0014 */ OSMesg lockMsgBuf[1]; /* 0x0018 */ OSMesg interruptMsgBuf[4]; - /* 0x0028 */ OSMesgQueue serialMsgQ; - /* 0x0040 */ OSMesgQueue lockMsgQ; - /* 0x0058 */ OSMesgQueue interruptMsgQ; + /* 0x0028 */ OSMesgQueue serialLockQueue; + /* 0x0040 */ OSMesgQueue lockQueue; + /* 0x0058 */ OSMesgQueue interruptQueue; /* 0x0070 */ IrqMgrClient irqClient; /* 0x0078 */ IrqMgr* irqMgr; /* 0x0080 */ OSThread thread; diff --git a/include/ultra64/controller.h b/include/ultra64/controller.h index 86e3e4bee1..3b92328127 100644 --- a/include/ultra64/controller.h +++ b/include/ultra64/controller.h @@ -3,7 +3,6 @@ #include "message.h" -#define SIAccessQueueSize 2 #define BLOCKSIZE 32 #define MAXCONTROLLERS 4 #define PFS_ONE_PAGE 8 diff --git a/include/ultra64/thread.h b/include/ultra64/thread.h index 6b901d4f2d..4c8146c0bc 100644 --- a/include/ultra64/thread.h +++ b/include/ultra64/thread.h @@ -30,6 +30,7 @@ typedef union { /* 0x00 */ f32 f_odd; /* 0x04 */ f32 f_even; } f; + f64 d; } __OSfp; // size = 0x08 typedef struct { @@ -63,4 +64,9 @@ typedef struct OSThread { /* 0x20 */ __OSThreadContext context; } OSThread; // size = 0x1B0 +typedef struct { + OSThread* next; + OSPri priority; +} __OSThreadTail; // size = 0x8 + #endif diff --git a/include/ultra64/vi.h b/include/ultra64/vi.h index f54bb3b65b..c0a81f836f 100644 --- a/include/ultra64/vi.h +++ b/include/ultra64/vi.h @@ -64,7 +64,7 @@ typedef struct { /* 0x08 */ OSViMode* modep; /* 0x0C */ u32 features; /* 0x10 */ OSMesgQueue* mq; - /* 0x14 */ OSMesg* msg; + /* 0x14 */ OSMesg msg; /* 0x18 */ __OSViScale x; /* 0x24 */ __OSViScale y; } OSViContext; // size = 0x30 diff --git a/include/variables.h b/include/variables.h index 621081b91e..9d1d04e0bf 100644 --- a/include/variables.h +++ b/include/variables.h @@ -28,7 +28,7 @@ extern OSViMode osViModePalLan1; extern s32 osViClock; extern u32 __osShutdown; extern OSHWIntr __OSGlobalIntMask; -extern OSThread* __osThreadTail[]; +extern __OSThreadTail __osThreadTail; extern OSThread* __osRunQueue; extern OSThread* __osActiveQueue; extern OSThread* __osRunningThread; @@ -45,7 +45,7 @@ extern u32 __additional_scanline; extern u8 gBuildTeam[]; extern u8 gBuildDate[]; extern u8 gBuildMakeOption[]; -extern OSMesgQueue gPiMgrCmdQ; +extern OSMesgQueue gPiMgrCmdQueue; extern OSViMode gViConfigMode; extern u8 D_80013960; extern OSMesgQueue __osPiAccessQueue; diff --git a/include/z64.h b/include/z64.h index 462e964027..18d4f08e50 100644 --- a/include/z64.h +++ b/include/z64.h @@ -42,13 +42,28 @@ #define REGION_JP 2 #define REGION_EU 3 -#define Z_PRIORITY_MAIN 10 -#define Z_PRIORITY_GRAPH 11 -#define Z_PRIORITY_AUDIOMGR 12 -#define Z_PRIORITY_PADMGR 14 -#define Z_PRIORITY_SCHED 15 -#define Z_PRIORITY_DMAMGR 16 -#define Z_PRIORITY_IRQMGR 17 +#define THREAD_PRI_IDLE_INIT 10 +#define THREAD_PRI_MAIN_INIT 10 +#define THREAD_PRI_DMAMGR_LOW 10 // Used when decompressing files +#define THREAD_PRI_GRAPH 11 +#define THREAD_PRI_AUDIOMGR 12 +#define THREAD_PRI_PADMGR 14 +#define THREAD_PRI_MAIN 15 +#define THREAD_PRI_SCHED 15 +#define THREAD_PRI_DMAMGR 16 +#define THREAD_PRI_IRQMGR 17 +#define THREAD_PRI_FAULT_CLIENT (OS_PRIORITY_APPMAX - 1) +#define THREAD_PRI_FAULT OS_PRIORITY_APPMAX + +#define THREAD_ID_IDLE 1 +#define THREAD_ID_FAULT 2 +#define THREAD_ID_MAIN 3 +#define THREAD_ID_GRAPH 4 +#define THREAD_ID_SCHED 5 +#define THREAD_ID_PADMGR 7 +#define THREAD_ID_AUDIOMGR 10 +#define THREAD_ID_DMAMGR 18 +#define THREAD_ID_IRQMGR 19 #define STACK(stack, size) \ u64 stack[ALIGN8(size) / sizeof(u64)] @@ -118,9 +133,10 @@ typedef struct OSScTask { /* 0x08 */ u32 flags; /* 0x0C */ CfbInfo* framebuffer; /* 0x10 */ OSTask list; - /* 0x50 */ OSMesgQueue* msgQ; + /* 0x50 */ OSMesgQueue* msgQueue; /* 0x54 */ OSMesg msg; -} OSScTask; + /* 0x58 */ char unk_58[0x10]; +} OSScTask; // size = 0x68 typedef struct GraphicsContext { /* 0x0000 */ Gfx* polyOpaBuffer; // Pointer to "Zelda 0" @@ -130,11 +146,11 @@ typedef struct GraphicsContext { /* 0x0014 */ u32 unk_014; /* 0x0018 */ char unk_018[0x20]; /* 0x0038 */ OSMesg msgBuff[0x08]; - /* 0x0058 */ OSMesgQueue* schedMsgQ; + /* 0x0058 */ OSMesgQueue* schedMsgQueue; /* 0x005C */ OSMesgQueue queue; /* 0x0074 */ char unk_074[0x04]; - /* 0x0078 */ OSScTask task; // size of OSScTask might be wrong - /* 0x00D0 */ char unk_0D0[0xE0]; + /* 0x0078 */ OSScTask task; + /* 0x00E0 */ char unk_0E0[0xD0]; /* 0x01B0 */ Gfx* workBuffer; /* 0x01B4 */ TwoHeadGfxArena work; /* 0x01C4 */ char unk_01C4[0xC0]; @@ -1576,9 +1592,9 @@ typedef struct { } FrameBufferSwap; typedef struct { - /* 0x0000 */ OSMesgQueue interruptQ; - /* 0x0018 */ OSMesg intBuf[8]; - /* 0x0038 */ OSMesgQueue cmdQ; + /* 0x0000 */ OSMesgQueue interruptQueue; + /* 0x0018 */ OSMesg interruptMsgBuf[8]; + /* 0x0038 */ OSMesgQueue cmdQueue; /* 0x0050 */ OSMesg cmdMsgBuf[8]; /* 0x0070 */ OSThread thread; /* 0x0220 */ OSScTask* audioListHead; @@ -1607,18 +1623,14 @@ typedef struct { /* 0x0000 */ IrqMgr* irqMgr; /* 0x0004 */ SchedContext* sched; /* 0x0008 */ OSScTask audioTask; - /* 0x0060 */ char unk_60[0x10]; /* 0x0070 */ AudioTask* rspTask; - /* 0x0074 */ OSMesgQueue unk_74; - /* 0x008C */ OSMesg unk_8C; - /* 0x0090 */ OSMesgQueue unk_90; - /* 0x00A8 */ OSMesg unk_A8; - /* 0x00AC */ OSMesgQueue unk_AC; - /* 0x00C4 */ OSMesg unk_C4; - /* 0x00C8 */ OSMesgQueue unk_C8; - /* 0x00E0 */ OSMesg unk_E0; - /* 0x00E4 */ char unk_E4[0x04]; - /* 0x00E8 */ OSThread unk_E8; + /* 0x0074 */ OSMesgQueue interruptQueue; + /* 0x008C */ OSMesg interruptMsgBuf[8]; + /* 0x00AC */ OSMesgQueue taskQueue; + /* 0x00C4 */ OSMesg taskMsgBuf[1]; + /* 0x00C8 */ OSMesgQueue lockQueue; + /* 0x00E0 */ OSMesg lockMsgBuf[1]; + /* 0x00E8 */ OSThread thread; } AudioMgr; // size = 0x298 struct ArenaNode; @@ -1626,7 +1638,7 @@ struct ArenaNode; typedef struct Arena { /* 0x00 */ struct ArenaNode* head; /* 0x04 */ void* start; - /* 0x08 */ OSMesgQueue lock; + /* 0x08 */ OSMesgQueue lockQueue; /* 0x20 */ u8 unk_20; /* 0x21 */ u8 isInit; /* 0x22 */ u8 flag; @@ -1793,7 +1805,6 @@ typedef struct { /* 0x28 */ u32 mode; // 0 if Y V0 is 1 and 2 if Y V0 is 2 /* 0x2C */ char unk_2C[4]; /* 0x30 */ OSScTask scTask; - /* 0x88 */ char unk_88[0x10]; /* 0x98 */ OSMesgQueue mq; /* 0xB0 */ OSMesg msg; /* 0xB4 */ JpegWork* workBuf; diff --git a/include/z64audio.h b/include/z64audio.h index b4b0ccd0cc..0326d7638f 100644 --- a/include/z64audio.h +++ b/include/z64audio.h @@ -716,7 +716,7 @@ typedef struct { /* 0x18 */ s32 bytesRemaining; /* 0x1C */ s8* isDone; /* 0x20 */ SoundFontSample sample; - /* 0x30 */ OSMesgQueue msgqueue; + /* 0x30 */ OSMesgQueue msgQueue; /* 0x48 */ OSMesg msg; /* 0x4C */ OSIoMesg ioMesg; } AudioSlowLoad; // size = 0x64 @@ -741,7 +741,7 @@ typedef struct { typedef struct { /* 0x00 */ OSTask task; - /* 0x40 */ OSMesgQueue* taskQueue; + /* 0x40 */ OSMesgQueue* msgQueue; /* 0x44 */ void* unk_44; // probably a message that gets unused. /* 0x48 */ char unk_48[0x8]; } AudioTask; // size = 0x50 @@ -779,12 +779,12 @@ typedef struct { /* 0x1E18 */ OSPiHandle* cartHandle; /* 0x1E1C */ OSPiHandle* driveHandle; /* 0x1E20 */ OSMesgQueue externalLoadQueue; - /* 0x1E38 */ OSMesg externalLoadMesgBuf[0x10]; + /* 0x1E38 */ OSMesg externalLoadMsgBuf[16]; /* 0x1E78 */ OSMesgQueue preloadSampleQueue; - /* 0x1E90 */ OSMesg preloadSampleMesgBuf[0x10]; + /* 0x1E90 */ OSMesg preloadSampleMsgBuf[16]; /* 0x1ED0 */ OSMesgQueue currAudioFrameDmaQueue; - /* 0x1EE8 */ OSMesg currAudioFrameDmaMesgBuf[0x40]; - /* 0x1FE8 */ OSIoMesg currAudioFrameDmaIoMesgBuf[0x40]; + /* 0x1EE8 */ OSMesg currAudioFrameDmaMsgBuf[64]; + /* 0x1FE8 */ OSIoMesg currAudioFrameDmaIoMsgBuf[64]; /* 0x25E8 */ OSMesgQueue syncDmaQueue; /* 0x2600 */ OSMesg syncDmaMesg; /* 0x2604 */ OSIoMesg syncDmaIoMesg; @@ -876,9 +876,9 @@ typedef struct { /* 0x5BF0 */ OSMesgQueue taskStartQueue; /* 0x5C08 */ OSMesgQueue cmdProcQueue; /* 0x5C20 */ OSMesgQueue audioResetQueue; - /* 0x5C38 */ OSMesg taskStartMsgs[1]; - /* 0x5C3C */ OSMesg audioResetMesgs[1]; - /* 0x5C40 */ OSMesg cmdProcMsgs[4]; + /* 0x5C38 */ OSMesg taskStartMsgBuf[1]; + /* 0x5C3C */ OSMesg audioResetMsgBuf[1]; + /* 0x5C40 */ OSMesg cmdProcMsgBuf[4]; /* 0x5C50 */ AudioCmd cmdBuf[0x100]; } AudioContext; // size = 0x6450 diff --git a/src/boot/boot_main.c b/src/boot/boot_main.c index 89e09a184a..9d8631b57a 100644 --- a/src/boot/boot_main.c +++ b/src/boot/boot_main.c @@ -24,6 +24,7 @@ void bootproc(void) { Locale_Init(); StackCheck_Init(&sIdleThreadInfo, sIdleThreadStack, STACK_TOP(sIdleThreadStack), 0, 256, "idle"); - osCreateThread(&sIdleThread, 1, Idle_ThreadEntry, NULL, STACK_TOP(sIdleThreadStack), Z_PRIORITY_MAIN); + osCreateThread(&sIdleThread, THREAD_ID_IDLE, Idle_ThreadEntry, NULL, STACK_TOP(sIdleThreadStack), + THREAD_PRI_IDLE_INIT); osStartThread(&sIdleThread); } diff --git a/src/boot/idle.c b/src/boot/idle.c index d81484e4c4..f4e3715d7f 100644 --- a/src/boot/idle.c +++ b/src/boot/idle.c @@ -5,7 +5,7 @@ OSThread gMainThread; STACK(sMainStack, 0x900); StackEntry sMainStackInfo; OSMesg sPiMgrCmdBuff[50]; -OSMesgQueue gPiMgrCmdQ; +OSMesgQueue gPiMgrCmdQueue; OSViMode gViConfigMode; u8 D_80013960; @@ -78,9 +78,9 @@ void Idle_ThreadEntry(void* arg) { ViConfig_UpdateVi(1); osViBlack(1); osViSwapBuffer(0x803DA80); //! @bug Invalid vram address (probably intended to be 0x803DA800) - osCreatePiManager(OS_PRIORITY_PIMGR, &gPiMgrCmdQ, sPiMgrCmdBuff, 50); + osCreatePiManager(OS_PRIORITY_PIMGR, &gPiMgrCmdQueue, sPiMgrCmdBuff, ARRAY_COUNT(sPiMgrCmdBuff)); StackCheck_Init(&sMainStackInfo, sMainStack, STACK_TOP(sMainStack), 0, 0x400, "main"); - osCreateThread(&gMainThread, 3, Main_ThreadEntry, arg, STACK_TOP(sMainStack), Z_PRIORITY_MAIN); + osCreateThread(&gMainThread, THREAD_ID_MAIN, Main_ThreadEntry, arg, STACK_TOP(sMainStack), THREAD_PRI_MAIN_INIT); osStartThread(&gMainThread); osSetThreadPri(NULL, OS_PRIORITY_IDLE); diff --git a/src/boot/z_std_dma.c b/src/boot/z_std_dma.c index d50807f4f8..a0050fca50 100644 --- a/src/boot/z_std_dma.c +++ b/src/boot/z_std_dma.c @@ -3,7 +3,7 @@ StackEntry sDmaMgrStackInfo; OSMesgQueue sDmaMgrMsgQueue; -OSMesg sDmaMgrMsgs[0x20]; +OSMesg sDmaMgrMsgBuf[32]; OSThread sDmaMgrThread; STACK(sDmaMgrStack, 0x500); const char* sDmaMgrCurFileName; @@ -70,7 +70,7 @@ s32 DmaMgr_DmaRomToRam(u32 rom, u32 ram, u32 size) { if (gDmaMgrVerbose == 10) { osSyncPrintf("%10lld ノーマルDMA %08x %08x %08x (%d)\n", OS_CYCLES_TO_USEC(osGetTime()), ioMsg.dramAddr, - ioMsg.devAddr, ioMsg.size, gPiMgrCmdQ.validCount); + ioMsg.devAddr, ioMsg.size, MQ_GET_COUNT(&gPiMgrCmdQueue)); } ret = osEPiStartDma(gCartHandle, &ioMsg, OS_READ); @@ -79,12 +79,14 @@ s32 DmaMgr_DmaRomToRam(u32 rom, u32 ram, u32 size) { } if (gDmaMgrVerbose == 10) { - osSyncPrintf("%10lld ノーマルDMA START (%d)\n", OS_CYCLES_TO_USEC(osGetTime()), gPiMgrCmdQ.validCount); + osSyncPrintf("%10lld ノーマルDMA START (%d)\n", OS_CYCLES_TO_USEC(osGetTime()), + MQ_GET_COUNT(&gPiMgrCmdQueue)); } osRecvMesg(&queue, NULL, OS_MESG_BLOCK); if (gDmaMgrVerbose == 10) { - osSyncPrintf("%10lld ノーマルDMA END (%d)\n", OS_CYCLES_TO_USEC(osGetTime()), gPiMgrCmdQ.validCount); + osSyncPrintf("%10lld ノーマルDMA END (%d)\n", OS_CYCLES_TO_USEC(osGetTime()), + MQ_GET_COUNT(&gPiMgrCmdQueue)); } size -= buffSize; @@ -102,7 +104,7 @@ s32 DmaMgr_DmaRomToRam(u32 rom, u32 ram, u32 size) { if (gDmaMgrVerbose == 10) { osSyncPrintf("%10lld ノーマルDMA %08x %08x %08x (%d)\n", OS_CYCLES_TO_USEC(osGetTime()), ioMsg.dramAddr, - ioMsg.devAddr, ioMsg.size, gPiMgrCmdQ.validCount); + ioMsg.devAddr, ioMsg.size, MQ_GET_COUNT(&gPiMgrCmdQueue)); } ret = osEPiStartDma(gCartHandle, &ioMsg, OS_READ); @@ -112,7 +114,7 @@ s32 DmaMgr_DmaRomToRam(u32 rom, u32 ram, u32 size) { osRecvMesg(&queue, NULL, OS_MESG_BLOCK); if (gDmaMgrVerbose == 10) { - osSyncPrintf("%10lld ノーマルDMA END (%d)\n", OS_CYCLES_TO_USEC(osGetTime()), gPiMgrCmdQ.validCount); + osSyncPrintf("%10lld ノーマルDMA END (%d)\n", OS_CYCLES_TO_USEC(osGetTime()), MQ_GET_COUNT(&gPiMgrCmdQueue)); } end: @@ -131,7 +133,7 @@ s32 DmaMgr_DmaHandler(OSPiHandle* pihandle, OSIoMesg* mb, s32 direction) { if (gDmaMgrVerbose == 10) { osSyncPrintf("%10lld サウンドDMA %08x %08x %08x (%d)\n", OS_CYCLES_TO_USEC(osGetTime()), mb->dramAddr, - mb->devAddr, mb->size, gPiMgrCmdQ.validCount); + mb->devAddr, mb->size, MQ_GET_COUNT(&gPiMgrCmdQueue)); } ret = osEPiStartDma(pihandle, mb, direction); @@ -160,7 +162,6 @@ void DmaMgr_DmaFromDriveRom(u32 ram, u32 rom, u32 size) { osEPiStartDma(handle, &ioMsg, OS_READ); osRecvMesg(&queue, NULL, OS_MESG_BLOCK); - return; } void DmaMgr_Error(DmaRequest* req, const char* file, const char* errorName, const char* errorDesc) { @@ -280,9 +281,9 @@ void DmaMgr_ProcessMsg(DmaRequest* req) { "圧縮されたセグメントの一部だけをDMA転送することはできません"); } - osSetThreadPri(NULL, Z_PRIORITY_MAIN); + osSetThreadPri(NULL, THREAD_PRI_DMAMGR_LOW); Yaz0_Decompress(romStart, ram, romSize); - osSetThreadPri(NULL, Z_PRIORITY_DMAMGR); + osSetThreadPri(NULL, THREAD_PRI_DMAMGR); found = true; if (0) { @@ -308,7 +309,7 @@ void DmaMgr_ProcessMsg(DmaRequest* req) { } } -void DmaMgr_ThreadEntry(void* arg0) { +void DmaMgr_ThreadEntry(void* arg) { OSMesg msg; DmaRequest* req; @@ -351,19 +352,17 @@ s32 DmaMgr_SendRequestImpl(DmaRequest* req, u32 ram, u32 vrom, u32 size, u32 unk req->notifyQueue = queue; req->notifyMsg = msg; - if (1) { - if ((sDmaMgrQueueFullLogged == 0) && (sDmaMgrMsgQueue.validCount >= sDmaMgrMsgQueue.msgCount)) { - sDmaMgrQueueFullLogged++; - osSyncPrintf("%c", BEL); - osSyncPrintf(VT_FGCOL(RED)); - osSyncPrintf("dmaEntryMsgQが一杯です。キューサイズの再検討をおすすめします。"); - LOG_NUM("(sizeof(dmaEntryMsgBufs) / sizeof(dmaEntryMsgBufs[0]))", ARRAY_COUNT(sDmaMgrMsgs), - "../z_std_dma.c", 952); - osSyncPrintf(VT_RST); - } + if (1 && (sDmaMgrQueueFullLogged == 0) && MQ_IS_FULL(&sDmaMgrMsgQueue)) { + sDmaMgrQueueFullLogged++; + osSyncPrintf("%c", BEL); + osSyncPrintf(VT_FGCOL(RED)); + osSyncPrintf("dmaEntryMsgQが一杯です。キューサイズの再検討をおすすめします。"); + LOG_NUM("(sizeof(dmaEntryMsgBufs) / sizeof(dmaEntryMsgBufs[0]))", ARRAY_COUNT(sDmaMgrMsgBuf), "../z_std_dma.c", + 952); + osSyncPrintf(VT_RST); } - osSendMesg(&sDmaMgrMsgQueue, req, OS_MESG_BLOCK); + osSendMesg(&sDmaMgrMsgQueue, (OSMesg)req, OS_MESG_BLOCK); return 0; } @@ -421,9 +420,10 @@ void DmaMgr_Init(void) { Fault_AddHungupAndCrash("../z_std_dma.c", 1055); } - osCreateMesgQueue(&sDmaMgrMsgQueue, sDmaMgrMsgs, ARRAY_COUNT(sDmaMgrMsgs)); + osCreateMesgQueue(&sDmaMgrMsgQueue, sDmaMgrMsgBuf, ARRAY_COUNT(sDmaMgrMsgBuf)); StackCheck_Init(&sDmaMgrStackInfo, sDmaMgrStack, STACK_TOP(sDmaMgrStack), 0, 0x100, "dmamgr"); - osCreateThread(&sDmaMgrThread, 0x12, DmaMgr_ThreadEntry, 0, STACK_TOP(sDmaMgrStack), Z_PRIORITY_DMAMGR); + osCreateThread(&sDmaMgrThread, THREAD_ID_DMAMGR, DmaMgr_ThreadEntry, NULL, STACK_TOP(sDmaMgrStack), + THREAD_PRI_DMAMGR); osStartThread(&sDmaMgrThread); } diff --git a/src/code/__osMalloc.c b/src/code/__osMalloc.c index 0b66eb3539..ddf3024fae 100644 --- a/src/code/__osMalloc.c +++ b/src/code/__osMalloc.c @@ -56,15 +56,15 @@ void ArenaImpl_SetDebugInfo(ArenaNode* node, const char* file, s32 line, Arena* } void ArenaImpl_LockInit(Arena* arena) { - osCreateMesgQueue(&arena->lock, &sArenaLockMsg, 1); + osCreateMesgQueue(&arena->lockQueue, &sArenaLockMsg, 1); } void ArenaImpl_Lock(Arena* arena) { - osSendMesg(&arena->lock, NULL, OS_MESG_BLOCK); + osSendMesg(&arena->lockQueue, NULL, OS_MESG_BLOCK); } void ArenaImpl_Unlock(Arena* arena) { - osRecvMesg(&arena->lock, NULL, OS_MESG_BLOCK); + osRecvMesg(&arena->lockQueue, NULL, OS_MESG_BLOCK); } ArenaNode* ArenaImpl_GetNextBlock(ArenaNode* node) { diff --git a/src/code/audioMgr.c b/src/code/audioMgr.c index a4775861e2..ccef4dbb27 100644 --- a/src/code/audioMgr.c +++ b/src/code/audioMgr.c @@ -1,11 +1,10 @@ #include "global.h" void func_800C3C80(AudioMgr* audioMgr) { - AudioTask* task; + AudioTask* task = audioMgr->rspTask; - task = audioMgr->rspTask; - if (audioMgr->rspTask->taskQueue != NULL) { - osSendMesg(task->taskQueue, NULL, OS_MESG_BLOCK); + if (audioMgr->rspTask->msgQueue != NULL) { + osSendMesg(task->msgQueue, NULL, OS_MESG_BLOCK); } } @@ -17,14 +16,14 @@ void AudioMgr_HandleRetrace(AudioMgr* audioMgr) { } if (audioMgr->rspTask != NULL) { audioMgr->audioTask.next = NULL; - audioMgr->audioTask.flags = 2; + audioMgr->audioTask.flags = OS_SC_NEEDS_RSP; audioMgr->audioTask.framebuffer = NULL; audioMgr->audioTask.list = audioMgr->rspTask->task; - audioMgr->audioTask.msgQ = &audioMgr->unk_AC; + audioMgr->audioTask.msgQueue = &audioMgr->taskQueue; audioMgr->audioTask.msg = NULL; - osSendMesg(&audioMgr->sched->cmdQ, &audioMgr->audioTask, OS_MESG_BLOCK); + osSendMesg(&audioMgr->sched->cmdQueue, (OSMesg)&audioMgr->audioTask, OS_MESG_BLOCK); Sched_SendEntryMsg(audioMgr->sched); } @@ -37,7 +36,7 @@ void AudioMgr_HandleRetrace(AudioMgr* audioMgr) { D_8016A558 += osGetTime() - D_8016A550; D_8016A550 = 0; if (audioMgr->rspTask != NULL) { - osRecvMesg(&audioMgr->unk_AC, NULL, OS_MESG_BLOCK); + osRecvMesg(&audioMgr->taskQueue, NULL, OS_MESG_BLOCK); func_800C3C80(audioMgr); } audioMgr->rspTask = rspTask; @@ -58,16 +57,16 @@ void AudioMgr_ThreadEntry(void* arg0) { Audio_Init(); AudioLoad_SetDmaHandler(DmaMgr_DmaHandler); Audio_InitSound(); - osSendMesg(&audioMgr->unk_C8, NULL, OS_MESG_BLOCK); - IrqMgr_AddClient(audioMgr->irqMgr, &irqClient, &audioMgr->unk_74); + osSendMesg(&audioMgr->lockQueue, NULL, OS_MESG_BLOCK); + IrqMgr_AddClient(audioMgr->irqMgr, &irqClient, &audioMgr->interruptQueue); while (true) { - osRecvMesg(&audioMgr->unk_74, (OSMesg*)&msg, OS_MESG_BLOCK); + osRecvMesg(&audioMgr->interruptQueue, (OSMesg*)&msg, OS_MESG_BLOCK); switch (*msg) { case OS_SC_RETRACE_MSG: AudioMgr_HandleRetrace(audioMgr); - while (audioMgr->unk_74.validCount != 0) { - osRecvMesg(&audioMgr->unk_74, (OSMesg*)&msg, OS_MESG_BLOCK); + while (!MQ_IS_EMPTY(&audioMgr->interruptQueue)) { + osRecvMesg(&audioMgr->interruptQueue, (OSMesg*)&msg, OS_MESG_BLOCK); switch (*msg) { case OS_SC_RETRACE_MSG: break; @@ -85,7 +84,7 @@ void AudioMgr_ThreadEntry(void* arg0) { } void AudioMgr_Unlock(AudioMgr* audioMgr) { - osRecvMesg(&audioMgr->unk_C8, NULL, OS_MESG_BLOCK); + osRecvMesg(&audioMgr->lockQueue, NULL, OS_MESG_BLOCK); } void AudioMgr_Init(AudioMgr* audioMgr, void* stack, OSPri pri, OSId id, SchedContext* sched, IrqMgr* irqMgr) { @@ -95,12 +94,12 @@ void AudioMgr_Init(AudioMgr* audioMgr, void* stack, OSPri pri, OSId id, SchedCon audioMgr->irqMgr = irqMgr; audioMgr->rspTask = NULL; - osCreateMesgQueue(&audioMgr->unk_AC, &audioMgr->unk_C4, 1); - osCreateMesgQueue(&audioMgr->unk_74, &audioMgr->unk_8C, 8); - osCreateMesgQueue(&audioMgr->unk_C8, &audioMgr->unk_E0, 1); + osCreateMesgQueue(&audioMgr->taskQueue, audioMgr->taskMsgBuf, ARRAY_COUNT(audioMgr->taskMsgBuf)); + osCreateMesgQueue(&audioMgr->interruptQueue, audioMgr->interruptMsgBuf, ARRAY_COUNT(audioMgr->interruptMsgBuf)); + osCreateMesgQueue(&audioMgr->lockQueue, audioMgr->lockMsgBuf, ARRAY_COUNT(audioMgr->lockMsgBuf)); - osSendMesg(&audioMgr->unk_AC, NULL, OS_MESG_BLOCK); + osSendMesg(&audioMgr->taskQueue, NULL, OS_MESG_BLOCK); - osCreateThread(&audioMgr->unk_E8, id, AudioMgr_ThreadEntry, audioMgr, stack, pri); - osStartThread(&audioMgr->unk_E8); + osCreateThread(&audioMgr->thread, id, AudioMgr_ThreadEntry, audioMgr, stack, pri); + osStartThread(&audioMgr->thread); } diff --git a/src/code/audio_load.c b/src/code/audio_load.c index 21655c0f9d..092ae1d3f6 100644 --- a/src/code/audio_load.c +++ b/src/code/audio_load.c @@ -58,7 +58,7 @@ void AudioLoad_ProcessSlowLoads(s32 resetStatus); void AudioLoad_DmaSlowCopyUnkMedium(s32 devAddr, u8* ramAddr, s32 size, s32 arg3); OSMesgQueue sScriptLoadQueue; -OSMesg sScriptLoadMesgBuf[0x10]; +OSMesg sScriptLoadMsgBuf[16]; s8* sScriptLoadDonePointers[0x10]; s32 sAudioLoadPad1[2]; // file padding @@ -193,7 +193,7 @@ void* AudioLoad_DmaSampleData(u32 devAddr, u32 size, s32 arg2, u8* dmaIndexRef, dma->ttl = 3; dma->devAddr = dmaDevAddr; dma->sizeUnused = transfer; - AudioLoad_Dma(&gAudioContext.currAudioFrameDmaIoMesgBuf[gAudioContext.curAudioFrameDmaCount++], OS_MESG_PRI_NORMAL, + AudioLoad_Dma(&gAudioContext.currAudioFrameDmaIoMsgBuf[gAudioContext.curAudioFrameDmaCount++], OS_MESG_PRI_NORMAL, OS_READ, dmaDevAddr, dma->ramAddr, transfer, &gAudioContext.currAudioFrameDmaQueue, medium, "SUPERDMA"); *dmaIndexRef = dmaIndex; @@ -442,7 +442,7 @@ s32 AudioLoad_SyncLoadInstrument(s32 fontId, s32 instId, s32 drumId) { void AudioLoad_AsyncLoad(s32 tableType, s32 id, s32 nChunks, s32 retData, OSMesgQueue* retQueue) { if (AudioLoad_AsyncLoadInner(tableType, id, nChunks, retData, retQueue) == NULL) { - osSendMesg(retQueue, 0xFFFFFFFF, OS_MESG_NOBLOCK); + osSendMesg(retQueue, (OSMesg)0xFFFFFFFF, OS_MESG_NOBLOCK); } } @@ -967,7 +967,7 @@ void* AudioLoad_AsyncLoadInner(s32 tableType, s32 id, s32 nChunks, s32 retData, ret = AudioLoad_SearchCaches(tableType, realId); if (ret != NULL) { status = 2; - osSendMesg(retQueue, MK_ASYNC_MSG(retData, 0, 0, 0), OS_MESG_NOBLOCK); + osSendMesg(retQueue, (OSMesg)MK_ASYNC_MSG(retData, 0, 0, 0), OS_MESG_NOBLOCK); } else { sp50 = AudioLoad_GetLoadTable(tableType); size = sp50->entries[realId].size; @@ -1106,11 +1106,12 @@ void AudioLoad_Init(void* heap, u32 heapSize) { gAudioContext.rspTask[0].task.t.data_size = 0; gAudioContext.rspTask[1].task.t.data_size = 0; osCreateMesgQueue(&gAudioContext.syncDmaQueue, &gAudioContext.syncDmaMesg, 1); - osCreateMesgQueue(&gAudioContext.currAudioFrameDmaQueue, gAudioContext.currAudioFrameDmaMesgBuf, 0x40); - osCreateMesgQueue(&gAudioContext.externalLoadQueue, gAudioContext.externalLoadMesgBuf, - ARRAY_COUNT(gAudioContext.externalLoadMesgBuf)); - osCreateMesgQueue(&gAudioContext.preloadSampleQueue, gAudioContext.preloadSampleMesgBuf, - ARRAY_COUNT(gAudioContext.externalLoadMesgBuf)); + osCreateMesgQueue(&gAudioContext.currAudioFrameDmaQueue, gAudioContext.currAudioFrameDmaMsgBuf, + ARRAY_COUNT(gAudioContext.currAudioFrameDmaMsgBuf)); + osCreateMesgQueue(&gAudioContext.externalLoadQueue, gAudioContext.externalLoadMsgBuf, + ARRAY_COUNT(gAudioContext.externalLoadMsgBuf)); + osCreateMesgQueue(&gAudioContext.preloadSampleQueue, gAudioContext.preloadSampleMsgBuf, + ARRAY_COUNT(gAudioContext.externalLoadMsgBuf)); gAudioContext.curAudioFrameDmaCount = 0; gAudioContext.sampleDmaCount = 0; gAudioContext.cartHandle = osCartRomInit(); @@ -1161,7 +1162,7 @@ void AudioLoad_Init(void* heap, u32 heapSize) { AudioHeap_AllocPoolInit(&gAudioContext.permanentPool, temp_v0_3, D_8014A6C4.permanentPoolSize); gAudioContextInitalized = true; - osSendMesg(gAudioContext.taskStartQueueP, (void*)gAudioContext.totalTaskCnt, OS_MESG_NOBLOCK); + osSendMesg(gAudioContext.taskStartQueueP, (OSMesg)gAudioContext.totalTaskCnt, OS_MESG_NOBLOCK); } void AudioLoad_InitSlowLoads(void) { @@ -1273,7 +1274,7 @@ void AudioLoad_ProcessSlowLoads(s32 resetStatus) { switch (gAudioContext.slowLoads[i].status) { case LOAD_STATUS_LOADING: if (slowLoad->medium != MEDIUM_UNK) { - osRecvMesg(&slowLoad->msgqueue, NULL, OS_MESG_BLOCK); + osRecvMesg(&slowLoad->msgQueue, NULL, OS_MESG_BLOCK); } if (resetStatus != 0) { @@ -1313,9 +1314,9 @@ void AudioLoad_ProcessSlowLoads(s32 resetStatus) { void AudioLoad_DmaSlowCopy(AudioSlowLoad* slowLoad, s32 size) { Audio_InvalDCache(slowLoad->curRamAddr, size); - osCreateMesgQueue(&slowLoad->msgqueue, &slowLoad->msg, 1); + osCreateMesgQueue(&slowLoad->msgQueue, &slowLoad->msg, 1); AudioLoad_Dma(&slowLoad->ioMesg, OS_MESG_PRI_NORMAL, 0, slowLoad->curDevAddr, slowLoad->curRamAddr, size, - &slowLoad->msgqueue, slowLoad->medium, "SLOWCOPY"); + &slowLoad->msgQueue, slowLoad->medium, "SLOWCOPY"); } void AudioLoad_DmaSlowCopyUnkMedium(s32 devAddr, u8* ramAddr, s32 size, s32 arg3) { @@ -1376,7 +1377,7 @@ AudioAsyncLoad* AudioLoad_StartAsyncLoadUnkMedium(s32 unkMediumParam, u32 devAdd return NULL; } - osSendMesg(&gAudioContext.asyncLoadUnkMediumQueue, asyncLoad, OS_MESG_NOBLOCK); + osSendMesg(&gAudioContext.asyncLoadUnkMediumQueue, (OSMesg)asyncLoad, OS_MESG_NOBLOCK); asyncLoad->unkMediumParam = unkMediumParam; return asyncLoad; } @@ -2017,5 +2018,5 @@ void AudioLoad_ProcessScriptLoads(void) { } void AudioLoad_InitScriptLoads(void) { - osCreateMesgQueue(&sScriptLoadQueue, sScriptLoadMesgBuf, ARRAY_COUNT(sScriptLoadMesgBuf)); + osCreateMesgQueue(&sScriptLoadQueue, sScriptLoadMsgBuf, ARRAY_COUNT(sScriptLoadMsgBuf)); } diff --git a/src/code/code_800E4FE0.c b/src/code/code_800E4FE0.c index 8a1ed54b16..4d3d8afb4f 100644 --- a/src/code/code_800E4FE0.c +++ b/src/code/code_800E4FE0.c @@ -67,7 +67,7 @@ AudioTask* func_800E5000(void) { } } - osSendMesg(gAudioContext.taskStartQueueP, gAudioContext.totalTaskCnt, OS_MESG_NOBLOCK); + osSendMesg(gAudioContext.taskStartQueueP, (OSMesg)gAudioContext.totalTaskCnt, OS_MESG_NOBLOCK); gAudioContext.rspTaskIdx ^= 1; gAudioContext.curAIBufIdx++; gAudioContext.curAIBufIdx %= 3; @@ -99,7 +99,7 @@ AudioTask* func_800E5000(void) { } } - sp48 = gAudioContext.currAudioFrameDmaQueue.validCount; + sp48 = MQ_GET_COUNT(&gAudioContext.currAudioFrameDmaQueue); if (sp48 != 0) { for (i = 0; i < sp48; i++) { osRecvMesg(&gAudioContext.currAudioFrameDmaQueue, NULL, OS_MESG_NOBLOCK); @@ -114,7 +114,8 @@ AudioTask* func_800E5000(void) { if (gAudioContext.resetStatus != 0) { if (AudioHeap_ResetStep() == 0) { if (gAudioContext.resetStatus == 0) { - osSendMesg(gAudioContext.audioResetQueueP, gAudioContext.audioResetSpecIdToLoad, OS_MESG_NOBLOCK); + osSendMesg(gAudioContext.audioResetQueueP, (OSMesg)(u32)gAudioContext.audioResetSpecIdToLoad, + OS_MESG_NOBLOCK); } sWaitingAudioTask = NULL; @@ -171,7 +172,7 @@ AudioTask* func_800E5000(void) { gWaveSamples[8] = (s16*)(((u8*)func_800E4FE0) + (gAudioContext.audioRandom & 0xFFF0)); index = gAudioContext.rspTaskIdx; - gAudioContext.currTask->taskQueue = NULL; + gAudioContext.currTask->msgQueue = NULL; gAudioContext.currTask->unk_44 = NULL; task = &gAudioContext.currTask->task.t; @@ -348,11 +349,12 @@ void Audio_InitMesgQueuesInternal(void) { gAudioContext.taskStartQueueP = &gAudioContext.taskStartQueue; gAudioContext.cmdProcQueueP = &gAudioContext.cmdProcQueue; gAudioContext.audioResetQueueP = &gAudioContext.audioResetQueue; - osCreateMesgQueue(gAudioContext.taskStartQueueP, gAudioContext.taskStartMsgs, - ARRAY_COUNT(gAudioContext.taskStartMsgs)); - osCreateMesgQueue(gAudioContext.cmdProcQueueP, gAudioContext.cmdProcMsgs, ARRAY_COUNT(gAudioContext.cmdProcMsgs)); - osCreateMesgQueue(gAudioContext.audioResetQueueP, gAudioContext.audioResetMesgs, - ARRAY_COUNT(gAudioContext.audioResetMesgs)); + osCreateMesgQueue(gAudioContext.taskStartQueueP, gAudioContext.taskStartMsgBuf, + ARRAY_COUNT(gAudioContext.taskStartMsgBuf)); + osCreateMesgQueue(gAudioContext.cmdProcQueueP, gAudioContext.cmdProcMsgBuf, + ARRAY_COUNT(gAudioContext.cmdProcMsgBuf)); + osCreateMesgQueue(gAudioContext.audioResetQueueP, gAudioContext.audioResetMsgBuf, + ARRAY_COUNT(gAudioContext.audioResetMsgBuf)); } void Audio_QueueCmd(u32 opArgs, void** data) { @@ -398,7 +400,7 @@ s32 Audio_ScheduleProcessCmds(void) { ret = osSendMesg(gAudioContext.cmdProcQueueP, - (void*)(((gAudioContext.cmdRdPos & 0xFF) << 8) | (gAudioContext.cmdWrPos & 0xFF)), OS_MESG_NOBLOCK); + (OSMesg)(((gAudioContext.cmdRdPos & 0xFF) << 8) | (gAudioContext.cmdWrPos & 0xFF)), OS_MESG_NOBLOCK); if (ret != -1) { gAudioContext.cmdRdPos = gAudioContext.cmdWrPos; ret = 0; @@ -514,7 +516,7 @@ s32 func_800E5EDC(void) { void func_800E5F34(void) { // macro? // clang-format off - s32 chk = -1; s32 sp28; do {} while (osRecvMesg(gAudioContext.audioResetQueueP, (OSMesg*)&sp28, OS_MESG_NOBLOCK) != chk); + s32 chk = -1; OSMesg msg; do {} while (osRecvMesg(gAudioContext.audioResetQueueP, &msg, OS_MESG_NOBLOCK) != chk); // clang-format on } diff --git a/src/code/fault.c b/src/code/fault.c index d1cd9627ae..e03c94d591 100644 --- a/src/code/fault.c +++ b/src/code/fault.c @@ -128,8 +128,8 @@ void Fault_ClientRunTask(FaultClientTask* task) { // Run the fault client callback on a separate thread thread = alloca(sizeof(OSThread)); - osCreateThread(thread, 2, Fault_ClientProcessThread, task, sFaultInstance->clientThreadSp, - OS_PRIORITY_APPMAX - 1); + osCreateThread(thread, THREAD_ID_FAULT, Fault_ClientProcessThread, task, sFaultInstance->clientThreadSp, + THREAD_PRI_FAULT_CLIENT); osStartThread(thread); } else { // Run the fault client callback on this thread @@ -1265,7 +1265,8 @@ void Fault_Init(void) { gFaultMgr.faultHandlerEnabled = true; osCreateMesgQueue(&sFaultInstance->queue, &sFaultInstance->msg, 1); StackCheck_Init(&sFaultThreadInfo, &sFaultStack, STACK_TOP(sFaultStack), 0, 0x100, "fault"); - osCreateThread(&sFaultInstance->thread, 2, Fault_ThreadEntry, 0, STACK_TOP(sFaultStack), OS_PRIORITY_APPMAX); + osCreateThread(&sFaultInstance->thread, THREAD_ID_FAULT, Fault_ThreadEntry, 0, STACK_TOP(sFaultStack), + THREAD_PRI_FAULT); osStartThread(&sFaultInstance->thread); } diff --git a/src/code/graph.c b/src/code/graph.c index c178fa9e81..ecb6eb5067 100644 --- a/src/code/graph.c +++ b/src/code/graph.c @@ -227,7 +227,7 @@ void Graph_TaskSet00(GraphicsContext* gfxCtx) { gfxCtx->fbIdx--; } - scTask->msgQ = &gfxCtx->queue; + scTask->msgQueue = &gfxCtx->queue; scTask->msg = NULL; cfb = &sGraphCfbInfos[sGraphCfbInfoIdx++]; @@ -245,9 +245,9 @@ void Graph_TaskSet00(GraphicsContext* gfxCtx) { if (1) {} - gfxCtx->schedMsgQ = &gSchedContext.cmdQ; + gfxCtx->schedMsgQueue = &gSchedContext.cmdQueue; - osSendMesg(&gSchedContext.cmdQ, scTask, OS_MESG_BLOCK); + osSendMesg(&gSchedContext.cmdQueue, (OSMesg)scTask, OS_MESG_BLOCK); Sched_SendEntryMsg(&gSchedContext); } diff --git a/src/code/irqmgr.c b/src/code/irqmgr.c index 9df7563d81..d29be50823 100644 --- a/src/code/irqmgr.c +++ b/src/code/irqmgr.c @@ -50,18 +50,18 @@ u32 sIrqMgrRetraceCount = 0; * * @param irqMgr the IrqMgr instance to register with. * @param client client to register. - * @param msgQ message queue to send notifications of interrupts to, associated with the client. + * @param msgQueue message queue to send notifications of interrupts to, associated with the client. */ -void IrqMgr_AddClient(IrqMgr* irqMgr, IrqMgrClient* client, OSMesgQueue* msgQ) { +void IrqMgr_AddClient(IrqMgr* irqMgr, IrqMgrClient* client, OSMesgQueue* msgQueue) { OSIntMask prevInt; LogUtils_CheckNullPointer("this", irqMgr, "../irqmgr.c", 96); LogUtils_CheckNullPointer("c", client, "../irqmgr.c", 97); - LogUtils_CheckNullPointer("msgQ", msgQ, "../irqmgr.c", 98); + LogUtils_CheckNullPointer("msgQ", msgQueue, "../irqmgr.c", 98); prevInt = osSetIntMask(OS_IM_NONE); - client->queue = msgQ; + client->queue = msgQueue; client->prev = irqMgr->clients; irqMgr->clients = client; @@ -298,6 +298,6 @@ void IrqMgr_Init(IrqMgr* irqMgr, void* stack, OSPri pri, u8 retraceCount) { osCreateMesgQueue(&irqMgr->queue, irqMgr->msgBuf, ARRAY_COUNT(irqMgr->msgBuf)); osSetEventMesg(OS_EVENT_PRENMI, &irqMgr->queue, (OSMesg)IRQ_PRENMI_MSG); osViSetEvent(&irqMgr->queue, (OSMesg)IRQ_RETRACE_MSG, retraceCount); - osCreateThread(&irqMgr->thread, 19, IrqMgr_ThreadEntry, irqMgr, stack, pri); + osCreateThread(&irqMgr->thread, THREAD_ID_IRQMGR, IrqMgr_ThreadEntry, irqMgr, stack, pri); osStartThread(&irqMgr->thread); } diff --git a/src/code/main.c b/src/code/main.c index 775ba3e723..9794054c75 100644 --- a/src/code/main.c +++ b/src/code/main.c @@ -22,8 +22,8 @@ StackEntry sAudioStackInfo; StackEntry sPadMgrStackInfo; StackEntry sIrqMgrStackInfo; AudioMgr gAudioMgr; -OSMesgQueue sSiIntMsgQ; -OSMesg sSiIntMsgBuf[1]; +OSMesgQueue sSerialEventQueue; +OSMesg sSerialMsgBuf[1]; void Main_LogSystemHeap(void) { osSyncPrintf(VT_FGCOL(GREEN)); @@ -35,7 +35,7 @@ void Main_LogSystemHeap(void) { void Main(void* arg) { IrqMgrClient irqClient; - OSMesgQueue irqMgrMsgQ; + OSMesgQueue irqMgrMsgQueue; OSMesg irqMgrMsgBuf[60]; u32 systemHeapStart; u32 fb; @@ -69,37 +69,38 @@ void Main(void* arg) { R_ENABLE_ARENA_DBG = 0; - osCreateMesgQueue(&sSiIntMsgQ, sSiIntMsgBuf, ARRAY_COUNT(sSiIntMsgBuf)); - osSetEventMesg(OS_EVENT_SI, &sSiIntMsgQ, NULL); + osCreateMesgQueue(&sSerialEventQueue, sSerialMsgBuf, ARRAY_COUNT(sSerialMsgBuf)); + osSetEventMesg(OS_EVENT_SI, &sSerialEventQueue, NULL); Main_LogSystemHeap(); - osCreateMesgQueue(&irqMgrMsgQ, irqMgrMsgBuf, ARRAY_COUNT(irqMgrMsgBuf)); + osCreateMesgQueue(&irqMgrMsgQueue, irqMgrMsgBuf, ARRAY_COUNT(irqMgrMsgBuf)); StackCheck_Init(&sIrqMgrStackInfo, sIrqMgrStack, STACK_TOP(sIrqMgrStack), 0, 0x100, "irqmgr"); - IrqMgr_Init(&gIrqMgr, STACK_TOP(sIrqMgrStack), Z_PRIORITY_IRQMGR, 1); + IrqMgr_Init(&gIrqMgr, STACK_TOP(sIrqMgrStack), THREAD_PRI_IRQMGR, 1); osSyncPrintf("タスクスケジューラの初期化\n"); // "Initialize the task scheduler" StackCheck_Init(&sSchedStackInfo, sSchedStack, STACK_TOP(sSchedStack), 0, 0x100, "sched"); - Sched_Init(&gSchedContext, STACK_TOP(sSchedStack), Z_PRIORITY_SCHED, D_80013960, 1, &gIrqMgr); + Sched_Init(&gSchedContext, STACK_TOP(sSchedStack), THREAD_PRI_SCHED, D_80013960, 1, &gIrqMgr); - IrqMgr_AddClient(&gIrqMgr, &irqClient, &irqMgrMsgQ); + IrqMgr_AddClient(&gIrqMgr, &irqClient, &irqMgrMsgQueue); StackCheck_Init(&sAudioStackInfo, sAudioStack, STACK_TOP(sAudioStack), 0, 0x100, "audio"); - AudioMgr_Init(&gAudioMgr, STACK_TOP(sAudioStack), Z_PRIORITY_AUDIOMGR, 10, &gSchedContext, &gIrqMgr); + AudioMgr_Init(&gAudioMgr, STACK_TOP(sAudioStack), THREAD_PRI_AUDIOMGR, THREAD_ID_AUDIOMGR, &gSchedContext, + &gIrqMgr); StackCheck_Init(&sPadMgrStackInfo, sPadMgrStack, STACK_TOP(sPadMgrStack), 0, 0x100, "padmgr"); - PadMgr_Init(&gPadMgr, &sSiIntMsgQ, &gIrqMgr, 7, Z_PRIORITY_PADMGR, STACK_TOP(sPadMgrStack)); + PadMgr_Init(&gPadMgr, &sSerialEventQueue, &gIrqMgr, THREAD_ID_PADMGR, THREAD_PRI_PADMGR, STACK_TOP(sPadMgrStack)); AudioMgr_Unlock(&gAudioMgr); StackCheck_Init(&sGraphStackInfo, sGraphStack, STACK_TOP(sGraphStack), 0, 0x100, "graph"); - osCreateThread(&sGraphThread, 4, Graph_ThreadEntry, arg, STACK_TOP(sGraphStack), Z_PRIORITY_GRAPH); + osCreateThread(&sGraphThread, THREAD_ID_GRAPH, Graph_ThreadEntry, arg, STACK_TOP(sGraphStack), THREAD_PRI_GRAPH); osStartThread(&sGraphThread); - osSetThreadPri(NULL, 15); + osSetThreadPri(NULL, THREAD_PRI_MAIN); while (true) { msg = NULL; - osRecvMesg(&irqMgrMsgQ, (OSMesg)&msg, OS_MESG_BLOCK); + osRecvMesg(&irqMgrMsgQueue, (OSMesg*)&msg, OS_MESG_BLOCK); if (msg == NULL) { break; } diff --git a/src/code/padmgr.c b/src/code/padmgr.c index 68c34d369c..160a5301f9 100644 --- a/src/code/padmgr.c +++ b/src/code/padmgr.c @@ -4,47 +4,47 @@ s32 D_8012D280 = 1; OSMesgQueue* PadMgr_LockSerialMesgQueue(PadMgr* padMgr) { - OSMesgQueue* ctrlrQ = NULL; + OSMesgQueue* serialEventQueue = NULL; if (D_8012D280 > 2) { // "serialMsgQ Waiting for lock" osSyncPrintf("%2d %d serialMsgQロック待ち %08x %08x %08x\n", osGetThreadId(NULL), - padMgr->serialMsgQ.validCount, padMgr, &padMgr->serialMsgQ, &ctrlrQ); + MQ_GET_COUNT(&padMgr->serialLockQueue), padMgr, &padMgr->serialLockQueue, &serialEventQueue); } - osRecvMesg(&padMgr->serialMsgQ, (OSMesg)&ctrlrQ, OS_MESG_BLOCK); + osRecvMesg(&padMgr->serialLockQueue, (OSMesg*)&serialEventQueue, OS_MESG_BLOCK); if (D_8012D280 > 2) { // "serialMsgQ Locked" osSyncPrintf("%2d %d serialMsgQをロックしました %08x\n", osGetThreadId(NULL), - padMgr->serialMsgQ.validCount, ctrlrQ); + MQ_GET_COUNT(&padMgr->serialLockQueue), serialEventQueue); } - return ctrlrQ; + return serialEventQueue; } -void PadMgr_UnlockSerialMesgQueue(PadMgr* padMgr, OSMesgQueue* ctrlrQ) { +void PadMgr_UnlockSerialMesgQueue(PadMgr* padMgr, OSMesgQueue* serialEventQueue) { if (D_8012D280 > 2) { // "serialMsgQ Unlock" osSyncPrintf("%2d %d serialMsgQロック解除します %08x %08x %08x\n", osGetThreadId(NULL), - padMgr->serialMsgQ.validCount, padMgr, &padMgr->serialMsgQ, ctrlrQ); + MQ_GET_COUNT(&padMgr->serialLockQueue), padMgr, &padMgr->serialLockQueue, serialEventQueue); } - osSendMesg(&padMgr->serialMsgQ, ctrlrQ, OS_MESG_BLOCK); + osSendMesg(&padMgr->serialLockQueue, (OSMesg)serialEventQueue, OS_MESG_BLOCK); if (D_8012D280 > 2) { // "serialMsgQ Unlocked" osSyncPrintf("%2d %d serialMsgQロック解除しました %08x %08x %08x\n", osGetThreadId(NULL), - padMgr->serialMsgQ.validCount, padMgr, &padMgr->serialMsgQ, ctrlrQ); + MQ_GET_COUNT(&padMgr->serialLockQueue), padMgr, &padMgr->serialLockQueue, serialEventQueue); } } void PadMgr_LockPadData(PadMgr* padMgr) { - osRecvMesg(&padMgr->lockMsgQ, NULL, OS_MESG_BLOCK); + osRecvMesg(&padMgr->lockQueue, NULL, OS_MESG_BLOCK); } void PadMgr_UnlockPadData(PadMgr* padMgr) { - osSendMesg(&padMgr->lockMsgQ, NULL, OS_MESG_BLOCK); + osSendMesg(&padMgr->lockQueue, NULL, OS_MESG_BLOCK); } void PadMgr_RumbleControl(PadMgr* padMgr) { @@ -52,7 +52,7 @@ void PadMgr_RumbleControl(PadMgr* padMgr) { static u32 frame; s32 temp = 1; s32 triedRumbleComm; - OSMesgQueue* ctrlrQ = PadMgr_LockSerialMesgQueue(padMgr); + OSMesgQueue* serialEventQueue = PadMgr_LockSerialMesgQueue(padMgr); s32 var4; s32 i; @@ -133,7 +133,7 @@ void PadMgr_RumbleControl(PadMgr* padMgr) { i = frame % 4; if (padMgr->ctrlrIsConnected[i] && (padMgr->padStatus[i].status & 1) && (padMgr->pakType[i] != 1)) { - var4 = osMotorInit(ctrlrQ, &padMgr->pfs[i], i); + var4 = osMotorInit(serialEventQueue, &padMgr->pfs[i], i); if (var4 == 0) { padMgr->pakType[i] = 1; @@ -156,15 +156,15 @@ void PadMgr_RumbleControl(PadMgr* padMgr) { } frame++; - PadMgr_UnlockSerialMesgQueue(padMgr, ctrlrQ); + PadMgr_UnlockSerialMesgQueue(padMgr, serialEventQueue); } void PadMgr_RumbleStop(PadMgr* padMgr) { s32 i; - OSMesgQueue* ctrlrQ = PadMgr_LockSerialMesgQueue(padMgr); + OSMesgQueue* serialEventQueue = PadMgr_LockSerialMesgQueue(padMgr); for (i = 0; i < 4; i++) { - if (osMotorInit(ctrlrQ, &padMgr->pfs[i], i) == 0) { + if (osMotorInit(serialEventQueue, &padMgr->pfs[i], i) == 0) { if ((gFaultMgr.msgId == 0) && (padMgr->rumbleOnFrames != 0)) { osSyncPrintf(VT_FGCOL(YELLOW)); // "Stop vibration pack" @@ -176,7 +176,7 @@ void PadMgr_RumbleStop(PadMgr* padMgr) { } } - PadMgr_UnlockSerialMesgQueue(padMgr, ctrlrQ); + PadMgr_UnlockSerialMesgQueue(padMgr, serialEventQueue); } void PadMgr_RumbleReset(PadMgr* padMgr) { @@ -265,23 +265,23 @@ void PadMgr_ProcessInputs(PadMgr* padMgr) { void PadMgr_HandleRetraceMsg(PadMgr* padMgr) { s32 i; - OSMesgQueue* queue = PadMgr_LockSerialMesgQueue(padMgr); + OSMesgQueue* serialEventQueue = PadMgr_LockSerialMesgQueue(padMgr); u32 mask; - osContStartReadData(queue); + osContStartReadData(serialEventQueue); if (padMgr->retraceCallback) { padMgr->retraceCallback(padMgr, padMgr->retraceCallbackValue); } - osRecvMesg(queue, NULL, OS_MESG_BLOCK); + osRecvMesg(serialEventQueue, NULL, OS_MESG_BLOCK); osContGetReadData(padMgr->pads); if (padMgr->preNMIShutdown) { bzero(padMgr->pads, sizeof(padMgr->pads)); } PadMgr_ProcessInputs(padMgr); - osContStartQuery(queue); - osRecvMesg(queue, NULL, OS_MESG_BLOCK); + osContStartQuery(serialEventQueue); + osRecvMesg(serialEventQueue, NULL, OS_MESG_BLOCK); osContGetQuery(padMgr->padStatus); - PadMgr_UnlockSerialMesgQueue(padMgr, queue); + PadMgr_UnlockSerialMesgQueue(padMgr, serialEventQueue); mask = 0; for (i = 0; i < 4; i++) { @@ -351,22 +351,22 @@ void PadMgr_RequestPadData(PadMgr* padMgr, Input* inputs, s32 mode) { } void PadMgr_ThreadEntry(PadMgr* padMgr) { - s16* mesg = NULL; + s16* msg = NULL; s32 exit; osSyncPrintf("コントローラスレッド実行開始\n"); // "Controller thread execution start" exit = false; while (!exit) { - if ((D_8012D280 > 2) && (padMgr->interruptMsgQ.validCount == 0)) { + if ((D_8012D280 > 2) && MQ_IS_EMPTY(&padMgr->interruptQueue)) { // "Waiting for controller thread event" osSyncPrintf("コントローラスレッドイベント待ち %lld\n", OS_CYCLES_TO_USEC(osGetTime())); } - osRecvMesg(&padMgr->interruptMsgQ, (OSMesg)&mesg, OS_MESG_BLOCK); - LogUtils_CheckNullPointer("msg", mesg, "../padmgr.c", 563); + osRecvMesg(&padMgr->interruptQueue, (OSMesg*)&msg, OS_MESG_BLOCK); + LogUtils_CheckNullPointer("msg", msg, "../padmgr.c", 563); - switch (*mesg) { + switch (*msg) { case OS_SC_RETRACE_MSG: if (D_8012D280 > 2) { osSyncPrintf("padmgr_HandleRetraceMsg START %lld\n", OS_CYCLES_TO_USEC(osGetTime())); @@ -393,19 +393,19 @@ void PadMgr_ThreadEntry(PadMgr* padMgr) { osSyncPrintf("コントローラスレッド実行終了\n"); // "Controller thread execution end" } -void PadMgr_Init(PadMgr* padMgr, OSMesgQueue* siIntMsgQ, IrqMgr* irqMgr, OSId id, OSPri priority, void* stack) { +void PadMgr_Init(PadMgr* padMgr, OSMesgQueue* serialEventQueue, IrqMgr* irqMgr, OSId id, OSPri priority, void* stack) { osSyncPrintf("パッドマネージャ作成 padmgr_Create()\n"); // "Pad Manager creation" bzero(padMgr, sizeof(PadMgr)); padMgr->irqMgr = irqMgr; - osCreateMesgQueue(&padMgr->interruptMsgQ, padMgr->interruptMsgBuf, 4); - IrqMgr_AddClient(padMgr->irqMgr, &padMgr->irqClient, &padMgr->interruptMsgQ); - osCreateMesgQueue(&padMgr->serialMsgQ, padMgr->serialMsgBuf, 1); - PadMgr_UnlockSerialMesgQueue(padMgr, siIntMsgQ); - osCreateMesgQueue(&padMgr->lockMsgQ, padMgr->lockMsgBuf, 1); + osCreateMesgQueue(&padMgr->interruptQueue, padMgr->interruptMsgBuf, ARRAY_COUNT(padMgr->interruptMsgBuf)); + IrqMgr_AddClient(padMgr->irqMgr, &padMgr->irqClient, &padMgr->interruptQueue); + osCreateMesgQueue(&padMgr->serialLockQueue, padMgr->serialLockMsgBuf, ARRAY_COUNT(padMgr->serialLockMsgBuf)); + PadMgr_UnlockSerialMesgQueue(padMgr, serialEventQueue); + osCreateMesgQueue(&padMgr->lockQueue, padMgr->lockMsgBuf, ARRAY_COUNT(padMgr->lockMsgBuf)); PadMgr_UnlockPadData(padMgr); - PadSetup_Init(siIntMsgQ, (u8*)&padMgr->validCtrlrsMask, padMgr->padStatus); + PadSetup_Init(serialEventQueue, (u8*)&padMgr->validCtrlrsMask, padMgr->padStatus); padMgr->nControllers = 4; osContSetCh(padMgr->nControllers); diff --git a/src/code/sched.c b/src/code/sched.c index 504ed4c710..cdf22616e4 100644 --- a/src/code/sched.c +++ b/src/code/sched.c @@ -82,12 +82,12 @@ void Sched_HandleReset(SchedContext* sc) { if (sc->curRSPTask != NULL) { LOG_TIME("(((u64)(now - graph_rsp_start_time)*(1000000LL/15625LL))/((62500000LL*3/4)/15625LL))", OS_CYCLES_TO_USEC(now - sRSPGFXStartTime), "../sched.c", 427); - osSendMesg(&sc->interruptQ, RSP_DONE_MSG, OS_MESG_NOBLOCK); + osSendMesg(&sc->interruptQueue, (OSMesg)RSP_DONE_MSG, OS_MESG_NOBLOCK); } if (sc->curRDPTask != NULL) { LOG_TIME("(((u64)(now - rdp_start_time)*(1000000LL/15625LL))/((62500000LL*3/4)/15625LL))", OS_CYCLES_TO_USEC(now - sRDPStartTime), "../sched.c", 431); - osSendMesg(&sc->interruptQ, RDP_DONE_MSG, OS_MESG_NOBLOCK); + osSendMesg(&sc->interruptQueue, (OSMesg)RDP_DONE_MSG, OS_MESG_NOBLOCK); } } } @@ -231,8 +231,8 @@ void func_800C8BC4(SchedContext* sc, OSScTask* task) { u32 Sched_IsComplete(SchedContext* sc, OSScTask* task) { if (!(task->state & (OS_SC_DP | OS_SC_SP))) { - if (task->msgQ != NULL) { - osSendMesg(task->msgQ, task->msg, OS_MESG_BLOCK); + if (task->msgQueue != NULL) { + osSendMesg(task->msgQueue, task->msg, OS_MESG_BLOCK); } if (task->flags & OS_SC_SWAPBUFFER) { @@ -292,10 +292,10 @@ void Sched_HandleEntry(SchedContext* sc) { OSScTask* nextRSP = NULL; OSScTask* nextRDP = NULL; s32 state; - OSMesg msg = NULL; + OSScTask* task = NULL; - while (osRecvMesg(&sc->cmdQ, &msg, OS_MESG_NOBLOCK) != -1) { - Sched_QueueTask(sc, msg); + while (osRecvMesg(&sc->cmdQueue, (OSMesg*)&task, OS_MESG_NOBLOCK) != -1) { + Sched_QueueTask(sc, task); } if (sc->doAudio != 0 && sc->curRSPTask != NULL) { @@ -425,22 +425,20 @@ void Sched_SendEntryMsg(SchedContext* sc) { osSyncPrintf("osScKickEntryMsg\n"); } - osSendMesg(&sc->interruptQ, ENTRY_MSG, OS_MESG_BLOCK); + osSendMesg(&sc->interruptQueue, (OSMesg)ENTRY_MSG, OS_MESG_BLOCK); } void Sched_ThreadEntry(void* arg) { - void* msg; + OSMesg msg = NULL; SchedContext* sc = (SchedContext*)arg; - msg = NULL; - while (true) { if (sLogScheduler) { // "%08d: standby" osSyncPrintf("%08d:待機中\n", (u32)OS_CYCLES_TO_USEC(osGetTime())); } - osRecvMesg(&sc->interruptQ, &msg, OS_MESG_BLOCK); + osRecvMesg(&sc->interruptQueue, &msg, OS_MESG_BLOCK); switch ((s32)msg) { case ENTRY_MSG: @@ -461,8 +459,6 @@ void Sched_ThreadEntry(void* arg) { } Sched_HandleRDPDone(sc); continue; - default: - break; } switch (((OSScMsg*)msg)->type) { case 1: @@ -481,11 +477,11 @@ void Sched_ThreadEntry(void* arg) { void Sched_Init(SchedContext* sc, void* stack, OSPri priority, UNK_TYPE arg3, UNK_TYPE arg4, IrqMgr* irqMgr) { bzero(sc, sizeof(SchedContext)); sc->unk_24C = 1; - osCreateMesgQueue(&sc->interruptQ, sc->intBuf, 8); - osCreateMesgQueue(&sc->cmdQ, sc->cmdMsgBuf, 8); - osSetEventMesg(OS_EVENT_SP, &sc->interruptQ, RSP_DONE_MSG); - osSetEventMesg(OS_EVENT_DP, &sc->interruptQ, RDP_DONE_MSG); - IrqMgr_AddClient(irqMgr, &sc->irqClient, &sc->interruptQ); - osCreateThread(&sc->thread, 5, Sched_ThreadEntry, sc, stack, priority); + osCreateMesgQueue(&sc->interruptQueue, sc->interruptMsgBuf, ARRAY_COUNT(sc->interruptMsgBuf)); + osCreateMesgQueue(&sc->cmdQueue, sc->cmdMsgBuf, ARRAY_COUNT(sc->cmdMsgBuf)); + osSetEventMesg(OS_EVENT_SP, &sc->interruptQueue, RSP_DONE_MSG); + osSetEventMesg(OS_EVENT_DP, &sc->interruptQueue, RDP_DONE_MSG); + IrqMgr_AddClient(irqMgr, &sc->irqClient, &sc->interruptQueue); + osCreateThread(&sc->thread, THREAD_ID_SCHED, Sched_ThreadEntry, sc, stack, priority); osStartThread(&sc->thread); } diff --git a/src/code/z_jpeg.c b/src/code/z_jpeg.c index 6f57e12ace..fbb4dc6f60 100644 --- a/src/code/z_jpeg.c +++ b/src/code/z_jpeg.c @@ -55,12 +55,12 @@ void Jpeg_ScheduleDecoderTask(JpegContext* ctx) { ctx->scTask.next = NULL; ctx->scTask.flags = OS_SC_NEEDS_RSP; - ctx->scTask.msgQ = &ctx->mq; + ctx->scTask.msgQueue = &ctx->mq; ctx->scTask.msg = NULL; ctx->scTask.framebuffer = NULL; ctx->scTask.list.t = sJpegTask; - osSendMesg(&gSchedContext.cmdQ, (OSMesg)&ctx->scTask, OS_MESG_BLOCK); + osSendMesg(&gSchedContext.cmdQueue, (OSMesg)&ctx->scTask, OS_MESG_BLOCK); Sched_SendEntryMsg(&gSchedContext); // osScKickEntryMsg osRecvMesg(&ctx->mq, NULL, OS_MESG_BLOCK); } diff --git a/src/code/z_kankyo.c b/src/code/z_kankyo.c index 5bc7a99a1f..68593c156b 100644 --- a/src/code/z_kankyo.c +++ b/src/code/z_kankyo.c @@ -731,11 +731,11 @@ void Environment_UpdateSkybox(u8 skyboxId, EnvironmentContext* envCtx, SkyboxCon } if ((envCtx->skyboxDmaState == SKYBOX_DMA_FILE1_START) || (envCtx->skyboxDmaState == SKYBOX_DMA_FILE2_START)) { - if (osRecvMesg(&envCtx->loadQueue, 0, OS_MESG_NOBLOCK) == 0) { + if (osRecvMesg(&envCtx->loadQueue, NULL, OS_MESG_NOBLOCK) == 0) { envCtx->skyboxDmaState++; } } else if (envCtx->skyboxDmaState >= SKYBOX_DMA_FILE1_DONE) { - if (osRecvMesg(&envCtx->loadQueue, 0, OS_MESG_NOBLOCK) == 0) { + if (osRecvMesg(&envCtx->loadQueue, NULL, OS_MESG_NOBLOCK) == 0) { envCtx->skyboxDmaState = SKYBOX_DMA_INACTIVE; } } diff --git a/src/code/z_msgevent.c b/src/code/z_msgevent.c index 267180e1f1..5cca1c7179 100644 --- a/src/code/z_msgevent.c +++ b/src/code/z_msgevent.c @@ -1,7 +1,6 @@ #include "global.h" void MsgEvent_SendNullTask(void) { - s32 pad[4]; OSScTask task; OSMesgQueue queue; OSMesg msg; @@ -9,12 +8,12 @@ void MsgEvent_SendNullTask(void) { task.next = NULL; task.flags = OS_SC_RCP_MASK; - task.msgQ = &queue; + task.msgQueue = &queue; task.msg = NULL; task.framebuffer = NULL; task.list.t.type = M_NULTASK; - osCreateMesgQueue(task.msgQ, &msg, 1); - osSendMesg(&gSchedContext.cmdQ, &task, OS_MESG_BLOCK); + osCreateMesgQueue(task.msgQueue, &msg, 1); + osSendMesg(&gSchedContext.cmdQueue, (OSMesg)&task, OS_MESG_BLOCK); Sched_SendEntryMsg(&gSchedContext); osRecvMesg(&queue, NULL, OS_MESG_BLOCK); } diff --git a/src/code/z_player_lib.c b/src/code/z_player_lib.c index 2c7b07c6a2..30ea4a4acd 100644 --- a/src/code/z_player_lib.c +++ b/src/code/z_player_lib.c @@ -1307,7 +1307,7 @@ void Player_DrawGetItemImpl(GlobalContext* globalCtx, Player* this, Vec3f* refPo } void Player_DrawGetItem(GlobalContext* globalCtx, Player* this) { - if (!this->giObjectLoading || !osRecvMesg(&this->giObjectLoadQueue, NULL, OS_MESG_NOBLOCK)) { + if (!this->giObjectLoading || osRecvMesg(&this->giObjectLoadQueue, NULL, OS_MESG_NOBLOCK) == 0) { this->giObjectLoading = false; Player_DrawGetItemImpl(globalCtx, this, &sGetItemRefPos, ABS(this->unk_862)); } diff --git a/src/code/z_room.c b/src/code/z_room.c index 9487ac866a..e03ecfebe4 100644 --- a/src/code/z_room.c +++ b/src/code/z_room.c @@ -569,7 +569,7 @@ s32 func_8009728C(GlobalContext* globalCtx, RoomContext* roomCtx, s32 roomNum) { s32 func_800973FC(GlobalContext* globalCtx, RoomContext* roomCtx) { if (roomCtx->status == 1) { - if (!osRecvMesg(&roomCtx->loadQueue, NULL, OS_MESG_NOBLOCK)) { + if (osRecvMesg(&roomCtx->loadQueue, NULL, OS_MESG_NOBLOCK) == 0) { roomCtx->status = 0; roomCtx->curRoom.segment = roomCtx->unk_34; gSegments[3] = VIRTUAL_TO_PHYSICAL(roomCtx->unk_34); diff --git a/src/code/z_scene.c b/src/code/z_scene.c index b0b5b7c637..5cf17d0ebf 100644 --- a/src/code/z_scene.c +++ b/src/code/z_scene.c @@ -91,7 +91,7 @@ void Object_UpdateBank(ObjectContext* objectCtx) { osSyncPrintf("OBJECT EXCHANGE BANK-%2d SIZE %8.3fK SEG=%08x\n", i, size / 1024.0f, status->segment); DmaMgr_SendRequest2(&status->dmaRequest, status->segment, objectFile->vromStart, size, 0, &status->loadQueue, NULL, "../z_scene.c", 266); - } else if (!osRecvMesg(&status->loadQueue, NULL, OS_MESG_NOBLOCK)) { + } else if (osRecvMesg(&status->loadQueue, NULL, OS_MESG_NOBLOCK) == 0) { status->id = -status->id; } } diff --git a/src/code/z_ss_sram.c b/src/code/z_ss_sram.c index 847482d195..3a4251a1c4 100644 --- a/src/code/z_ss_sram.c +++ b/src/code/z_ss_sram.c @@ -4,7 +4,7 @@ typedef struct { /* 0x00 */ OSPiHandle piHandle; /* 0x74 */ OSIoMesg ioMesg; - /* 0x8C */ OSMesgQueue mesgQ; + /* 0x8C */ OSMesgQueue msgQueue; } SsSramContext; // size = 0xA4 SsSramContext sSsSramContext = { 0 }; @@ -32,20 +32,20 @@ void SsSram_Init(u32 addr, u8 handleType, u8 handleDomain, u8 handleLatency, u8 __osRestoreInt(prevInt); sSsSramContext.ioMesg.hdr.pri = OS_MESG_PRI_NORMAL; - sSsSramContext.ioMesg.hdr.retQueue = &sSsSramContext.mesgQ; + sSsSramContext.ioMesg.hdr.retQueue = &sSsSramContext.msgQueue; sSsSramContext.ioMesg.devAddr = addr; } } void SsSram_Dma(void* dramAddr, size_t size, s32 direction) { - OSMesg mesg; + OSMesg msg; - osCreateMesgQueue(&sSsSramContext.mesgQ, &mesg, 1); + osCreateMesgQueue(&sSsSramContext.msgQueue, &msg, 1); sSsSramContext.ioMesg.dramAddr = dramAddr; sSsSramContext.ioMesg.size = size; osWritebackDCache(dramAddr, size); osEPiStartDma(&sSsSramContext.piHandle, &sSsSramContext.ioMesg, direction); - osRecvMesg(&sSsSramContext.mesgQ, &mesg, OS_MESG_BLOCK); + osRecvMesg(&sSsSramContext.msgQueue, &msg, OS_MESG_BLOCK); osInvalDCache(dramAddr, size); } diff --git a/src/libultra/io/contramwrite.c b/src/libultra/io/contramwrite.c index e27c032278..d8fb594e95 100644 --- a/src/libultra/io/contramwrite.c +++ b/src/libultra/io/contramwrite.c @@ -44,10 +44,10 @@ s32 __osContRamWrite(OSMesgQueue* mq, s32 channel, u16 address, u8* buffer, s32 ret = __osSiRawStartDma(OS_WRITE, &gPifMempakBuf); crc = __osContDataCrc(buffer); - osRecvMesg(mq, (OSMesg*)NULL, OS_MESG_BLOCK); + osRecvMesg(mq, NULL, OS_MESG_BLOCK); ret = __osSiRawStartDma(OS_READ, &gPifMempakBuf); - osRecvMesg(mq, (OSMesg*)NULL, OS_MESG_BLOCK); + osRecvMesg(mq, NULL, OS_MESG_BLOCK); ret = ((((__OSContRamHeader*)ptr)->rxsize & 0xC0) >> 4); if (!ret) { diff --git a/src/libultra/io/controller.c b/src/libultra/io/controller.c index 5b44e01123..bb13787ed3 100644 --- a/src/libultra/io/controller.c +++ b/src/libultra/io/controller.c @@ -5,7 +5,7 @@ u8 __osContLastPoll; u8 __osMaxControllers; // always 4 OSTimer __osEepromTimer; -OSMesgQueue __osEepromTimerMsgQ; +OSMesgQueue __osEepromTimerMsgQueue; OSMesg __osEepromTimerMsg; u32 gOSContInitialized = 0; @@ -13,7 +13,7 @@ u32 gOSContInitialized = 0; #define HALF_SECOND OS_USEC_TO_CYCLES(500000) s32 osContInit(OSMesgQueue* mq, u8* ctlBitfield, OSContStatus* status) { - OSMesg mesg; + OSMesg msg; s32 ret = 0; OSTime currentTime; OSTimer timer; @@ -26,20 +26,20 @@ s32 osContInit(OSMesgQueue* mq, u8* ctlBitfield, OSContStatus* status) { gOSContInitialized = 1; currentTime = osGetTime(); if (HALF_SECOND > currentTime) { - osCreateMesgQueue(&timerqueue, &mesg, 1); - osSetTimer(&timer, HALF_SECOND - currentTime, 0, &timerqueue, &mesg); - osRecvMesg(&timerqueue, &mesg, OS_MESG_BLOCK); + osCreateMesgQueue(&timerqueue, &msg, 1); + osSetTimer(&timer, HALF_SECOND - currentTime, 0, &timerqueue, &msg); + osRecvMesg(&timerqueue, &msg, OS_MESG_BLOCK); } __osMaxControllers = MAXCONTROLLERS; __osPackRequestData(CONT_CMD_REQUEST_STATUS); ret = __osSiRawStartDma(OS_WRITE, &__osPifInternalBuff); - osRecvMesg(mq, &mesg, OS_MESG_BLOCK); + osRecvMesg(mq, &msg, OS_MESG_BLOCK); ret = __osSiRawStartDma(OS_READ, &__osPifInternalBuff); - osRecvMesg(mq, &mesg, OS_MESG_BLOCK); + osRecvMesg(mq, &msg, OS_MESG_BLOCK); __osContGetInitData(ctlBitfield, status); __osContLastPoll = CONT_CMD_REQUEST_STATUS; __osSiCreateAccessQueue(); - osCreateMesgQueue(&__osEepromTimerMsgQ, &__osEepromTimerMsg, 1); + osCreateMesgQueue(&__osEepromTimerMsgQueue, &__osEepromTimerMsg, 1); return ret; } diff --git a/src/libultra/io/devmgr.c b/src/libultra/io/devmgr.c index 7f8975a715..9380902c6b 100644 --- a/src/libultra/io/devmgr.c +++ b/src/libultra/io/devmgr.c @@ -15,7 +15,7 @@ void __osDevMgrMain(void* arg) { ioMesg = NULL; while (true) { - osRecvMesg(arg0->cmdQueue, (OSMesg)&ioMesg, OS_MESG_BLOCK); + osRecvMesg(arg0->cmdQueue, (OSMesg*)&ioMesg, OS_MESG_BLOCK); if ((ioMesg->piHandle != NULL) && (ioMesg->piHandle->type == DEVICE_TYPE_64DD) && ((ioMesg->piHandle->transferInfo.cmdType == 0) || (ioMesg->piHandle->transferInfo.cmdType == 1))) { transfer = &ioMesg->piHandle->transferInfo; @@ -46,7 +46,7 @@ void __osDevMgrMain(void* arg) { HW_REG(PI_STATUS_REG, u32) = PI_STATUS_CLEAR_INTR; __osSetGlobalIntMask(0x00100C01); } - osSendMesg(ioMesg->hdr.retQueue, ioMesg, OS_MESG_NOBLOCK); + osSendMesg(ioMesg->hdr.retQueue, (OSMesg)ioMesg, OS_MESG_NOBLOCK); if ((phi_s2 != 1) || (ioMesg->piHandle->transferInfo.block[0].errStatus != 0)) { break; @@ -55,7 +55,7 @@ void __osDevMgrMain(void* arg) { phi_s2 = 0; } - osSendMesg(arg0->acccessQueue, 0, OS_MESG_NOBLOCK); + osSendMesg(arg0->acccessQueue, NULL, OS_MESG_NOBLOCK); if (ioMesg->piHandle->transferInfo.blockNum == 1) { osYieldThread(); } @@ -80,7 +80,7 @@ void __osDevMgrMain(void* arg) { ioMesg->size); break; case OS_MESG_TYPE_LOOPBACK: - osSendMesg(ioMesg->hdr.retQueue, ioMesg, OS_MESG_NOBLOCK); + osSendMesg(ioMesg->hdr.retQueue, (OSMesg)ioMesg, OS_MESG_NOBLOCK); phi_s0 = -1; break; default: @@ -90,7 +90,7 @@ void __osDevMgrMain(void* arg) { if (phi_s0 == 0) { osRecvMesg(arg0->eventQueue, &sp70, OS_MESG_BLOCK); - osSendMesg(ioMesg->hdr.retQueue, ioMesg, OS_MESG_NOBLOCK); + osSendMesg(ioMesg->hdr.retQueue, (OSMesg)ioMesg, OS_MESG_NOBLOCK); osSendMesg(arg0->acccessQueue, NULL, OS_MESG_NOBLOCK); } } diff --git a/src/libultra/io/piacs.c b/src/libultra/io/piacs.c index 681e5f0aeb..0ffa3448c4 100644 --- a/src/libultra/io/piacs.c +++ b/src/libultra/io/piacs.c @@ -1,24 +1,23 @@ #include "global.h" -u32 __osPiAccessQueueEnabled = 0; - -OSMesg piAccessBuf; +u32 __osPiAccessQueueEnabled = false; +OSMesg piAccessBuf[1]; OSMesgQueue __osPiAccessQueue; void __osPiCreateAccessQueue(void) { - __osPiAccessQueueEnabled = 1; - osCreateMesgQueue(&__osPiAccessQueue, &piAccessBuf, 1); + __osPiAccessQueueEnabled = true; + osCreateMesgQueue(&__osPiAccessQueue, piAccessBuf, ARRAY_COUNT(piAccessBuf)); osSendMesg(&__osPiAccessQueue, NULL, OS_MESG_NOBLOCK); } void __osPiGetAccess(void) { - OSMesg mesg; + OSMesg msg; if (!__osPiAccessQueueEnabled) { __osPiCreateAccessQueue(); } - osRecvMesg(&__osPiAccessQueue, &mesg, OS_MESG_BLOCK); + osRecvMesg(&__osPiAccessQueue, &msg, OS_MESG_BLOCK); } void __osPiRelAccess(void) { diff --git a/src/libultra/io/pimgr.c b/src/libultra/io/pimgr.c index d69c76c471..e7b735e6b3 100644 --- a/src/libultra/io/pimgr.c +++ b/src/libultra/io/pimgr.c @@ -17,13 +17,13 @@ OSPiHandle* __osCurrentHandle[] = { &__Dom2SpeedParam, }; -void osCreatePiManager(OSPri pri, OSMesgQueue* cmdQ, OSMesg* cmdBuf, s32 cmdMsgCnt) { +void osCreatePiManager(OSPri pri, OSMesgQueue* cmdQueue, OSMesg* cmdBuf, s32 cmdMsgCnt) { u32 prevInt; OSPri newPri; OSPri currentPri; if (!__osPiDevMgr.initialized) { - osCreateMesgQueue(cmdQ, cmdBuf, cmdMsgCnt); + osCreateMesgQueue(cmdQueue, cmdBuf, cmdMsgCnt); osCreateMesgQueue(&piEventQueue, piEventBuf, 1); if (!__osPiAccessQueueEnabled) { __osPiCreateAccessQueue(); @@ -39,7 +39,7 @@ void osCreatePiManager(OSPri pri, OSMesgQueue* cmdQ, OSMesg* cmdBuf, s32 cmdMsgC prevInt = __osDisableInt(); __osPiDevMgr.initialized = true; - __osPiDevMgr.cmdQueue = cmdQ; + __osPiDevMgr.cmdQueue = cmdQueue; __osPiDevMgr.mgrThread = &piThread; __osPiDevMgr.eventQueue = &piEventQueue; __osPiDevMgr.acccessQueue = &__osPiAccessQueue; diff --git a/src/libultra/io/siacs.c b/src/libultra/io/siacs.c index 90dbe7e5d7..c814867bd8 100644 --- a/src/libultra/io/siacs.c +++ b/src/libultra/io/siacs.c @@ -1,24 +1,24 @@ #include "global.h" -OSMesg osSiMesgBuff[SIAccessQueueSize]; -OSMesgQueue gOSSiMessageQueue; -u32 gOSSiAccessQueueCreated = 0; +OSMesg siAccessBuf[1]; +OSMesgQueue __osSiAccessQueue; +u32 __osSiAccessQueueEnabled = false; void __osSiCreateAccessQueue(void) { - gOSSiAccessQueueCreated = 1; - osCreateMesgQueue(&gOSSiMessageQueue, &osSiMesgBuff[0], SIAccessQueueSize - 1); - osSendMesg(&gOSSiMessageQueue, NULL, OS_MESG_NOBLOCK); + __osSiAccessQueueEnabled = true; + osCreateMesgQueue(&__osSiAccessQueue, siAccessBuf, ARRAY_COUNT(siAccessBuf)); + osSendMesg(&__osSiAccessQueue, NULL, OS_MESG_NOBLOCK); } void __osSiGetAccess(void) { - OSMesg mesg; + OSMesg msg; - if (!gOSSiAccessQueueCreated) { + if (!__osSiAccessQueueEnabled) { __osSiCreateAccessQueue(); } - osRecvMesg(&gOSSiMessageQueue, &mesg, OS_MESG_BLOCK); + osRecvMesg(&__osSiAccessQueue, &msg, OS_MESG_BLOCK); } void __osSiRelAccess(void) { - osSendMesg(&gOSSiMessageQueue, NULL, OS_MESG_NOBLOCK); + osSendMesg(&__osSiAccessQueue, NULL, OS_MESG_NOBLOCK); } diff --git a/src/libultra/io/vimgr.c b/src/libultra/io/vimgr.c index 44b7212b54..f2ec481e12 100644 --- a/src/libultra/io/vimgr.c +++ b/src/libultra/io/vimgr.c @@ -4,7 +4,7 @@ OSThread viThread; STACK(viThreadStack, 0x1000); OSMesgQueue viEventQueue; -OSMesg viEventBuf[6]; +OSMesg viEventBuf[5]; OSIoMesg viRetraceMsg; OSIoMesg viCounterMsg; OSMgrArgs __osViDevMgr = { 0 }; @@ -20,7 +20,7 @@ void osCreateViManager(OSPri pri) { if (!__osViDevMgr.initialized) { __osTimerServicesInit(); __additional_scanline = 0; - osCreateMesgQueue(&viEventQueue, viEventBuf, 5); + osCreateMesgQueue(&viEventQueue, viEventBuf, ARRAY_COUNT(viEventBuf)); viRetraceMsg.hdr.type = OS_MESG_TYPE_VRETRACE; viRetraceMsg.hdr.pri = OS_MESG_PRI_NORMAL; viRetraceMsg.hdr.retQueue = NULL; @@ -59,7 +59,7 @@ void viMgrMain(void* vargs) { static u16 viRetrace; OSMgrArgs* args; u32 addTime; - OSIoMesg* mesg = NULL; + OSIoMesg* msg = NULL; u32 temp = 0; // always 0 viRetrace = __osViGetCurrentContext()->retraceCount; @@ -70,8 +70,8 @@ void viMgrMain(void* vargs) { args = (OSMgrArgs*)vargs; while (true) { - osRecvMesg(args->eventQueue, (OSMesg)&mesg, OS_MESG_BLOCK); - switch (mesg->hdr.type) { + osRecvMesg(args->eventQueue, (OSMesg*)&msg, OS_MESG_BLOCK); + switch (msg->hdr.type) { case OS_MESG_TYPE_VRETRACE: __osViSwapContext(); viRetrace--; diff --git a/src/libultra/os/createmesgqueue.c b/src/libultra/os/createmesgqueue.c index 87a4031f30..a85eadb0d7 100644 --- a/src/libultra/os/createmesgqueue.c +++ b/src/libultra/os/createmesgqueue.c @@ -1,8 +1,8 @@ #include "global.h" void osCreateMesgQueue(OSMesgQueue* mq, OSMesg* msg, s32 count) { - mq->mtqueue = (OSThread*)__osThreadTail; - mq->fullqueue = (OSThread*)__osThreadTail; + mq->mtqueue = (OSThread*)&__osThreadTail; + mq->fullqueue = (OSThread*)&__osThreadTail; mq->validCount = 0; mq->first = 0; mq->msgCount = count; diff --git a/src/libultra/os/createthread.c b/src/libultra/os/createthread.c index baed395259..90c0251602 100644 --- a/src/libultra/os/createthread.c +++ b/src/libultra/os/createthread.c @@ -1,8 +1,8 @@ #include "global.h" -OSThread* __osThreadTail[2] = { NULL, (OSThread*)OS_PRIORITY_THREADTAIL }; -OSThread* __osRunQueue = (OSThread*)__osThreadTail; -OSThread* __osActiveQueue = (OSThread*)__osThreadTail; +__OSThreadTail __osThreadTail = { NULL, OS_PRIORITY_THREADTAIL }; +OSThread* __osRunQueue = (OSThread*)&__osThreadTail; +OSThread* __osActiveQueue = (OSThread*)&__osThreadTail; OSThread* __osRunningThread = NULL; OSThread* __osFaultedThread = NULL; @@ -20,8 +20,8 @@ void osCreateThread(OSThread* thread, OSId id, void (*entry)(void*), void* arg, thread->context.ra = __osCleanupThread; mask = OS_IM_ALL; - thread->context.sr = (mask & OS_IM_CPU) | 2; - thread->context.rcp = (mask & RCP_IMASK) >> 16; + thread->context.sr = (mask & OS_IM_CPU) | SR_EXL; + thread->context.rcp = (mask & RCP_IMASK) >> RCP_IMASKSHIFT; thread->context.fpcsr = FPCSR_FS | FPCSR_EV; thread->fp = 0; thread->state = OS_STATE_STOPPED; diff --git a/src/libultra/os/jammesg.c b/src/libultra/os/jammesg.c index 5668c476e2..e0ca40fc68 100644 --- a/src/libultra/os/jammesg.c +++ b/src/libultra/os/jammesg.c @@ -3,7 +3,7 @@ s32 osJamMesg(OSMesgQueue* mq, OSMesg msg, s32 flag) { register u32 prevInt = __osDisableInt(); - while (mq->validCount >= mq->msgCount) { + while (MQ_IS_FULL(mq)) { if (flag == OS_MESG_BLOCK) { __osRunningThread->state = OS_STATE_WAITING; __osEnqueueAndYield(&mq->fullqueue); diff --git a/src/libultra/os/recvmesg.c b/src/libultra/os/recvmesg.c index 0f4c83cff8..48737c1c65 100644 --- a/src/libultra/os/recvmesg.c +++ b/src/libultra/os/recvmesg.c @@ -3,12 +3,12 @@ s32 osRecvMesg(OSMesgQueue* mq, OSMesg* msg, s32 flag) { register u32 prevInt = __osDisableInt(); - while (mq->validCount == 0) { + while (MQ_IS_EMPTY(mq)) { if (flag == OS_MESG_NOBLOCK) { __osRestoreInt(prevInt); return -1; } - __osRunningThread->state = 8; + __osRunningThread->state = OS_STATE_WAITING; __osEnqueueAndYield((OSThread**)mq); } diff --git a/src/libultra/os/sendmesg.c b/src/libultra/os/sendmesg.c index eafd9da8b3..df0bc2bee4 100644 --- a/src/libultra/os/sendmesg.c +++ b/src/libultra/os/sendmesg.c @@ -1,12 +1,12 @@ #include "global.h" -s32 osSendMesg(OSMesgQueue* mq, OSMesg mesg, s32 flag) { +s32 osSendMesg(OSMesgQueue* mq, OSMesg msg, s32 flag) { register u32 prevInt = __osDisableInt(); register u32 index; - while (mq->validCount >= mq->msgCount) { + while (MQ_IS_FULL(mq)) { if (flag == OS_MESG_BLOCK) { - __osRunningThread->state = 8; + __osRunningThread->state = OS_STATE_WAITING; __osEnqueueAndYield(&mq->fullqueue); } else { __osRestoreInt(prevInt); @@ -15,7 +15,7 @@ s32 osSendMesg(OSMesgQueue* mq, OSMesg mesg, s32 flag) { } index = (mq->first + mq->validCount) % mq->msgCount; - mq->msg[index] = mesg; + mq->msg[index] = msg; mq->validCount++; if (mq->mtqueue->next != NULL) { diff --git a/src/libultra/os/setthreadpri.c b/src/libultra/os/setthreadpri.c index 572d3495ae..a9a1b0eb6e 100644 --- a/src/libultra/os/setthreadpri.c +++ b/src/libultra/os/setthreadpri.c @@ -9,12 +9,12 @@ void osSetThreadPri(OSThread* thread, OSPri pri) { if (thread->priority != pri) { thread->priority = pri; - if (thread != __osRunningThread && thread->state != 1) { + if (thread != __osRunningThread && thread->state != OS_STATE_STOPPED) { __osDequeueThread(thread->queue, thread); __osEnqueueThread(thread->queue, thread); } if (__osRunningThread->priority < __osRunQueue->priority) { - __osRunningThread->state = 2; + __osRunningThread->state = OS_STATE_RUNNABLE; __osEnqueueAndYield(&__osRunQueue); } } diff --git a/src/libultra/os/startthread.c b/src/libultra/os/startthread.c index 80d1f25646..6594fd5ae5 100644 --- a/src/libultra/os/startthread.c +++ b/src/libultra/os/startthread.c @@ -4,16 +4,16 @@ void osStartThread(OSThread* thread) { register u32 prevInt = __osDisableInt(); switch (thread->state) { - case 8: - thread->state = 2; + case OS_STATE_WAITING: + thread->state = OS_STATE_RUNNABLE; __osEnqueueThread(&__osRunQueue, thread); break; - case 1: + case OS_STATE_STOPPED: if (thread->queue == NULL || thread->queue == &__osRunQueue) { - thread->state = 2; + thread->state = OS_STATE_RUNNABLE; __osEnqueueThread(&__osRunQueue, thread); } else { - thread->state = 8; + thread->state = OS_STATE_WAITING; __osEnqueueThread(thread->queue, thread); __osEnqueueThread(&__osRunQueue, __osPopThread(thread->queue)); } @@ -24,7 +24,7 @@ void osStartThread(OSThread* thread) { __osDispatchThread(); } else { if (__osRunningThread->priority < __osRunQueue->priority) { - __osRunningThread->state = 2; + __osRunningThread->state = OS_STATE_RUNNABLE; __osEnqueueAndYield(&__osRunQueue); } } diff --git a/src/libultra/os/stopthread.c b/src/libultra/os/stopthread.c index eebd8ce9b7..54a236b49b 100644 --- a/src/libultra/os/stopthread.c +++ b/src/libultra/os/stopthread.c @@ -5,19 +5,19 @@ void osStopThread(OSThread* thread) { register u32 state; if (thread == NULL) { - state = 4; + state = OS_STATE_RUNNING; } else { state = thread->state; } switch (state) { - case 4: - __osRunningThread->state = 1; + case OS_STATE_RUNNING: + __osRunningThread->state = OS_STATE_STOPPED; __osEnqueueAndYield(NULL); break; - case 2: - case 8: - thread->state = 1; + case OS_STATE_RUNNABLE: + case OS_STATE_WAITING: + thread->state = OS_STATE_STOPPED; __osDequeueThread(thread->queue, thread); break; }