Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
OSThread.h
Go to the documentation of this file.
1#ifndef _DOLPHIN_OSTHREAD_H_
2#define _DOLPHIN_OSTHREAD_H_
3
4#ifdef __REVOLUTION_SDK__
6#else
8
9#ifdef __cplusplus
10extern "C" {
11#endif
12
14
15typedef struct OSThread OSThread;
16typedef struct OSMutex OSMutex;
20typedef struct OSMutexLink OSMutexLink;
21
26
31
36
41
42struct OSThread {
43 /* 0x000 */ OSContext context;
44 /* 0x2C8 */ u16 state;
45 /* 0x2CA */ u16 attr;
46 /* 0x2CC */ s32 suspend;
47 /* 0x2D0 */ OSPriority priority;
48 /* 0x2D4 */ OSPriority base;
49 /* 0x2D8 */ void* val;
50 /* 0x2DC */ OSThreadQueue* queue;
51 /* 0x2E0 */ OSThreadLink link;
53 /* 0x2F0 */ OSMutex* mutex;
56 /* 0x304 */ u8* stackBase;
57 /* 0x308 */ u32* stackEnd;
58 /* 0x30C */ s32 error;
59 /* 0x310 */ void* specific[2];
60};
61
68
69#define OS_PRIORITY_MIN 0 // highest
70#define OS_PRIORITY_MAX 31 // lowest
71#define OS_PRIORITY_IDLE OS_PRIORITY_MAX
72
73#define OS_THREAD_SPECIFIC_MAX 2
74
75#define OS_THREAD_ATTR_DETACH 0x0001u
76
77#define OS_THREAD_STACK_MAGIC 0xDEADBABE
78
80typedef void (*OSIdleFunction)(void*);
81
83void OSSleepThread(OSThreadQueue* queue);
84void OSWakeupThread(OSThreadQueue* queue);
90void OSCancelThread(OSThread* thread);
91void OSClearStack(u8 val);
94void OSYieldThread(void);
95int OSCreateThread(OSThread* thread, void* (*func)(void*), void* param, void* stack, u32 stackSize, OSPriority priority, u16 attr);
96void OSExitThread(void* val);
97int OSJoinThread(OSThread* thread, void* val);
98void OSDetachThread(OSThread* thread);
99int OSSetThreadPriority(OSThread* thread, OSPriority priority);
101OSThread* OSSetIdleFunction(OSIdleFunction idleFunction, void* param, void* stack, u32 stackSize);
104void OSSetThreadSpecific(s32 index, void* ptr);
106
108
109#define IsSuspended(suspend) (suspend > 0)
110
111#ifdef __cplusplus
112}
113#endif
114
115#endif
116#endif
static u8 index[20][3]
Definition GXDraw.c:434
static const Attr & attr()
Definition d_a_obj_ladder.cpp:39
BOOL OSIsThreadSuspended(OSThread *thread)
Definition OSThread.c:184
BOOL OSIsThreadTerminated(OSThread *thread)
Definition OSThread.c:191
void OSExitThread(void *val)
Definition OSThread.c:473
s32 OSResumeThread(OSThread *thread)
Definition OSThread.c:584
OS_THREAD_STATE
Definition OSThread.h:62
@ OS_THREAD_STATE_MORIBUND
Definition OSThread.h:66
@ OS_THREAD_STATE_RUNNING
Definition OSThread.h:64
OSSwitchThreadCallback OSSetSwitchThreadCallback(OSSwitchThreadCallback callback)
Definition OSThread.c:100
void OSWakeupThread(OSThreadQueue *queue)
Definition OSThread.c:665
OSThread * OSSetIdleFunction(OSIdleFunction idleFunction, void *param, void *stack, u32 stackSize)
Definition OSThread.c:711
int OSJoinThread(OSThread *thread, void *val)
Definition OSThread.c:545
s32 OSCheckActiveThreads(void)
Definition OSThread.c:772
OSThread * OSGetCurrentThread(void)
Definition OSThread.c:174
void OSSleepThread(OSThreadQueue *queue)
Definition OSThread.c:648
void OSCancelThread(OSThread *thread)
Definition OSThread.c:505
void OSYieldThread(void)
Definition OSThread.c:406
s32 OSPriority
Definition OSThread.h:13
void OSDetachThread(OSThread *thread)
Definition OSThread.c:570
void OSClearStack(u8 val)
Definition OSThread.c:841
void OSSetThreadSpecific(s32 index, void *ptr)
Definition OSThread.c:853
s32 OSDisableScheduler(void)
Definition OSThread.c:210
int OSCreateThread(OSThread *thread, void *(*func)(void *), void *param, void *stack, u32 stackSize, OSPriority priority, u16 attr)
Definition OSThread.c:413
s32 OSGetThreadPriority(OSThread *thread)
Definition OSThread.c:707
void OSInitThreadQueue(OSThreadQueue *queue)
Definition OSThread.c:170
int OSSetThreadPriority(OSThread *thread, OSPriority priority)
Definition OSThread.c:685
s32 OSEnableScheduler(void)
Definition OSThread.c:221
OSThread * OSGetIdleFunction(void)
Definition OSThread.c:724
s32 OSSuspendThread(OSThread *thread)
Definition OSThread.c:615
void * OSGetThreadSpecific(s32 index)
Definition OSThread.c:864
int BOOL
Definition types.h:33
unsigned long u32
Definition types.h:12
unsigned short int u16
Definition types.h:10
signed long s32
Definition types.h:11
unsigned char u8
Definition types.h:8
u8 stack[4096]
Definition m_Do_dvd_thread.h:0
static void callback(u32 param_0)
Definition OSExec.c:308
@ OS_THREAD_STATE_WAITING
Definition OSThread.h:62
@ OS_THREAD_STATE_READY
Definition OSThread.h:60
void(* OSSwitchThreadCallback)(OSThread *, OSThread *)
Definition OSThread.h:76
void(* OSIdleFunction)(void *)
Definition OSThread.h:77
Definition OSContext.h:140
Definition OSThread.h:32
OSMutex * tail
Definition OSThread.h:34
OSMutex * head
Definition OSThread.h:33
Definition OSMutex.h:13
Definition OSThread.h:22
OSThread * head
Definition OSThread.h:23
OSThread * tail
Definition OSThread.h:24
Definition OSThread.h:42
OSThreadLink linkActive
Definition OSThread.h:55
u16 state
Definition OSThread.h:44
void * specific[2]
Definition OSThread.h:59
OSPriority priority
Definition OSThread.h:47
OSPriority base
Definition OSThread.h:48
s32 suspend
Definition OSThread.h:46
OSMutexQueue queueMutex
Definition OSThread.h:54
OSThreadQueue queueJoin
Definition OSThread.h:52
u32 * stackEnd
Definition OSThread.h:57
OSMutex * mutex
Definition OSThread.h:53
OSThreadQueue * queue
Definition OSThread.h:50
OSThreadLink link
Definition OSThread.h:51
s32 error
Definition OSThread.h:58
u16 attr
Definition OSThread.h:45
u8 * stackBase
Definition OSThread.h:56
void * val
Definition OSThread.h:49
OSContext context
Definition OSThread.h:43