documentation: defragmanager.c

This commit is contained in:
mariob92
2025-05-21 15:36:20 +02:00
committed by Moses Troyer
parent 2395afac8e
commit 9bee42a73e
4 changed files with 50 additions and 38 deletions
+13
View File
@@ -127,4 +127,17 @@ void toggleTextureFilterPoint(void);
void getGraphicsStacks(Gfx **gfx, Mtx **mtx, Vtx **vtx);
void dummy_func_80254464(void);
/* src/core1/defragmanager.c */
#define DEFRAGMANAGER_THREAD_STACK_SIZE 2048
#define DEFRAGMANAGER_THREAD_ID 2
#define DEFRAGMANAGER_THREAD_PRIORITY 10
#define DEFRAGMANAGER_THREAD_PRIORITY_HIGH 30
void defragManager_init(void);
void defragManager_free(void);
void defragManager_resume(void);
void defragManager_pause(void);
void defragManager_setPriority(OSPri pri);
#endif
+2
View File
@@ -513,4 +513,6 @@ extern void baflag_toggle(enum misc_flag_e arg0);
extern void piMgr_read(void *vaddr, s32 devaddr, s32 size);
s32 game_defrag(void);
#endif
+31 -34
View File
@@ -1,59 +1,56 @@
#include <ultra64.h>
#include "core1/core1.h"
#include "functions.h"
#include "variables.h"
#define DEFRAG_THREAD_STACK_SIZE 0x800
static void defragThread_entry(void *args);
void defragThread_entry(void *arg);
static OSMesgQueue sDefragThreadResumeSyncQueue;
static OSMesg sDefragThreadResumeSyncMesg;
static OSMesgQueue sDefragThreadPauseSyncQueue;
static OSMesg sDefragThreadPauseSyncMesg;
static OSThread sDefragThread;
static u8 sDefragThreadStack[DEFRAGMANAGER_THREAD_STACK_SIZE];
OSMesgQueue D_8027E120;
OSMesg D_8027E138;
OSMesgQueue D_8027E140;
OSMesg D_8027E158;
OSThread sDefragThread;
u8 sDefragThreadStack[0x800];
/* .code */
void defragManager_init(void){
osCreateMesgQueue(&D_8027E120, &D_8027E138, 1);
osCreateMesgQueue(&D_8027E140, &D_8027E158, 1);
osCreateThread(&sDefragThread, 2, defragThread_entry, NULL, sDefragThreadStack + DEFRAG_THREAD_STACK_SIZE, 10);
void defragManager_init(void) {
osCreateMesgQueue(&sDefragThreadResumeSyncQueue, &sDefragThreadResumeSyncMesg, 1);
osCreateMesgQueue(&sDefragThreadPauseSyncQueue, &sDefragThreadPauseSyncMesg, 1);
osCreateThread(&sDefragThread, DEFRAGMANAGER_THREAD_ID, defragThread_entry, NULL, sDefragThreadStack + DEFRAGMANAGER_THREAD_STACK_SIZE, DEFRAGMANAGER_THREAD_PRIORITY);
osStartThread(&sDefragThread);
}
void defragManager_free(void){
void defragManager_free(void) {
osStopThread(&sDefragThread);
osDestroyThread(&sDefragThread);
}
void defragManager_80240874(void){
if(func_8023E000() == 3){
osSendMesg(&D_8027E120, NULL, OS_MESG_BLOCK);
void defragManager_resume(void) {
if (func_8023E000() == 3) {
osSendMesg(&sDefragThreadResumeSyncQueue, NULL, OS_MESG_BLOCK);
}
}
void defragManager_802408B0(void){
if(func_8023E000() == 3){
osSendMesg(&D_8027E140, NULL, OS_MESG_BLOCK);
void defragManager_pause(void) {
if (func_8023E000() == 3) {
osSendMesg(&sDefragThreadPauseSyncQueue, NULL, OS_MESG_BLOCK);
}
}
void defragManager_setPriority(OSPri pri){
if(func_8023E000() == 3){
void defragManager_setPriority(OSPri pri) {
if (func_8023E000() == 3) {
osSetThreadPri(&sDefragThread, pri);
}
}
void defragThread_entry(void *arg) {
int tmp_v0;
do{
osRecvMesg(&D_8027E120, NULL, OS_MESG_BLOCK);
if(!D_8027E140.validCount){
do{
tmp_v0 = game_defrag();
}while(!D_8027E140.validCount && tmp_v0);
static void defragThread_entry(void *args) {
s32 defrag_flag;
do {
osRecvMesg(&sDefragThreadResumeSyncQueue, NULL, OS_MESG_BLOCK);
if (sDefragThreadPauseSyncQueue.validCount == 0) {
do {
defrag_flag = game_defrag();
} while ((sDefragThreadPauseSyncQueue.validCount == 0) && defrag_flag);
}
osRecvMesg(&D_8027E140, NULL, OS_MESG_BLOCK);
}while(1);
osRecvMesg(&sDefragThreadPauseSyncQueue, NULL, OS_MESG_BLOCK);
} while(1);
}
+4 -4
View File
@@ -165,8 +165,8 @@ void viMgr_func_8024BFD8(s32 arg0){
static s32 D_80280E90;
osSetThreadPri(NULL, 0x7f);
defragManager_setPriority(0x1E);
defragManager_80240874();
defragManager_setPriority(DEFRAGMANAGER_THREAD_PRIORITY_HIGH);
defragManager_resume();
if(arg0){
osRecvMesg(&sMesgQueue2, NULL, OS_MESG_BLOCK);
}
@@ -187,9 +187,9 @@ void viMgr_func_8024BFD8(s32 arg0){
}//L8024C178
D_80280724 = D_802808D8;
D_802808D8 = 0;
defragManager_802408B0();
defragManager_pause();
osSetThreadPri(NULL, 0x14);
defragManager_setPriority(0xA);
defragManager_setPriority(DEFRAGMANAGER_THREAD_PRIORITY);
}
void viMgr_func_8024C1B4(void){