More documentation for IrqMgr (#1144)

* doc irqmgr

* Fix

* Format

* Review suggestions

* Fix

* Some more review

* Further changes
This commit is contained in:
Tharo
2022-03-13 23:22:14 +00:00
committed by GitHub
parent 61b864a89c
commit 93096a45b6
13 changed files with 242 additions and 161 deletions
-12
View File
@@ -1792,18 +1792,6 @@ void func_800D3178(UnkRumbleStruct* arg0);
void func_800D31A0(void);
void func_800D31F0(void);
void func_800D3210(void);
void IrqMgr_AddClient(IrqMgr* this, IrqMgrClient* c, OSMesgQueue* msgQ);
void IrqMgr_RemoveClient(IrqMgr* this, IrqMgrClient* c);
void IrqMgr_SendMesgForClient(IrqMgr* this, OSMesg msg);
void IrqMgr_JamMesgForClient(IrqMgr* this, OSMesg msg);
void IrqMgr_HandlePreNMI(IrqMgr* this);
void IrqMgr_CheckStack();
void IrqMgr_HandlePRENMI450(IrqMgr* this);
void IrqMgr_HandlePRENMI480(IrqMgr* this);
void IrqMgr_HandlePRENMI500(IrqMgr* this);
void IrqMgr_HandleRetrace(IrqMgr* this);
void IrqMgr_ThreadEntry(void* arg0);
void IrqMgr_Init(IrqMgr* this, void* stack, OSPri pri, u8 retraceCount);
void DebugArena_CheckPointer(void* ptr, u32 size, const char* name, const char* action);
void* DebugArena_Malloc(u32 size);
void* DebugArena_MallocDebug(u32 size, const char* file, s32 line);
+18 -2
View File
@@ -3,6 +3,17 @@
#include "ultra64.h"
#define OS_SC_RETRACE_MSG 1
#define OS_SC_DONE_MSG 2
#define OS_SC_NMI_MSG 3 // name is made up, 3 is OS_SC_RDP_DONE_MSG in the original sched.c
#define OS_SC_PRE_NMI_MSG 4
typedef enum {
IRQ_RESET_STATUS_IDLE,
IRQ_RESET_STATUS_PRENMI,
IRQ_RESET_STATUS_NMI
} IrqResetStatus;
typedef struct {
/* 0x00 */ s16 type;
/* 0x02 */ char misc[0x1E];
@@ -14,8 +25,8 @@ typedef struct IrqMgrClient {
} IrqMgrClient;
typedef struct {
/* 0x000 */ OSScMsg retraceMsg; // this apparently got moved from OSSched
/* 0x020 */ OSScMsg prenmiMsg; // this apparently got moved from OSSched
/* 0x000 */ OSScMsg retraceMsg;
/* 0x020 */ OSScMsg prenmiMsg;
/* 0x040 */ OSScMsg nmiMsg;
/* 0x060 */ OSMesgQueue queue;
/* 0x078 */ OSMesg msgBuf[8];
@@ -27,4 +38,9 @@ typedef struct {
/* 0x278 */ OSTime retraceTime;
} IrqMgr; // size = 0x280
void IrqMgr_Init(IrqMgr* irqMgr, void* stack, OSPri pri, u8 retraceCount);
void IrqMgr_AddClient(IrqMgr* irqMgr, IrqMgrClient* client, OSMesgQueue* msgQ);
void IrqMgr_RemoveClient(IrqMgr* irqMgr, IrqMgrClient* client);
#endif
+2 -1
View File
@@ -15,6 +15,7 @@
#define OS_PHYSICAL_TO_K0(x) (void*)(((u32)(x)+0x80000000))
#define OS_PHYSICAL_TO_K1(x) (void*)(((u32)(x)+0xA0000000))
#define OS_SEC_TO_CYCLES(n) OS_USEC_TO_CYCLES((n) * 1000 * 1000)
#define OS_MSEC_TO_CYCLES(n) OS_USEC_TO_CYCLES((n) * 1000)
#define OS_SEC_TO_CYCLES(n) OS_MSEC_TO_CYCLES((n) * 1000)
#endif
+7
View File
@@ -36,4 +36,11 @@ typedef struct OSMesgQueue {
/* 0x14 */ OSMesg* msg;
} OSMesgQueue; // size = 0x18
/* Get count of valid messages in queue */
#define MQ_GET_COUNT(mq) ((mq)->validCount)
/* Determine if message queue is empty or full */
#define MQ_IS_EMPTY(mq) (MQ_GET_COUNT(mq) == 0)
#define MQ_IS_FULL(mq) (MQ_GET_COUNT(mq) >= (mq)->msgCount)
#endif
+3
View File
@@ -31,4 +31,7 @@
#define VT_RST VT_SGR("")
#define VT_CLS VT_ED(2)
// ASCII BEL character, plays an alert tone
#define BEL '\a'
#endif
-5
View File
@@ -1587,11 +1587,6 @@ typedef struct {
// ========================
#define OS_SC_RETRACE_MSG 1
#define OS_SC_DONE_MSG 2
#define OS_SC_NMI_MSG 3 // name is made up, 3 is OS_SC_RDP_DONE_MSG in the original sched.c
#define OS_SC_PRE_NMI_MSG 4
#define OS_SC_DP 0x0001
#define OS_SC_SP 0x0002
#define OS_SC_YIELD 0x0010