summaryrefslogtreecommitdiff
path: root/src/libultra_code_O2/__osSiCreateAccessQueue.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libultra_code_O2/__osSiCreateAccessQueue.c')
-rw-r--r--src/libultra_code_O2/__osSiCreateAccessQueue.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/libultra_code_O2/__osSiCreateAccessQueue.c b/src/libultra_code_O2/__osSiCreateAccessQueue.c
new file mode 100644
index 000000000..c46df56f6
--- /dev/null
+++ b/src/libultra_code_O2/__osSiCreateAccessQueue.c
@@ -0,0 +1,23 @@
+#include "global.h"
+
+OSMesg osSiMesgBuff[SIAccessQueueSize];
+OSMesgQueue gOSSiMessageQueue;
+u32 gOSSiAccessQueueCreated = 0;
+
+void __osSiCreateAccessQueue() {
+ gOSSiAccessQueueCreated = 1;
+ osCreateMesgQueue(&gOSSiMessageQueue, &osSiMesgBuff[0], SIAccessQueueSize - 1);
+ osSendMesg(&gOSSiMessageQueue, NULL, OS_MESG_NOBLOCK);
+}
+
+void __osSiGetAccess() {
+ OSMesg sp1c;
+ if (!gOSSiAccessQueueCreated) {
+ __osSiCreateAccessQueue();
+ }
+ osRecvMesg(&gOSSiMessageQueue, &sp1c, OS_MESG_BLOCK);
+}
+
+void __osSiRelAccess() {
+ osSendMesg(&gOSSiMessageQueue, NULL, OS_MESG_NOBLOCK);
+}