Files
nt-lite/code/user/runtime/posix_start.c
T

38 lines
1.2 KiB
C

// POSIX process startup. This file owns process-local POSIX personality initialization before main runs.
#include <stdint.h>
#include <stdlib.h>
#include <ntlite/exception.h>
#include <ntlite/syscall.h>
extern int main(int argc, char** argv, char** envp);
__declspec(dllimport) uint32_t __ntl_posix_process_start(void);
__declspec(dllimport) uint32_t __ntl_posix_process_vectors(int* argcOut,
char*** argvOut,
char*** envpOut);
// Initializes POSIX process state and exits with main's return value.
void PosixStart(void) {
uint32_t status = NtlInitializeExceptionRuntime();
if (status != NTLSTATUS_SUCCESS) {
while (true) SysExitProcess((int32_t)status);
}
status = __ntl_posix_process_start();
if (status != NTLSTATUS_SUCCESS) {
while (true) SysExitProcess((int32_t)status);
}
int argc = 0;
char** argv = (char**)0;
char** envp = (char**)0;
status = __ntl_posix_process_vectors(&argc, &argv, &envp);
if (status != NTLSTATUS_SUCCESS) {
while (true) SysExitProcess((int32_t)status);
}
int exitCode = main(argc, argv, envp);
exit(exitCode);
while (true) {}
}