tp/include/JSystem/JKernel/JKRThread/JKRThread.h

77 lines
1.8 KiB
C++

#ifndef __JKRTHREAD_H__
#define __JKRTHREAD_H__
#include "dolphin/types.h"
#include "JSystem/JKernel/JKRDisposer/JKRDisposer.h"
#include "global.h"
class JKRThreadName_;
class JUTConsole;
class JKRHeap;
class JKRThread : JKRDisposer {
public:
JKRThread(u32 stack_size, int message_count, int param_3);
JKRThread(JKRHeap* heap, u32 stack_size, int message_count, int param_4);
JKRThread(OSThread* thread, int message_count);
virtual ~JKRThread();
/* vt[03] */ virtual void* run();
void setCommon_mesgQueue(JKRHeap* heap, int message_count);
void setCommon_heapSpecified(JKRHeap* heap, u32 stack_size, int param_3);
OSThread* getThreadRecord() {
return this->mOSThread;
}
private:
JSULink<JKRThread> mThreadListLink;
JKRHeap* mHeap;
OSThread* mOSThread;
OSMessageQueue mQueue;
OSMessage* mMessages;
int mMessageCount;
void* mStackPtr;
u32 mStackSize;
u8 field_0x60;
u8 padding_0x61[3];
u32 mCost;
u32 mSwitchCount;
u32 field_0x6c;
u32 field_0x70;
JKRHeap* field_0x74;
JKRHeap* field_0x78;
public:
static void* start(void* param_1);
static JKRThread* searchThread(OSThread* thread);
static JSUList<JKRThread>* getList() {
return &lbl_8043428C;
}
};
class JKRThreadSwitch {
public:
JKRThreadSwitch(JKRHeap*);
virtual ~JKRThreadSwitch();
static JKRThreadSwitch* createManager(JKRHeap* heap);
JKRThread* enter(JKRThread* param_1, int param_2);
static void callback(OSThread* param_1, OSThread* param_2);
void draw(JKRThreadName_* param_1, JUTConsole* param_2);
void draw(JKRThreadName_* param_1);
public:
JKRHeap* heap;
u8 field_0x8[4];
u32 field_0xC[2];
u8 field_0x14[4];
u32 field_0x18;
u32 field_0x1C;
u32 field_0x20;
u32 field_0x24;
};
#endif