Mario Kart 64
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 
21 typedef s32 OSPri;
22 typedef s32 OSId;
23 
24 typedef union
25 {
26  struct {f32 f_odd; f32 f_even;} f;
27 } __OSfp;
28 
29 typedef struct
30 {
31  /* registers */
32  /*0x20*/ u64 at, v0, v1, a0, a1, a2, a3;
33  /*0x58*/ u64 t0, t1, t2, t3, t4, t5, t6, t7;
34  /*0x98*/ u64 s0, s1, s2, s3, s4, s5, s6, s7;
35  /*0xD8*/ u64 t8, t9, gp, sp, s8, ra;
36  /*0x108*/ u64 lo, hi;
37  /*0x118*/ u32 sr, pc, cause, badvaddr, rcp;
38  /*0x12C*/ u32 fpcsr;
39  __OSfp fp0, fp2, fp4, fp6, fp8, fp10, fp12, fp14;
40  __OSfp fp16, fp18, fp20, fp22, fp24, fp26, fp28, fp30;
42 
43 typedef struct
44 {
49 
50 typedef struct OSThread_s
51 {
52  /*0x00*/ struct OSThread_s *next;
53  /*0x04*/ OSPri priority;
54  /*0x08*/ struct OSThread_s **queue;
55  /*0x0C*/ struct OSThread_s *tlnext;
56  /*0x10*/ u16 state;
57  /*0x12*/ u16 flags;
58  /*0x14*/ OSId id;
59  /*0x18*/ int fp;
63 
64 
65 /* Functions */
66 
67 void osCreateThread(OSThread *thread, OSId id, void (*entry)(void *),
68  void *arg, void *sp, OSPri pri);
71 void osSetThreadPri(OSThread *thread, OSPri pri);
72 void osStartThread(OSThread *thread);
73 void osStopThread(OSThread *thread);
74 
75 #endif
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:11
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:51
u16 flags
Definition: os_thread.h:57
OSPri priority
Definition: os_thread.h:53
__OSThreadprofile_s * thprof
Definition: os_thread.h:60
__OSThreadContext context
Definition: os_thread.h:61
struct OSThread_s ** queue
Definition: os_thread.h:54
struct OSThread_s * next
Definition: os_thread.h:52
struct OSThread_s * tlnext
Definition: os_thread.h:55
OSId id
Definition: os_thread.h:58
int fp
Definition: os_thread.h:59
u16 state
Definition: os_thread.h:56
Definition: os_thread.h:30
__OSfp fp16
Definition: os_thread.h:40
__OSfp fp0
Definition: os_thread.h:39
u32 badvaddr
Definition: os_thread.h:37
u64 hi
Definition: os_thread.h:36
u64 s0
Definition: os_thread.h:34
u64 a0
Definition: os_thread.h:32
u32 fpcsr
Definition: os_thread.h:38
u64 t0
Definition: os_thread.h:33
u64 gp
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
signed int s32
Definition: ultratypes.h:15
unsigned int u32
Definition: ultratypes.h:16
signed char s8
Definition: ultratypes.h:11
float f32
Definition: ultratypes.h:32
unsigned short int u16
Definition: ultratypes.h:14
Definition: os_thread.h:25