#ifndef _ULTRA64_MESSAGE_H_ #define _ULTRA64_MESSAGE_H_ #include "ultra64/types.h" #define OS_MESG_NOBLOCK 0 #define OS_MESG_BLOCK 1 typedef void* OSMesg; typedef u32 OSEvent; #define OS_NUM_EVENTS 15 #define OS_EVENT_SW1 0 /* CPU SW1 interrupt */ #define OS_EVENT_SW2 1 /* CPU SW2 interrupt */ #define OS_EVENT_CART 2 /* Cartridge interrupt: used by rmon */ #define OS_EVENT_COUNTER 3 /* Counter int: used by VI/Timer Mgr */ #define OS_EVENT_SP 4 /* SP task done interrupt */ #define OS_EVENT_SI 5 /* SI (controller) interrupt */ #define OS_EVENT_AI 6 /* AI interrupt */ #define OS_EVENT_VI 7 /* VI interrupt: used by VI/Timer Mgr */ #define OS_EVENT_PI 8 /* PI interrupt: used by PI Manager */ #define OS_EVENT_DP 9 /* DP full sync interrupt */ #define OS_EVENT_CPU_BREAK 10 /* CPU breakpoint: used by rmon */ #define OS_EVENT_SP_BREAK 11 /* SP breakpoint: used by rmon */ #define OS_EVENT_FAULT 12 /* CPU fault event: used by rmon */ #define OS_EVENT_THREADSTATUS 13 /* CPU thread status: used by rmon */ #define OS_EVENT_PRENMI 14 /* Pre NMI interrupt */ typedef struct OSMesgQueue { /* 0x00 */ OSThread* mtqueue; /* 0x04 */ OSThread* fullqueue; /* 0x08 */ s32 validCount; /* 0x0C */ s32 first; /* 0x10 */ s32 msgCount; /* 0x14 */ OSMesg* msg; } OSMesgQueue; // size = 0x18 #endif