5#include <lib/rvl/os/OSContext.h>
11#define OS_PRIORITY_MIN 0
12#define OS_PRIORITY_MAX 31
14#define OS_THREAD_STACK_MAGIC 0xDEADBABE
17 OS_THREAD_STATE_EXITED = 0,
18 OS_THREAD_STATE_READY = 1,
19 OS_THREAD_STATE_RUNNING = 2,
20 OS_THREAD_STATE_SLEEPING = 4,
21 OS_THREAD_STATE_MORIBUND = 8
24typedef enum { OS_THREAD_DETACHED = (1 << 0) } OSThreadFlag;
48 struct OSMutex* mutex;
58typedef void (*OSSwitchThreadCallback)(
OSThread* currThread,
60typedef void* (*OSThreadFunc)(
void* arg);
63OSSetSwitchThreadCallback(OSSwitchThreadCallback callback);
64void __OSThreadInit(
void);
65void OSSetCurrentThread(
OSThread* thread);
69int OSGetThreadPriority(
void);
70BOOL OSIsThreadTerminated(
OSThread* thread);
71s32 OSDisableScheduler(
void);
72s32 OSEnableScheduler(
void);
73s32 __OSGetEffectivePriority(
OSThread* thread);
74void __OSPromoteThread(
OSThread* thread, s32 prio);
75void __OSReschedule(
void);
76void OSYieldThread(
void);
77BOOL OSCreateThread(
OSThread* thread, OSThreadFunc func,
void* funcArg,
78 void* stackBegin, u32 stackSize, s32 prio, u16 flags);
80void OSCancelThread(
OSThread* thread);
81BOOL OSJoinThread(
OSThread* thread,
void* val);
82void OSDetachThread(
OSThread* thread);
84s32 OSSuspendThread(
OSThread* thread);
87BOOL OSSetThreadPriority(
OSThread* thread, s32 prio);
88void OSClearStack(u8 val);
89void OSSleepTicks(s64 ticks);