OS.h and JKRDvdFile (#19)

* OS header

* JKRFile and JKRDvdFile
This commit is contained in:
Jonathan Wase
2020-12-06 06:40:34 +01:00
committed by GitHub
parent 89385fe8fd
commit 59a3d00209
12 changed files with 223 additions and 132 deletions
+10 -10
View File
@@ -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
+4 -4
View File
@@ -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];
};
+3 -3
View File
@@ -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;
+3 -15
View File
@@ -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;
+5 -49
View File
@@ -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);
+1
View File
@@ -5,6 +5,7 @@
#include "dolphin/types.h"
#include "os/OS.h"
#include "functions.h"
#include "variables.h"
+59
View File
@@ -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
+6 -2
View File
@@ -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];
extern u8 lbl_8037B0D0[0x8];
class JKRThread;
extern JSUList<JKRThread> lbl_8043428C; // JSUList<JKRThread> JKRThread::sThreadList