summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJonathan Wase <jonathan@familjenwase.se>2020-12-06 06:40:34 +0100
committerGitHub <noreply@github.com>2020-12-06 00:40:34 -0500
commit59a3d0020959bbb765e98c80e01eb13963fa74ec (patch)
treed6a07b16e77e63c352898803808f8eecfd695e91 /include
parent89385fe8fd3832541f5e8182afdf60d6b644916f (diff)
OS.h and JKRDvdFile (#19)
* OS header * JKRFile and JKRDvdFile
Diffstat (limited to 'include')
-rw-r--r--include/JSystem/JKernel/JKRDvdFile/JKRDvdFile.h20
-rw-r--r--include/JSystem/JKernel/JKRFile/JKRFile.h8
-rw-r--r--include/JSystem/JKernel/JKRHeap/JKRHeap.h6
-rw-r--r--include/JSystem/JKernel/JKRThread/JKRThread.h18
-rw-r--r--include/functions.h54
-rw-r--r--include/global.h1
-rw-r--r--include/os/OS.h59
-rw-r--r--include/variables.h8
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
+