1#ifndef RVL_SDK_OS_THREAD_H
2#define RVL_SDK_OS_THREAD_H
3#include <revolution/OS/OSContext.h>
9#define OS_PRIORITY_MIN 0
10#define OS_PRIORITY_MAX 31
12#define OS_THREAD_STACK_MAGIC 0xDEADBABE
15 OS_THREAD_STATE_EXITED = 0,
16 OS_THREAD_STATE_READY = 1,
17 OS_THREAD_STATE_RUNNING = 2,
18 OS_THREAD_STATE_SLEEPING = 4,
19 OS_THREAD_STATE_MORIBUND = 8
22typedef enum { OS_THREAD_DETACHED = (1 << 0) } OSThreadFlag;
56typedef void (*OSSwitchThreadCallback)(
OSThread* currThread,
58typedef void* (*OSThreadFunc)(
void* arg);
61OSSetSwitchThreadCallback(OSSwitchThreadCallback callback);
62void __OSThreadInit(
void);
63void OSSetCurrentThread(
OSThread* thread);
67BOOL OSIsThreadTerminated(
OSThread* thread);
68s32 OSDisableScheduler(
void);
69s32 OSEnableScheduler(
void);
70s32 __OSGetEffectivePriority(
OSThread* thread);
71void __OSPromoteThread(
OSThread* thread, s32 prio);
72void __OSReschedule(
void);
73void OSYieldThread(
void);
74BOOL OSCreateThread(
OSThread* thread, OSThreadFunc func,
void* funcArg,
75 void* stackBegin, u32 stackSize, s32 prio, u16 flags);
77void OSCancelThread(
OSThread* thread);
78BOOL OSJoinThread(
OSThread* thread,
void* val);
79void OSDetachThread(
OSThread* thread);
81s32 OSSuspendThread(
OSThread* thread);
84BOOL OSSetThreadPriority(
OSThread* thread, s32 prio);
85void OSClearStack(u8 val);
86void OSSleepTicks(s64 ticks);