diff --git a/Makefile b/Makefile index 0fb2241..efdd7f1 100644 --- a/Makefile +++ b/Makefile @@ -49,7 +49,7 @@ LDFLAGS := -nostartfiles -Wl,--gc-sections,--allow-multiple-definition ifeq ($(DEBUG),1) CXXFLAGS += -DDEBUG -g -CCFLAGS += -DDEBUG -g +CFLAGS += -DDEBUG -g endif #--------------------------------------------------------------------------------- diff --git a/src/main.cpp b/src/main.cpp index b6f9738..793d6e7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -30,10 +30,6 @@ #include "module/ModuleDataFactory.h" #include "common/module_defines.h" -#include -#include -#include -#include #include #include "kernel.h" @@ -71,12 +67,6 @@ bool CheckRunning() { extern "C" void __init_wut(); extern "C" void __fini_wut(); -#ifdef DEBUG -bool module_log = false; -bool udp_log = false; -bool cafe_log = false; -#endif // DEBUG - extern "C" int _start(int argc, char **argv) __attribute__ ((section (".start_code"))); extern "C" int _start(int argc, char **argv) { doKernelSetup(); @@ -90,21 +80,12 @@ extern "C" int _start(int argc, char **argv) { auto heap = (MEMExpHeap *) mem2_heap_handle; MEMExpHeapBlock *memory_start = heap->usedList.tail; -#ifdef DEBUG - if (!(module_log = WHBLogModuleInit())) { - cafe_log = WHBLogCafeInit(); - udp_log = WHBLogUdpInit(); - } -#endif // DEBUG + initLogging(); DEBUG_FUNCTION_LINE("Hello from CustomRPXloader"); uint32_t entrypoint = do_start(argc, argv); -#ifdef DEBUG - if (module_log) { WHBLogModuleDeinit(); } - if (udp_log) { WHBLogUdpDeinit(); } - if (cafe_log) { WHBLogCafeDeinit(); } -#endif // DEBUG + deinitLogging(); // free leaked memory if (memory_start) { diff --git a/src/utils/logger.c b/src/utils/logger.c new file mode 100644 index 0000000..0411db7 --- /dev/null +++ b/src/utils/logger.c @@ -0,0 +1,36 @@ +#ifdef DEBUG +#include +#include +#include +#include + +uint32_t moduleLogInit = false; +uint32_t cafeLogInit = false; +uint32_t udpLogInit = false; +#endif // DEBUG + +void initLogging() { +#ifdef DEBUG + if (!(moduleLogInit = WHBLogModuleInit())) { + cafeLogInit = WHBLogCafeInit(); + udpLogInit = WHBLogUdpInit(); + } +#endif // DEBUG +} + +void deinitLogging() { +#ifdef DEBUG + if (moduleLogInit) { + WHBLogModuleDeinit(); + moduleLogInit = false; + } + if (cafeLogInit) { + WHBLogCafeDeinit(); + cafeLogInit = false; + } + if (udpLogInit) { + WHBLogUdpDeinit(); + udpLogInit = false; + } +#endif // DEBUG +} \ No newline at end of file diff --git a/src/utils/logger.h b/src/utils/logger.h index 7e11c21..6ff5ae2 100644 --- a/src/utils/logger.h +++ b/src/utils/logger.h @@ -12,6 +12,8 @@ extern "C" { #define __FILENAME_X__ (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__) #define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILENAME_X__) +#define DEBUG_FUNCTION_LINE_VERBOSE(FMT, ARGS...) while (0) + #define DEBUG_FUNCTION_LINE(FMT, ARGS...)do { \ WHBLogPrintf("[%23s]%30s@L%04d: " FMT "",__FILENAME__,__FUNCTION__, __LINE__, ## ARGS); \ } while (0) @@ -22,12 +24,18 @@ extern "C" { #else +#define DEBUG_FUNCTION_LINE_VERBOSE(FMT, ARGS...) while (0) + #define DEBUG_FUNCTION_LINE(FMT, ARGS...) while (0) #define DEBUG_FUNCTION_LINE_WRITE(FMT, ARGS...) while (0) #endif +void initLogging(); + +void deinitLogging(); + #ifdef __cplusplus } #endif