wut/include/coreinit/debug.h
GaryOderNichts 2c98cc91aa
Some checks failed
C/C++ CI / ubuntu-latest (push) Has been cancelled
Run clang-format
`find . -regex '.*\.\(cpp\|hpp\|cu\|cuh\|c\|h\)' -exec clang-format -style=file -i {} \;`
2025-06-05 11:06:04 +01:00

149 lines
3.0 KiB
C

#pragma once
#include <wut.h>
/**
* \defgroup coreinit_debug Debug
* \ingroup coreinit
* @{
*/
#ifdef __cplusplus
extern "C" {
#endif
typedef struct OSFatalError OSFatalError;
typedef void (*DisassemblyPrintFn)(const char *fmt, ...);
typedef uint32_t (*DisassemblyFindSymbolFn)(uint32_t addr, char *symbolNameBuf, uint32_t symbolNameBufSize);
typedef enum DisassemblePPCFlags
{
DISASSEMBLE_PPC_FLAGS_NONE = 0,
} DisassemblePPCFlags;
typedef enum OSFatalErrorMessageType
{
OS_FATAL_ERROR_UNKOWN = 0,
OS_FATAL_ERROR_GENERAL = 1,
//! These are only valid for errorCode 1600200 - 1609999
OS_FATAL_ERROR_CORRUPTION = 2,
OS_FATAL_ERROR_FATAL_SYSTEM_OR_USB = 3,
OS_FATAL_ERROR_CORRUPTION_SLC = 4,
OS_FATAL_ERROR_CORRUPTION_USB = 5,
OS_FATAL_ERROR_STORAGE_REMOVED = 6,
OS_FATAL_ERROR_DISC_REMOVED = 7,
OS_FATAL_ERROR_CORRUPTION_DISC = 8,
OS_FATAL_ERROR_WRITE_PROTECT = 9,
} OSFatalErrorMessageType;
struct OSFatalError
{
OSFatalErrorMessageType messageType;
uint32_t errorCode;
uint32_t processId;
uint32_t internalErrorCode;
uint32_t line;
char functionName[64];
WUT_UNKNOWN_BYTES(0x80);
};
WUT_CHECK_OFFSET(OSFatalError, 0x00, messageType);
WUT_CHECK_OFFSET(OSFatalError, 0x04, errorCode);
WUT_CHECK_OFFSET(OSFatalError, 0x08, processId);
WUT_CHECK_OFFSET(OSFatalError, 0x0C, internalErrorCode);
WUT_CHECK_OFFSET(OSFatalError, 0x10, line);
WUT_CHECK_OFFSET(OSFatalError, 0x14, functionName);
WUT_CHECK_SIZE(OSFatalError, 0xD4);
void
OSConsoleWrite(const char *msg,
uint32_t size);
void
__OSConsoleWrite(const char *msg,
uint32_t size);
void
OSReport(const char *fmt, ...)
WUT_FORMAT_PRINTF(1, 2);
void
OSReportVerbose(const char *fmt, ...)
WUT_FORMAT_PRINTF(1, 2);
void
OSReportInfo(const char *fmt, ...)
WUT_FORMAT_PRINTF(1, 2);
void
OSReportWarn(const char *fmt, ...)
WUT_FORMAT_PRINTF(1, 2);
void
OSPanic(const char *file,
uint32_t line,
const char *fmt,
...)
WUT_FORMAT_PRINTF(3, 4);
void
OSFatal(const char *msg);
void
OSSendFatalError(OSFatalError *error,
const char *functionName,
uint32_t line);
uint32_t
OSGetSymbolName(uint32_t addr,
char *symbolNameBuf,
uint32_t symbolNameBufSize);
uint32_t
OSGetUPID();
BOOL
OSIsDebuggerInitialized();
BOOL
OSIsDebuggerPresent();
BOOL
OSIsECOBoot();
BOOL
OSIsECOMode();
void
__OSSetCrashRecovery(uint32_t crashRecovery);
uint32_t
__OSGetCrashRecovery();
BOOL
DisassemblePPCOpcode(uint32_t *opcode,
char *buffer,
uint32_t bufferSize,
DisassemblyFindSymbolFn findSymbolFn,
DisassemblePPCFlags flags);
void
DisassemblePPCRange(void *start,
void *end,
DisassemblyPrintFn printFn,
DisassemblyFindSymbolFn findSymbolFn,
DisassemblePPCFlags flags);
#ifdef __cplusplus
}
#endif
/** @} */