__osPiCreateAccessQueue.c (687B)
1 #include "libultra_internal.h" 2 3 #include "macros.h" 4 5 #define PIAccessQueueSize 2 6 7 FORCE_BSS OSMesg osPiMesgBuff[PIAccessQueueSize]; 8 OSMesgQueue gOsPiMessageQueue; 9 u32 gOsPiAccessQueueCreated = 0; 10 11 void __osPiCreateAccessQueue(void) { 12 gOsPiAccessQueueCreated = 1; 13 osCreateMesgQueue(&gOsPiMessageQueue, &osPiMesgBuff[0], PIAccessQueueSize - 1); 14 osSendMesg(&gOsPiMessageQueue, NULL, OS_MESG_NOBLOCK); 15 } 16 17 void __osPiGetAccess(void) { 18 OSMesg sp1c; 19 if (!gOsPiAccessQueueCreated) { 20 __osPiCreateAccessQueue(); 21 } 22 osRecvMesg(&gOsPiMessageQueue, &sp1c, OS_MESG_BLOCK); 23 } 24 25 void __osPiRelAccess(void) { 26 osSendMesg(&gOsPiMessageQueue, NULL, OS_MESG_NOBLOCK); 27 }