diff options
| author | Jonathan Wase <jonathan@familjenwase.se> | 2020-12-06 06:40:34 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-12-06 00:40:34 -0500 |
| commit | 59a3d0020959bbb765e98c80e01eb13963fa74ec (patch) | |
| tree | d6a07b16e77e63c352898803808f8eecfd695e91 /include | |
| parent | 89385fe8fd3832541f5e8182afdf60d6b644916f (diff) | |
OS.h and JKRDvdFile (#19)
* OS header
* JKRFile and JKRDvdFile
Diffstat (limited to 'include')
| -rw-r--r-- | include/JSystem/JKernel/JKRDvdFile/JKRDvdFile.h | 20 | ||||
| -rw-r--r-- | include/JSystem/JKernel/JKRFile/JKRFile.h | 8 | ||||
| -rw-r--r-- | include/JSystem/JKernel/JKRHeap/JKRHeap.h | 6 | ||||
| -rw-r--r-- | include/JSystem/JKernel/JKRThread/JKRThread.h | 18 | ||||
| -rw-r--r-- | include/functions.h | 54 | ||||
| -rw-r--r-- | include/global.h | 1 | ||||
| -rw-r--r-- | include/os/OS.h | 59 | ||||
| -rw-r--r-- | include/variables.h | 8 |
8 files changed, 91 insertions, 83 deletions
diff --git a/include/JSystem/JKernel/JKRDvdFile/JKRDvdFile.h b/include/JSystem/JKernel/JKRDvdFile/JKRDvdFile.h index d0870c3033..47eae12215 100644 --- a/include/JSystem/JKernel/JKRDvdFile/JKRDvdFile.h +++ b/include/JSystem/JKernel/JKRDvdFile/JKRDvdFile.h @@ -14,12 +14,12 @@ class JKRDvdFile : public JKRFile { ~JKRDvdFile(); void initiate(void); - void sync(void); + s32 sync(void); static void doneProcess(long, DVDFileInfo*); virtual bool open(char const*); virtual void close(void); - virtual void readData(void*, long, long); + virtual s32 readData(void*, long, long); virtual s32 writeData(void const*, long, long); virtual s32 getFileSize(void) const; virtual bool open(long); @@ -36,9 +36,9 @@ class JKRDvdFile : public JKRFile { return DVDGetCommandBlockStatus(&this->mDvdCommandBlock[0]); } - public: - u8 mMutex1[24]; - u8 mMutex2[24]; + protected: + OSMutex mMutex1; + OSMutex mMutex2; u32 field_0x4c; u32 field_0x50; u32 field_0x54; @@ -48,12 +48,12 @@ class JKRDvdFile : public JKRFile { s32 mFileSize; u32 field_0x94; JKRDvdFile* mDvdFile; - u8 mQueue1[32]; - void* mMessages1[1]; - u8 mQueue2[32]; - void* mMessages2[1]; + OSMessageQueue mQueue1; + OSMessage mMessages1[1]; + OSMessageQueue mQueue2; + OSMessage mMessages2[1]; JSULink<JKRDvdFile> mDvdLink; - void* mOSThread; + OSThread* mOSThread; }; #endif diff --git a/include/JSystem/JKernel/JKRFile/JKRFile.h b/include/JSystem/JKernel/JKRFile/JKRFile.h index 3594b48126..bc1e850481 100644 --- a/include/JSystem/JKernel/JKRFile/JKRFile.h +++ b/include/JSystem/JKernel/JKRFile/JKRFile.h @@ -6,19 +6,19 @@ class JKRFile : public JKRDisposer { public: - JKRFile(); - virtual ~JKRFile(); + JKRFile() : mIsOpen(false) {} + virtual ~JKRFile() {} virtual bool open(const char*); virtual void close(); - virtual void readData(void*, long, long); + virtual s32 readData(void*, long, long); virtual s32 writeData(const void*, long, long); virtual s32 getFileSize(); virtual bool open(long); s32 read(void*, long, long); - private: + protected: bool mIsOpen; u8 field_0x19[3]; }; diff --git a/include/JSystem/JKernel/JKRHeap/JKRHeap.h b/include/JSystem/JKernel/JKRHeap/JKRHeap.h index 48364f52af..1c1d043328 100644 --- a/include/JSystem/JKernel/JKRHeap/JKRHeap.h +++ b/include/JSystem/JKernel/JKRHeap/JKRHeap.h @@ -127,11 +127,11 @@ class JKRHeap : public JKRDisposer { } void lock() { - OSLockMutex(this->mMutex); + OSLockMutex(&this->mMutex); } void unlock() { - OSUnlockMutex(this->mMutex); + OSUnlockMutex(&this->mMutex); } public: @@ -158,7 +158,7 @@ class JKRHeap : public JKRDisposer { virtual void state_dump(); public: - u8 mMutex[24]; + OSMutex mMutex; u32 mStart; u32 mEnd; u32 mSize; diff --git a/include/JSystem/JKernel/JKRThread/JKRThread.h b/include/JSystem/JKernel/JKRThread/JKRThread.h index f5b3d6cfa6..9efba043c4 100644 --- a/include/JSystem/JKernel/JKRThread/JKRThread.h +++ b/include/JSystem/JKernel/JKRThread/JKRThread.h @@ -3,19 +3,7 @@ #include "dolphin/types.h" #include "JSystem/JKernel/JKRDisposer/JKRDisposer.h" - -struct OSThread { - u8 unkn[0x318]; -}; - -struct OSMessageQueue { - u8 unkn[0x20]; -}; - -typedef void* OSMessage; - -class JKRThread; -extern JSUList<JKRThread> lbl_8043428C; // JSUList<JKRThread> JKRThread::sThreadList +#include "global.h" class JKRThreadName_; class JUTConsole; @@ -31,7 +19,7 @@ class JKRThread : JKRDisposer { void setCommon_heapSpecified(JKRHeap* heap, u32 stack_size, int param_3); OSThread* getThreadRecord() { - return this->mOsThread; + return this->mOSThread; } static void* start(void* param_1); @@ -45,7 +33,7 @@ class JKRThread : JKRDisposer { public: JSULink<JKRThread> mThreadListLink; JKRHeap* mHeap; - OSThread* mOsThread; + OSThread* mOSThread; OSMessageQueue mQueue; OSMessage* mMessages; int mMessageCount; diff --git a/include/functions.h b/include/functions.h index c745b8e2dd..4e91598ed2 100644 --- a/include/functions.h +++ b/include/functions.h @@ -212,60 +212,16 @@ extern "C" { void func_80365470(void); } -// OS -struct OSThread; -struct OSMessageQueue; -typedef void* OSMessage; -extern "C" { - void OSInitMutex(u8[24]); - void OSLockMutex(u8[24]); - void OSUnlockMutex(u8[24]); - void OSEnableScheduler(void); - void OSDisableScheduler(void); - void OSCheckActiveThreads(void); - void OSReport_Error(char*,...); - u32 OSGetSoundMode(void); - void OSSuspendThread(void); - void OSSetThreadPriority(void); - void OSResumeThread(void); - void OSGetThreadPriority(void); - void OSGetConsoleType(void); - void OSGetResetCode(void); - void OSAllocFromArenaLo(void); - void OSReportInit(void); - void OSGetCurrentThread(void); - void OSTicksToCalendarTime(void); - - u32 OSGetArenaLo(); - u32 OSGetArenaHi(); - u32 OSInitAlloc(u32 low, u32 high, int param_3); - void OSSetArenaLo(u32 param_1); - void OSSetArenaHi(u32 param_1); - - void OSGetTick(void); - - - void OSCreateThread(OSThread* thread, void* (*func)(void*), void* param, - void* stack, u32 stackSize, int param_6, int param_7); - void OSCancelThread(OSThread* thread); - void OSDetachThread(OSThread* thread); - bool OSIsThreadSuspended(OSThread* thread); - bool OSIsThreadTerminated(OSThread* thread); - void OSInitMessageQueue(OSMessageQueue *queue, OSMessage* messages, int message_count); - void OSSetSwitchThreadCallback(void); - void OSReceiveMessage(void); - void OSSendMessage(void); -} - // DVD +class DVDFileInfo; extern "C" { - void DVDOpen(void); - void DVDClose(void); + s32 DVDOpen(const char*, u8[48]); + s32 DVDClose(u8[48]); void DVDReadPrio(void); void DVDGetCurrentDiskID(void); - void DVDFastOpen(void); + s32 DVDFastOpen(long, u8[48]); int DVDGetCommandBlockStatus(u8[48]); - void DVDReadAsyncPrio(void); + s32 DVDReadAsyncPrio(u8[48], void*, long, long, void(*)(long,DVDFileInfo*), long); void DVDConvertPathToEntrynum(void); void DVDChangeDir(void); diff --git a/include/global.h b/include/global.h index 10e453b8d9..a3672634fe 100644 --- a/include/global.h +++ b/include/global.h @@ -5,6 +5,7 @@ #include "dolphin/types.h" +#include "os/OS.h" #include "functions.h" #include "variables.h" diff --git a/include/os/OS.h b/include/os/OS.h new file mode 100644 index 0000000000..709347d7a7 --- /dev/null +++ b/include/os/OS.h @@ -0,0 +1,59 @@ +#ifndef __OS_H_ +#define __OS_H_ + +struct OSThread { + u8 unkn[0x318]; +}; + +struct OSMessageQueue { + u8 unkn[0x20]; +}; + +struct OSMutex { + u8 unkn[24]; +}; + +typedef void* OSMessage; +extern "C" { + void OSInitMutex(OSMutex*); + void OSLockMutex(OSMutex*); + void OSUnlockMutex(OSMutex*); + void OSEnableScheduler(void); + void OSDisableScheduler(void); + void OSCheckActiveThreads(void); + void OSReport_Error(char*,...); + u32 OSGetSoundMode(void); + void OSSuspendThread(void); + void OSSetThreadPriority(void); + void OSResumeThread(void); + void OSGetThreadPriority(void); + void OSGetConsoleType(void); + void OSGetResetCode(void); + void OSAllocFromArenaLo(void); + void OSReportInit(void); + OSThread* OSGetCurrentThread(void); + void OSTicksToCalendarTime(void); + + u32 OSGetArenaLo(); + u32 OSGetArenaHi(); + u32 OSInitAlloc(u32 low, u32 high, int param_3); + void OSSetArenaLo(u32 param_1); + void OSSetArenaHi(u32 param_1); + + void OSGetTick(void); + + + void OSCreateThread(OSThread* thread, void* (*func)(void*), void* param, + void* stack, u32 stackSize, int param_6, int param_7); + void OSCancelThread(OSThread* thread); + void OSDetachThread(OSThread* thread); + bool OSIsThreadSuspended(OSThread* thread); + bool OSIsThreadTerminated(OSThread* thread); + void OSInitMessageQueue(OSMessageQueue *queue, OSMessage* messages, int message_count); + void OSSetSwitchThreadCallback(void); + void OSReceiveMessage(OSMessageQueue *queue, OSMessage message, int flags); + void OSSendMessage(OSMessageQueue *queue, OSMessage message, int flags); +} + + +#endif
\ No newline at end of file diff --git a/include/variables.h b/include/variables.h index 4b7a0b08e1..43e9cfb5b8 100644 --- a/include/variables.h +++ b/include/variables.h @@ -213,7 +213,7 @@ class JKRDvdFile; extern JSUList<JKRDvdFile> lbl_8043436C; // JKRDvdFile::sDvdList extern u8 lbl_803CC438; // JKRDvdFile::__vt extern u8 lbl_80434360; // JKernel::@657 (global destructor chain) -extern u8 lbl_8039D260; // "JKRDvdFile.cpp" +extern char lbl_8039D260[12]; // "JKRDvdFile.cpp" extern u8 lbl_803CC328; // JKRFile::__vt class JKRFileLoader; @@ -258,4 +258,8 @@ struct unkEvent{ //figure out what this is later u8 unk567[0x439]; }; extern unkEvent lbl_803A7288; -extern u8 lbl_8037B0D0[0x8];
\ No newline at end of file +extern u8 lbl_8037B0D0[0x8]; + +class JKRThread; +extern JSUList<JKRThread> lbl_8043428C; // JSUList<JKRThread> JKRThread::sThreadList + |
