mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-08-04 00:38:59 -04:00
4df8ccc871
* Reorganize files into libs/{dolphin,JSystem,PowerPC_EABI_Support,revolution,TRK_MINNOW_DOLPHIN}
* Update configure.py and project.py for new libs structure
* Refactor `#include <dolphin/x.h>` -> `<x.h>`
* Remove `__REVOLUTION_SDK__` forwards from dolphin
* Fix dolphin/ references in revolution
* Wrap `#include <dolphin.h>` in `!__REVOLUTION_SDK__`
* Always build TRK against dolphin headers
* Resolve revolution SDK header resolution issues
57 lines
1.1 KiB
C
57 lines
1.1 KiB
C
#include <dolphin/dolphin.h>
|
|
#include <dolphin/os.h>
|
|
|
|
void OSInitSemaphore(OSSemaphore* sem, s32 count) {
|
|
BOOL enabled = OSDisableInterrupts();
|
|
|
|
OSInitThreadQueue(&sem->queue);
|
|
sem->count = count;
|
|
OSRestoreInterrupts(enabled);
|
|
}
|
|
|
|
s32 OSWaitSemaphore(OSSemaphore* sem) {
|
|
BOOL enabled;
|
|
s32 count;
|
|
|
|
enabled = OSDisableInterrupts();
|
|
|
|
while((sem->count = (count = sem->count)) <= 0) {
|
|
OSSleepThread(&sem->queue);
|
|
}
|
|
|
|
sem->count--;
|
|
OSRestoreInterrupts(enabled);
|
|
return count;
|
|
}
|
|
|
|
s32 OSTryWaitSemaphore(OSSemaphore* sem) {
|
|
BOOL enabled;
|
|
s32 count;
|
|
|
|
enabled = OSDisableInterrupts();
|
|
count = sem->count;
|
|
if (sem->count > 0) {
|
|
sem->count = sem->count - 1;
|
|
}
|
|
|
|
OSRestoreInterrupts(enabled);
|
|
return count;
|
|
}
|
|
|
|
s32 OSSignalSemaphore(OSSemaphore* sem) {
|
|
BOOL enabled;
|
|
s32 count;
|
|
|
|
enabled = OSDisableInterrupts();
|
|
count = sem->count;
|
|
sem->count++;
|
|
|
|
OSWakeupThread(&sem->queue);
|
|
OSRestoreInterrupts(enabled);
|
|
return count;
|
|
}
|
|
|
|
s32 OSGetSemaphoreCount(OSSemaphore* sem) {
|
|
return sem->count;
|
|
}
|