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 struct OSThread* head;
16 struct OSThread* tail;
18
19typedef struct OSThreadLink {
20 struct OSThread* next;
21 struct OSThread* prev;
23
24typedef struct OSMutexQueue {
25 struct OSMutex* head;
26 struct OSMutex* tail;
28
29typedef struct OSMutexLink {
30 struct OSMutex* next;
31 struct OSMutex* prev;
33
34typedef struct OSThread {
35 /*0x000*/ struct OSContext context;
36 /*0x2C8*/ u16 state;
37 /*0x2CA*/ u16 attr;
38 /*0x2CC*/ s32 suspend;
40 /*0x2D4*/ OSPriority base;
41 /*0x2D8*/ void* val;
42 /*0x2DC*/ struct OSThreadQueue* queue;
43 /*0x2E0*/ struct OSThreadLink link;
44 /*0x2E8*/ struct OSThreadQueue queueJoin;
45 /*0x2F0*/ struct OSMutex* mutex;
46 /*0x2F4*/ struct OSMutexQueue queueMutex;
47 /*0x2FC*/ struct OSThreadLink linkActive;
48 /*0x304*/ u8* stackBase;
49 /*0x308*/ u32* stackEnd;
50} OSThread;
51
58
59#define OS_PRIORITY_MIN 0 // highest
60#define OS_PRIORITY_MAX 31 // lowest
61#define OS_PRIORITY_IDLE OS_PRIORITY_MAX
62
63#define OS_THREAD_ATTR_DETACH 0x0001u
64
65#define OS_THREAD_STACK_MAGIC 0xDEADBABE
66
68void OSSleepThread(OSThreadQueue* queue);
69void OSWakeupThread(OSThreadQueue* queue);
72void OSCancelThread(OSThread* thread);
76long OSCheckActiveThreads(void);
77int OSCreateThread(struct OSThread* thread, void* (*func)(void*), void* param,
78 void* stack, unsigned long stackSize, long priority,
79 unsigned short attr);
80
81#define IsSuspended(suspend) (suspend > 0)
82
83#endif
OS_THREAD_STATE
Definition OSThread.h:52
@ OS_THREAD_STATE_MORIBUND
Definition OSThread.h:56
@ OS_THREAD_STATE_WAITING
Definition OSThread.h:55
@ OS_THREAD_STATE_READY
Definition OSThread.h:53
@ OS_THREAD_STATE_RUNNING
Definition OSThread.h:54
void OSWakeupThread(OSThreadQueue *queue)
Definition OSThread.c:704
void OSSleepThread(OSThreadQueue *queue)
Definition OSThread.c:679
void OSCancelThread(OSThread *thread)
Definition OSThread.c:523
int OSCreateThread(struct OSThread *thread, void *(*func)(void *), void *param, void *stack, unsigned long stackSize, long priority, unsigned short attr)
Definition OSThread.c:439
s32 OSPriority
Definition OSThread.h:6
OSThread * OSGetCurrentThread(void)
Definition OSThread.c:174
s32 OSDisableScheduler(void)
Definition OSThread.c:217
void OSInitThreadQueue(OSThreadQueue *queue)
Definition OSThread.c:169
s32 OSResumeThread(OSThread *thread)
Definition OSThread.c:609
s32 OSEnableScheduler(void)
Definition OSThread.c:229
long OSCheckActiveThreads(void)
Definition OSThread.c:828
s32 OSSuspendThread(OSThread *thread)
Definition OSThread.c:643
signed int s32
Definition types.h:12
unsigned int u32
Definition types.h:13
unsigned short int u16
Definition types.h:7
unsigned char u8
Definition types.h:5
Definition OSContext.h:137
Definition OSThread.h:24
struct OSMutex * tail
Definition OSThread.h:26
struct OSMutex * head
Definition OSThread.h:25
Definition OSMutex.h:10
Definition OSThread.h:14
struct OSThread * head
Definition OSThread.h:15
struct OSThread * tail
Definition OSThread.h:16
Definition OSThread.h:34
struct OSMutexQueue queueMutex
Definition OSThread.h:46
u16 state
Definition OSThread.h:36
OSPriority priority
Definition OSThread.h:39
struct OSThreadQueue queueJoin
Definition OSThread.h:44
OSPriority base
Definition OSThread.h:40
s32 suspend
Definition OSThread.h:38
u8 * stackBase
Definition OSThread.h:48
struct OSMutex * mutex
Definition OSThread.h:45
struct OSThreadQueue * queue
Definition OSThread.h:42
struct OSContext context
Definition OSThread.h:35
u32 * stackEnd
Definition OSThread.h:49
void * val
Definition OSThread.h:41
struct OSThreadLink linkActive
Definition OSThread.h:47
u16 attr
Definition OSThread.h:37
struct OSThreadLink link
Definition OSThread.h:43