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 _REVOLUTION_OSTHREAD_H_
2#define _REVOLUTION_OSTHREAD_H_
3
5
6#ifdef __cplusplus
7extern "C" {
8#endif
9
10typedef s32 OSPriority;
11
12typedef struct OSThread OSThread;
13typedef struct OSMutex OSMutex;
14typedef struct OSThreadQueue OSThreadQueue;
15typedef struct OSMutexQueue OSMutexQueue;
16typedef struct OSThreadLink OSThreadLink;
17typedef struct OSMutexLink OSMutexLink;
18
19struct OSThreadQueue {
22};
23
24struct OSThreadLink {
27};
28
29struct OSMutexQueue {
32};
33
34struct OSMutexLink {
37};
38
39struct OSThread {
40 /* 0x000 */ OSContext context;
41 /* 0x2C8 */ u16 state;
42 /* 0x2CA */ u16 attr;
43 /* 0x2CC */ s32 suspend;
44 /* 0x2D0 */ OSPriority priority;
45 /* 0x2D4 */ OSPriority base;
46 /* 0x2D8 */ void* val;
47 /* 0x2DC */ OSThreadQueue* queue;
48 /* 0x2E0 */ OSThreadLink link;
49 /* 0x2E8 */ OSThreadQueue queueJoin;
50 /* 0x2F0 */ OSMutex* mutex;
51 /* 0x2F4 */ OSMutexQueue queueMutex;
52 /* 0x2FC */ OSThreadLink linkActive;
53 /* 0x304 */ u8* stackBase;
54 /* 0x308 */ u32* stackEnd;
55 /* 0x30C */ s32 error;
56 /* 0x310 */ void* specific[2];
57};
58
65
66#define OS_PRIORITY_MIN 0 // highest
67#define OS_PRIORITY_MAX 31 // lowest
68#define OS_PRIORITY_IDLE OS_PRIORITY_MAX
69
70#define OS_THREAD_SPECIFIC_MAX 2
71
72#define OS_THREAD_ATTR_DETACH 0x0001u
73
74#define OS_THREAD_STACK_MAGIC 0xDEADBABE
75
77typedef void (*OSIdleFunction)(void*);
78
80void OSSleepThread(OSThreadQueue* queue);
81void OSWakeupThread(OSThreadQueue* queue);
87void OSCancelThread(OSThread* thread);
88void OSClearStack(u8 val);
91void OSYieldThread(void);
92int OSCreateThread(OSThread* thread, void* (*func)(void*), void* param, void* stack, u32 stackSize, OSPriority priority, u16 attr);
93void OSExitThread(void* val);
94int OSJoinThread(OSThread* thread, void* val);
95void OSDetachThread(OSThread* thread);
96int OSSetThreadPriority(OSThread* thread, OSPriority priority);
98OSThread* OSSetIdleFunction(OSIdleFunction idleFunction, void* param, void* stack, u32 stackSize);
101void OSSetThreadSpecific(s32 index, void* ptr);
103
105
106#define IsSuspended(suspend) (suspend > 0)
107
108#ifdef __cplusplus
109}
110#endif
111
112#endif
static u8 index[20][3]
Definition GXDraw.c:434
static const Attr & attr()
Definition d_a_obj_ladder.cpp:39
OS_THREAD_STATE
Definition OSThread.h:62
s32 OSPriority
Definition OSThread.h:13
s32 OSDisableScheduler(void)
Definition OSThread.c:210
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
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_MORIBUND
Definition OSThread.h:63
@ OS_THREAD_STATE_WAITING
Definition OSThread.h:62
@ OS_THREAD_STATE_READY
Definition OSThread.h:60
@ OS_THREAD_STATE_RUNNING
Definition OSThread.h:61
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
void(* OSSwitchThreadCallback)(OSThread *, OSThread *)
Definition OSThread.h:76
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
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
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
void(* OSIdleFunction)(void *)
Definition OSThread.h:77
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
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