switch-examples/templates/sysmodule/source/main.c

84 lines
2.0 KiB
C

// Include the most common headers from the C standard library
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Include the main libnx system header, for Switch development
#include <switch.h>
// Sysmodules should not use applet*.
u32 __nx_applet_type = AppletType_None;
// Sysmodules will normally only want to use one FS session.
u32 __nx_fs_num_sessions = 1;
// Adjust size as needed.
#define INNER_HEAP_SIZE 0x80000
size_t nx_inner_heap_size = INNER_HEAP_SIZE;
char nx_inner_heap[INNER_HEAP_SIZE];
void __libnx_initheap(void)
{
void* addr = nx_inner_heap;
size_t size = nx_inner_heap_size;
// Newlib
extern char* fake_heap_start;
extern char* fake_heap_end;
fake_heap_start = (char*)addr;
fake_heap_end = (char*)addr + size;
}
// Init/exit services, update as needed.
void __attribute__((weak)) __appInit(void)
{
Result rc;
// Initialize default services.
rc = smInitialize();
if (R_FAILED(rc))
fatalThrow(MAKERESULT(Module_Libnx, LibnxError_InitFail_SM));
// Enable this if you want to use HID.
/*rc = hidInitialize();
if (R_FAILED(rc))
fatalThrow(MAKERESULT(Module_Libnx, LibnxError_InitFail_HID));*/
//Enable this if you want to use time.
/*rc = timeInitialize();
if (R_FAILED(rc))
fatalThrow(MAKERESULT(Module_Libnx, LibnxError_InitFail_Time));
__libnx_init_time();*/
rc = fsInitialize();
if (R_FAILED(rc))
fatalThrow(MAKERESULT(Module_Libnx, LibnxError_InitFail_FS));
fsdevMountSdmc();
}
void __attribute__((weak)) userAppExit(void);
void __attribute__((weak)) __appExit(void)
{
// Cleanup default services.
fsdevUnmountAll();
fsExit();
//timeExit();//Enable this if you want to use time.
//hidExit();// Enable this if you want to use HID.
smExit();
}
// Main program entrypoint
int main(int argc, char* argv[])
{
// Initialization code can go here.
// Your code / main loop goes here.
// If you need threads, you can use threadCreate etc.
// Deinitialization and resources clean up code can go here.
return 0;
}