SSBM Decomp
Loading...
Searching...
No Matches
OSThread.h
Go to the documentation of this file.
1#ifndef _DOLPHIN_OSTHREAD_H_
2#define _DOLPHIN_OSTHREAD_H_
3
5
6typedef s32 OSPriority;
7
8struct OSThread;
9struct OSMutex;
10struct OSMutexQueue;
11
12typedef struct OSThread OSThread;
13
14typedef struct OSThreadQueue
15{
16 struct OSThread *head;
17 struct OSThread *tail;
19
20typedef struct OSThreadLink
21{
22 struct OSThread *next;
23 struct OSThread *prev;
25
26typedef struct OSMutexQueue
27{
28 struct OSMutex *head;
29 struct OSMutex *tail;
31
32typedef struct OSMutexLink
33{
34 struct OSMutex *next;
35 struct OSMutex *prev;
37
38typedef struct OSThread
39{
40 /*0x000*/ struct 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*/ struct OSThreadQueue *queue;
48 /*0x2E0*/ struct OSThreadLink link;
49 /*0x2E8*/ struct OSThreadQueue queueJoin;
50 /*0x2F0*/ struct OSMutex *mutex;
51 /*0x2F4*/ struct OSMutexQueue queueMutex;
52 /*0x2FC*/ struct OSThreadLink linkActive;
53 /*0x304*/ u8 *stackBase;
54 /*0x308*/ u32 *stackEnd;
55} OSThread;
56
64
65#define OS_PRIORITY_MIN 0 // highest
66#define OS_PRIORITY_MAX 31 // lowest
67#define OS_PRIORITY_IDLE OS_PRIORITY_MAX
68
69#define OS_THREAD_ATTR_DETACH 0x0001u
70
71#define OS_THREAD_STACK_MAGIC 0xDEADBABE
72
83int OSCreateThread(struct OSThread * thread, void * (* func)(void *), void * param, void * stack, unsigned long stackSize, long priority, unsigned short attr);
84
85#define IsSuspended(suspend) (suspend > 0)
86
87#endif
s32 OSResumeThread(OSThread *thread)
OS_THREAD_STATE
Definition OSThread.h:58
@ OS_THREAD_STATE_MORIBUND
Definition OSThread.h:62
@ OS_THREAD_STATE_WAITING
Definition OSThread.h:61
@ OS_THREAD_STATE_READY
Definition OSThread.h:59
@ OS_THREAD_STATE_RUNNING
Definition OSThread.h:60
void OSWakeupThread(OSThreadQueue *queue)
OSThread * OSGetCurrentThread(void)
void OSSleepThread(OSThreadQueue *queue)
void OSCancelThread(OSThread *thread)
int OSCreateThread(struct OSThread *thread, void *(*func)(void *), void *param, void *stack, unsigned long stackSize, long priority, unsigned short attr)
s32 OSPriority
Definition OSThread.h:6
s32 OSDisableScheduler(void)
void OSInitThreadQueue(OSThreadQueue *queue)
s32 OSEnableScheduler(void)
long OSCheckActiveThreads(void)
s32 OSSuspendThread(OSThread *thread)
unsigned long u32
Definition types.h:9
unsigned short int u16
Definition types.h:7
signed long s32
Definition hsd_3B2B.h:1
unsigned char u8
Definition hsd_3B2B.h:2
void(* func)(void)
Definition state.c:134
Definition OSContext.h:138
Definition OSThread.h:27
struct OSMutex * tail
Definition OSThread.h:29
struct OSMutex * head
Definition OSThread.h:28
Definition OSMutex.h:11
Definition OSThread.h:15
struct OSThread * head
Definition OSThread.h:16
struct OSThread * tail
Definition OSThread.h:17
Definition OSThread.h:39
struct OSMutexQueue queueMutex
Definition OSThread.h:51
u16 state
Definition OSThread.h:41
OSPriority priority
Definition OSThread.h:44
struct OSThreadQueue queueJoin
Definition OSThread.h:49
OSPriority base
Definition OSThread.h:45
s32 suspend
Definition OSThread.h:43
u8 * stackBase
Definition OSThread.h:53
struct OSMutex * mutex
Definition OSThread.h:50
struct OSThreadQueue * queue
Definition OSThread.h:47
struct OSContext context
Definition OSThread.h:40
u32 * stackEnd
Definition OSThread.h:54
void * val
Definition OSThread.h:46
struct OSThreadLink linkActive
Definition OSThread.h:52
u16 attr
Definition OSThread.h:42
struct OSThreadLink link
Definition OSThread.h:48