sm64

A Super Mario 64 decompilation
Log | Files | Refs | README | LICENSE

__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 }