X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=AcessNative%2Facesskernel_src%2Fmain.c;h=bc4083cf90a62b83925d5610251d719b65dd97bd;hb=05c5d7098a054591d75113ecc3503979cc5754c9;hp=93127408bbb42e684470ad7d45c672822f351ce7;hpb=4e949acb1c98bc071af2d5d9038b4a3e703bf33d;p=tpg%2Facess2.git diff --git a/AcessNative/acesskernel_src/main.c b/AcessNative/acesskernel_src/main.c index 93127408..bc4083cf 100644 --- a/AcessNative/acesskernel_src/main.c +++ b/AcessNative/acesskernel_src/main.c @@ -4,54 +4,86 @@ * * Kernel Main */ -#include #include #include +#include +#include +// === IMPORTS === +extern int UI_Initialise(int Width, int Height); +extern void UI_MainLoop(void); +extern int VFS_Init(void); +extern int Video_Install(char **Arguments); +extern int NativeKeyboard_Install(char **Arguments); +extern int NativeFS_Install(char **Arguments); +extern void Debug_SetKTerminal(char *Path); +extern int VT_Install(char **Arguments); +extern int VFS_Mount(const char *Device, const char *MountPoint, const char *Filesystem, const char *Options); +extern int SyscallServer(void); +extern const char gsKernelVersion[]; +extern const char gsGitHash[]; +extern int giBuildNumber; + +// === GLOBALS === +const char *gsAcessDir = "../Usermode/Output/x86"; + +// === CODE === int main(int argc, char *argv[]) { - return 0; -} + // Parse command line settings + printf("Acess2 Native v%s\n", gsKernelVersion); + printf(" Build %i, Git Hash %s\n", giBuildNumber, gsGitHash); -void LogF(const char *Fmt, ...) -{ - va_list args; - va_start(args, Fmt); - vprintf(Fmt, args); - va_end(args); -} + // Start UI subsystem + UI_Initialise(800, 480); + + // - Ignore SIGUSR1 (used to wake threads) + signal(SIGUSR1, SIG_IGN); + + // Initialise VFS + VFS_Init(); + // - Start IO Drivers + Video_Install(NULL); + NativeKeyboard_Install(NULL); + NativeFS_Install(NULL); + // - Start VTerm + { + char *args[] = { + "Video=NativeVideo", + "Input=NativeKeyboard", + NULL + }; + VT_Install(args); + } -void Log(const char *Fmt, ...) -{ - va_list args; - printf("Log: "); - va_start(args, Fmt); - vprintf(Fmt, args); - va_end(args); - printf("\n"); -} + VFS_MkDir("/Acess"); + VFS_Mount(gsAcessDir, "/Acess", "nativefs", ""); -void Warning(const char *Fmt, ...) -{ - va_list args; - printf("Warning: "); - va_start(args, Fmt); - vprintf(Fmt, args); - va_end(args); - printf("\n"); + Debug_SetKTerminal("/Devices/VTerm/8"); + + // Start syscall server + // - Blocks + SyscallServer(); + + UI_MainLoop(); + + return 0; } -void *Heap_Allocate(int Count, const char *File, int Line) +void AcessNative_Exit(void) { - return malloc(Count); + // TODO: Close client applications too + exit(0); } -tPAddr MM_GetPhysAddr(tVAddr VAddr) +uint64_t DivMod64U(uint64_t Num, uint64_t Den, uint64_t *Rem) { - return VAddr; // HACK! + if(Rem) *Rem = Num % Den; + return Num / Den; } -Uint MM_GetFlags(tVAddr VAddr) +int Module_EnsureLoaded(const char *Name) { return 0; } +