Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
JKRThread.h
Go to the documentation of this file.
1#ifndef JKRTHREAD_H
2#define JKRTHREAD_H
3
5#include <dolphin/os.h>
6#include <dolphin/os.h>
7
14 char* name;
15};
16
17class JUTConsole;
18
23class JKRThread : public JKRDisposer {
24public:
25 class TLoad {
26 public:
28 clear();
29 mValid = false;
30 mThreadId = 0;
31 }
32
33 bool isValid() const { return mValid; }
34 u32 getCost() const { return mCost; }
35 u32 getCount() const { return mSwitchCount; }
36 s32 getId() const { return mThreadId; }
37
38 void setValid(bool valid) { mValid = valid; }
39 void setId(s32 id) { mThreadId = id; }
41
42 void resetCost() { mCost = 0; }
43 void resetCount() { mSwitchCount = 0; }
44
45 void incCount() { mSwitchCount++; }
47
48 void clear() {
49 resetCount();
50 resetCost();
51 mLastTick = 0;
52 }
53
54 private:
55 /* 0x00 */ bool mValid;
56 /* 0x01 */ u8 padding_0x61[3];
57 /* 0x04 */ u32 mCost;
58 /* 0x08 */ u32 mSwitchCount;
59 /* 0x0C */ OSTick mLastTick;
60 /* 0x10 */ s32 mThreadId;
61 };
62
63 JKRThread(u32 stack_size, int message_count, int param_3);
64 JKRThread(JKRHeap* heap, u32 stack_size, int message_count, int param_4);
65 JKRThread(OSThread* thread, int message_count);
66 virtual ~JKRThread();
67
68 /* vt[03] */ virtual void* run();
69
70 void setCommon_mesgQueue(JKRHeap* heap, int message_count);
71 void setCommon_heapSpecified(JKRHeap* heap, u32 stack_size, int param_3);
72
74 void* getStack() const { return mStackMemory; }
75 TLoad* getLoadInfo() { return &mLoadInfo; }
76 JKRHeap* getCurrentHeap() const { return mCurrentHeap; }
78
79 void setCurrentHeap(JKRHeap* heap) {
80 mCurrentHeap = heap ? heap : JKRHeap::getCurrentHeap();
81 }
82
85 return OSSendMessage(&mMessageQueue, message, OS_MESSAGE_NOBLOCK);
86 }
92 OSReceiveMessage(&mMessageQueue, &message, OS_MESSAGE_NOBLOCK);
93 return message;
94 }
95
98 BOOL rv = OSReceiveMessage(&mMessageQueue, &message, OS_MESSAGE_NOBLOCK);
99 if (received) {
100 *received = rv;
101 }
102 return message;
103 }
106 OSReceiveMessage(&mMessageQueue, &message, OS_MESSAGE_BLOCK);
107 return message;
108 }
110 OSJamMessage(&mMessageQueue, message, OS_MESSAGE_BLOCK);
111 }
112
113private:
114 /* 0x00 */ // vtable
115 /* 0x04 */ // JKRDisposer
117 /* 0x28 */ JKRHeap* mHeap;
120 /* 0x50 */ OSMessage* mMessages;
121 /* 0x54 */ s32 mMessageCount;
122 /* 0x58 */ void* mStackMemory;
123 /* 0x5C */ u32 mStackSize;
124 /* 0x60 */ TLoad mLoadInfo;
127
128public:
129 static void* start(void* param_1);
130 static JKRThread* searchThread(OSThread* thread);
132
134 // static u8 sThreadList[12];
135};
136
139
145public:
147 virtual void draw(JKRThreadName_* param_1, JUTConsole* param_2);
148 virtual void draw(JKRThreadName_* param_1);
149 virtual ~JKRThreadSwitch();
150
152
153 JKRThread* enter(JKRThread* param_1, int param_2);
154 static void callback(OSThread* param_1, OSThread* param_2);
155
156 static JKRThreadSwitch* getManager() { return sManager; }
157 static u32 getTotalCount() { return sTotalCount; }
158
159private:
165
166private:
167 /* 0x00 */ // vtable
168 /* 0x04 */ JKRHeap* mHeap;
169 /* 0x08 */ bool mSetNextHeap;
170 /* 0x09 */ u8 field_0x9[3];
171 /* 0x0C */ u32 field_0xC;
172 /* 0x10 */ u32 field_0x10;
173 /* 0x14 */ u8 field_0x14[4];
174 /* 0x18 */ s64 field_0x18;
175 /* 0x20 */ u32 field_0x20;
176 /* 0x24 */ u32 field_0x24;
177};
178
179struct JKRTask {
181 static u8 sEndMesgQueue[32];
182};
183
184#endif /* JKRTHREAD_H */
static u32 next
Definition CARDUnlock.c:29
void(* JKRThreadSwitch_PreCallback)(OSThread *current, OSThread *next)
Definition JKRThread.h:137
void(* JKRThreadSwitch_PostCallback)(OSThread *current, OSThread *next)
Definition JKRThread.h:138
Definition JKRDisposer.h:12
Definition JKRHeap.h:20
static JKRHeap * getCurrentHeap()
Definition JKRHeap.h:158
Definition JKRThread.h:144
JKRThreadSwitch(JKRHeap *)
Definition JKRThread.cpp:106
JKRThread * enter(JKRThread *param_1, int param_2)
Definition JKRThread.cpp:131
u8 field_0x9[3]
Definition JKRThread.h:170
s64 field_0x18
Definition JKRThread.h:174
u32 field_0xC
Definition JKRThread.h:171
static JKRThreadSwitch * sManager
Definition JKRThread.h:160
virtual ~JKRThreadSwitch()
Definition JKRThread.cpp:283
static JKRThreadSwitch_PostCallback mUserPostCallback
Definition JKRThread.h:164
u32 field_0x20
Definition JKRThread.h:175
bool mSetNextHeap
Definition JKRThread.h:169
virtual void draw(JKRThreadName_ *param_1, JUTConsole *param_2)
Definition JKRThread.cpp:222
u32 field_0x10
Definition JKRThread.h:172
static u32 sTotalStart
Definition JKRThread.h:162
u8 field_0x14[4]
Definition JKRThread.h:173
u32 field_0x24
Definition JKRThread.h:176
static void callback(OSThread *param_1, OSThread *param_2)
Definition JKRThread.cpp:154
static JKRThreadSwitch * createManager(JKRHeap *heap)
Definition JKRThread.cpp:120
static JKRThreadSwitch * getManager()
Definition JKRThread.h:156
static u32 getTotalCount()
Definition JKRThread.h:157
JKRHeap * mHeap
Definition JKRThread.h:168
static u32 sTotalCount
Definition JKRThread.h:161
static JKRThreadSwitch_PreCallback mUserPreCallback
Definition JKRThread.h:163
Definition JKRThread.h:25
s32 mThreadId
Definition JKRThread.h:60
void resetCount()
Definition JKRThread.h:43
bool isValid() const
Definition JKRThread.h:33
OSTick mLastTick
Definition JKRThread.h:59
void setId(s32 id)
Definition JKRThread.h:39
u32 getCount() const
Definition JKRThread.h:35
u32 getCost() const
Definition JKRThread.h:34
TLoad()
Definition JKRThread.h:27
void setCurrentTime()
Definition JKRThread.h:40
u32 mSwitchCount
Definition JKRThread.h:58
u8 padding_0x61[3]
Definition JKRThread.h:56
void resetCost()
Definition JKRThread.h:42
void incCount()
Definition JKRThread.h:45
u32 mCost
Definition JKRThread.h:57
void clear()
Definition JKRThread.h:48
void addCurrentCost()
Definition JKRThread.h:46
s32 getId() const
Definition JKRThread.h:36
void setValid(bool valid)
Definition JKRThread.h:38
bool mValid
Definition JKRThread.h:55
Definition JKRThread.h:23
void * mStackMemory
Definition JKRThread.h:122
virtual void * run()
Definition JKRThread.cpp:275
static JSUList< JKRThread > & getList()
Definition JKRThread.h:131
s32 mCurrentHeapError
Definition JKRThread.h:126
OSMessage * mMessages
Definition JKRThread.h:120
TLoad * getLoadInfo()
Definition JKRThread.h:75
static JKRThread * searchThread(OSThread *thread)
Definition JKRThread.cpp:94
OSMessage waitMessageBlock()
Definition JKRThread.h:104
void * getStack() const
Definition JKRThread.h:74
s32 mMessageCount
Definition JKRThread.h:121
JSULink< JKRThread > mThreadListLink
Definition JKRThread.h:116
void sendMessageBlock(OSMessage message)
Definition JKRThread.h:87
void jamMessageBlock(OSMessage message)
Definition JKRThread.h:109
BOOL sendMessage(OSMessage message)
Definition JKRThread.h:84
OSThread * getThreadRecord() const
Definition JKRThread.h:73
JKRHeap * mHeap
Definition JKRThread.h:117
static JSUList< JKRThread > sThreadList
Definition JKRThread.h:133
void setCommon_heapSpecified(JKRHeap *heap, u32 stack_size, int param_3)
Definition JKRThread.cpp:79
JKRHeap * mCurrentHeap
Definition JKRThread.h:125
TLoad mLoadInfo
Definition JKRThread.h:124
u32 mStackSize
Definition JKRThread.h:123
JKRThread(u32 stack_size, int message_count, int param_3)
Definition JKRThread.cpp:24
OSMessage waitMessage()
Definition JKRThread.h:90
void setCurrentHeap(JKRHeap *heap)
Definition JKRThread.h:79
virtual ~JKRThread()
Definition JKRThread.cpp:53
OSMessage waitMessage(BOOL *received)
Definition JKRThread.h:96
void setCommon_mesgQueue(JKRHeap *heap, int message_count)
Definition JKRThread.cpp:68
s32 getCurrentHeapError() const
Definition JKRThread.h:77
OSMessageQueue mMessageQueue
Definition JKRThread.h:119
void resume()
Definition JKRThread.h:83
JKRHeap * getCurrentHeap() const
Definition JKRThread.h:76
OSThread * mThreadRecord
Definition JKRThread.h:118
Definition JSUList.h:96
Definition JUTConsole.h:13
static void message(do_class *i_this)
Definition d_a_do.cpp:2183
static u16 const id[4]
Definition d_a_obj_smtile.cpp:242
int OSReceiveMessage(OSMessageQueue *mq, void *msg, s32 flags)
Definition OSMessage.c:33
int OSSendMessage(OSMessageQueue *mq, void *msg, s32 flags)
Definition OSMessage.c:13
int OSJamMessage(OSMessageQueue *mq, void *msg, s32 flags)
Definition OSMessage.c:54
void * OSMessage
Definition OSMessage.h:13
s32 OSResumeThread(OSThread *thread)
Definition OSThread.c:584
asm OSTick OSGetTick(void)
Definition OSTime.c:29
u32 OSTick
Definition os.h:20
int BOOL
Definition types.h:33
unsigned long u32
Definition types.h:12
signed long long int s64
Definition types.h:13
signed long s32
Definition types.h:11
unsigned char u8
Definition types.h:8
@ start
Definition strtoul.c:8
Definition JKRThread.h:179
static JSUList< JKRTask > sTaskList
Definition JKRThread.h:180
static u8 sEndMesgQueue[32]
Definition JKRThread.h:181
Definition JKRThread.h:12
s32 id
Definition JKRThread.h:13
char * name
Definition JKRThread.h:14
Definition OSMessage.h:18
Definition OSThread.h:42