Loading [MathJax]/extensions/MathZoom.js
Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
OSThread.h
Go to the documentation of this file.
1#ifndef _DOLPHIN_OSTHREAD_H_
2#define _DOLPHIN_OSTHREAD_H_
3
5
6#ifdef __cplusplus
7extern "C" {
8#endif
9
11
12typedef struct OSThread OSThread;
13typedef struct OSMutex OSMutex;
17typedef struct OSMutexLink OSMutexLink;
18
23
28
33
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;
50 /* 0x2F0 */ OSMutex* mutex;
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
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:59
@ 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
s32 OSPriority
Definition OSThread.h:10
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
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
static const Attr & attr()
Definition d_a_obj_ladder.cpp:135
u8 stack[4096]
Definition m_Do_dvd_thread.h:0
Definition OSContext.h:137
Definition OSThread.h:29
OSMutex * tail
Definition OSThread.h:31
OSMutex * head
Definition OSThread.h:30
Definition OSMutex.h:10
Definition OSThread.h:19
OSThread * tail
Definition OSThread.h:21
OSThread * head
Definition OSThread.h:20
Definition OSThread.h:39
OSThreadLink linkActive
Definition OSThread.h:52
u16 state
Definition OSThread.h:41
OSPriority priority
Definition OSThread.h:44
OSMutex * mutex
Definition OSThread.h:50
OSPriority base
Definition OSThread.h:45
s32 suspend
Definition OSThread.h:43
u8 * stackBase
Definition OSThread.h:53
OSMutexQueue queueMutex
Definition OSThread.h:51
OSThreadQueue queueJoin
Definition OSThread.h:49
u32 * stackEnd
Definition OSThread.h:54
void * val
Definition OSThread.h:46
OSThreadLink link
Definition OSThread.h:48
OSThreadQueue * queue
Definition OSThread.h:47
s32 error
Definition OSThread.h:55
u16 attr
Definition OSThread.h:42
void * specific[2]
Definition OSThread.h:56
OSContext context
Definition OSThread.h:40
int BOOL
Definition types.h:30
unsigned long u32
Definition types.h:9
unsigned short int u16
Definition types.h:7
signed long s32
Definition types.h:8
unsigned char u8
Definition types.h:5