Mario Kart 64
Loading...
Searching...
No Matches
os_thread.h
Go to the documentation of this file.
1#ifndef _ULTRA64_THREAD_H_
2#define _ULTRA64_THREAD_H_
3#include "ultratypes.h"
4/* Recommended priorities for system threads */
5#define OS_PRIORITY_MAX 255
6#define OS_PRIORITY_VIMGR 254
7#define OS_PRIORITY_RMON 250
8#define OS_PRIORITY_RMONSPIN 200
9#define OS_PRIORITY_PIMGR 150
10#define OS_PRIORITY_SIMGR 140
11#define OS_PRIORITY_APPMAX 127
12#define OS_PRIORITY_IDLE 0
13
14#define OS_STATE_STOPPED 1
15#define OS_STATE_RUNNABLE 2
16#define OS_STATE_RUNNING 4
17#define OS_STATE_WAITING 8
18
19/* Types */
20
21typedef s32 OSPri;
22typedef s32 OSId;
23
24typedef union {
25 struct {
26 f32 f_odd;
27 f32 f_even;
28 } f;
29} __OSfp;
30
31typedef struct {
32 /* registers */
33 /*0x20*/ u64 at, v0, v1, a0, a1, a2, a3;
34 /*0x58*/ u64 t0, t1, t2, t3, t4, t5, t6, t7;
35 /*0x98*/ u64 s0, s1, s2, s3, s4, s5, s6, s7;
36 /*0xD8*/ u64 t8, t9, gp, sp, s8, ra;
37 /*0x108*/ u64 lo, hi;
38 /*0x118*/ u32 sr, pc, cause, badvaddr, rcp;
39 /*0x12C*/ u32 fpcsr;
43
44typedef struct {
45 u32 flag;
46 u32 count;
49
50typedef struct OSThread_s {
51 /*0x00*/ struct OSThread_s* next;
52 /*0x04*/ OSPri priority;
53 /*0x08*/ struct OSThread_s** queue;
54 /*0x0C*/ struct OSThread_s* tlnext;
55 /*0x10*/ u16 state;
56 /*0x12*/ u16 flags;
57 /*0x14*/ OSId id;
58 /*0x18*/ int fp;
62
63/* Functions */
64
65void osCreateThread(OSThread* thread, OSId id, void (*entry)(void*), void* arg, void* sp, OSPri pri);
71
72#endif
std::thread thread
Definition GameAudio.h:7
unsigned long long int u64
Definition llconv.c:2
void osStopThread(OSThread *thread)
void osSetThreadPri(OSThread *thread, OSPri pri)
Definition osSetThreadPri.c:3
OSPri osGetThreadPri(OSThread *thread)
Definition osGetThreadPri.c:3
void osCreateThread(OSThread *thread, OSId id, void(*entry)(void *), void *arg, void *sp, OSPri pri)
Definition osCreateThread.c:9
s32 OSId
Definition os_thread.h:22
void osStartThread(OSThread *thread)
Definition osStartThread.c:3
OSId osGetThreadId(OSThread *thread)
struct OSThread_s OSThread
s32 OSPri
Definition os_thread.h:21
Definition os_thread.h:50
u16 flags
Definition os_thread.h:56
OSPri priority
Definition os_thread.h:52
__OSThreadprofile_s * thprof
Definition os_thread.h:59
__OSThreadContext context
Definition os_thread.h:60
struct OSThread_s ** queue
Definition os_thread.h:53
struct OSThread_s * next
Definition os_thread.h:51
struct OSThread_s * tlnext
Definition os_thread.h:54
OSId id
Definition os_thread.h:57
int fp
Definition os_thread.h:58
u16 state
Definition os_thread.h:55
Definition os_thread.h:31
__OSfp fp10
Definition os_thread.h:40
__OSfp fp16
Definition os_thread.h:41
__OSfp fp0
Definition os_thread.h:40
__OSfp fp6
Definition os_thread.h:40
__OSfp fp12
Definition os_thread.h:40
u64 t3
Definition os_thread.h:34
u32 badvaddr
Definition os_thread.h:38
__OSfp fp18
Definition os_thread.h:41
u64 ra
Definition os_thread.h:36
__OSfp fp26
Definition os_thread.h:41
u64 hi
Definition os_thread.h:37
u64 t5
Definition os_thread.h:34
u64 t9
Definition os_thread.h:36
u64 s0
Definition os_thread.h:35
u64 s7
Definition os_thread.h:35
u64 t8
Definition os_thread.h:36
__OSfp fp2
Definition os_thread.h:40
u64 t2
Definition os_thread.h:34
u64 lo
Definition os_thread.h:37
u64 t4
Definition os_thread.h:34
u64 v1
Definition os_thread.h:33
u64 a2
Definition os_thread.h:33
u64 t6
Definition os_thread.h:34
u64 at
Definition os_thread.h:33
u64 s8
Definition os_thread.h:36
__OSfp fp20
Definition os_thread.h:41
u32 rcp
Definition os_thread.h:38
u64 a0
Definition os_thread.h:33
u32 cause
Definition os_thread.h:38
u32 fpcsr
Definition os_thread.h:39
u64 t7
Definition os_thread.h:34
u64 a1
Definition os_thread.h:33
u64 s2
Definition os_thread.h:35
u64 a3
Definition os_thread.h:33
__OSfp fp30
Definition os_thread.h:41
__OSfp fp8
Definition os_thread.h:40
u64 s4
Definition os_thread.h:35
u64 s1
Definition os_thread.h:35
u32 pc
Definition os_thread.h:38
__OSfp fp22
Definition os_thread.h:41
__OSfp fp14
Definition os_thread.h:40
u64 t1
Definition os_thread.h:34
__OSfp fp4
Definition os_thread.h:40
u64 t0
Definition os_thread.h:34
u32 sr
Definition os_thread.h:38
u64 s5
Definition os_thread.h:35
u64 gp
Definition os_thread.h:36
u64 v0
Definition os_thread.h:33
__OSfp fp24
Definition os_thread.h:41
__OSfp fp28
Definition os_thread.h:41
u64 s6
Definition os_thread.h:35
u64 sp
Definition os_thread.h:36
u64 s3
Definition os_thread.h:35
Definition os_thread.h:44
u64 time
Definition os_thread.h:47
u32 count
Definition os_thread.h:46
u32 flag
Definition os_thread.h:45
Definition os_thread.h:24
f32 f_odd
Definition os_thread.h:26
f32 f_even
Definition os_thread.h:27