build.bat can create the image if missing, split the shell into native, posix and win32, clean up the build by moving executables into directories, the bootloader is no longer responsible to resolve drivers, fix ResolvePath, every process gets a copy of a module (dll), the child always inherits the cwd, fix function exports in posix, add unlink and exit to posix, add path translator to win32, first bugcheck.

This commit is contained in:
maksw committed 2026-05-13 09:24:16 +02:00
1 parent 0c7f461c6d
commit f80e66ecde
38 files changed
+1620 -462

No files matched your search

+110
View File
@@ -0,0 +1,110 @@
#pragma once
// Syscall.h
#include <stddef.h>
#include <stdint.h>
#include <stdbool.h>
// ---------------------------------------------------------------------------
// Thread & Process Management (0-7)
// ---------------------------------------------------------------------------
void SysExitProcess(int exitCode); // 00
void SysExitThread(int exitCode); // 01
uint32_t SysCreateThread(uintptr_t entry, uintptr_t arg, uint32_t priority, uint32_t* tidOut); // 02
uint32_t SysGetCurrentTid(void); // 03
uint32_t SysGetCurrentPid(void); // 04
uint32_t SysYield(void); // 05
uint32_t SysSleep(uint64_t ms); // 06
uint32_t SysSetThreadPriority(uint32_t priority); // 07
// ---------------------------------------------------------------------------
// Memory Management (8-10)
// ---------------------------------------------------------------------------
void* SysAlloc(size_t size); // 08
uint32_t SysFree(void* ptr, size_t size); // 09
void* SysRealloc(void* ptr, size_t newSize); // 10
// ---------------------------------------------------------------------------
// Synchronization Primitives (11-22)
// ---------------------------------------------------------------------------
uint32_t SysMutexCreate(uint32_t* handleOut); // 11
uint32_t SysMutexAcquire(uint32_t handle); // 12
uint32_t SysMutexTryAcquire(uint32_t handle); // 13
uint32_t SysMutexRelease(uint32_t handle); // 14
uint32_t SysSemCreate(int32_t initial, int32_t max, uint32_t* handleOut); // 15
uint32_t SysSemWait(uint32_t handle); // 16
uint32_t SysSemTryWait(uint32_t handle); // 17
uint32_t SysSemSignal(uint32_t handle); // 18
uint32_t SysEventCreate(uint32_t type, uint32_t initialState, uint32_t* handleOut); // 19
uint32_t SysEventSignal(uint32_t handle); // 20
uint32_t SysEventClear(uint32_t handle); // 21
uint32_t SysEventWait(uint32_t handle); // 22
// ---------------------------------------------------------------------------
// Anonymous Queues & Unified Handle Path (23-26)
// ---------------------------------------------------------------------------
uint32_t SysQueueCreate(uint32_t* handleOut); // 23
uint32_t SysQueueSend(uint32_t handle, const void* msg, bool blocking); // 24
uint32_t SysQueueRecv(uint32_t handle, void* msg, bool blocking); // 25
uint32_t SysCloseHandle(uint32_t handle); // 26
// ---------------------------------------------------------------------------
// File System (27-35)
// ---------------------------------------------------------------------------
uint32_t SysOpenFile(const char* path, uint32_t* handleOut); // 27
uint32_t SysReadFile(uint32_t handle, void* buf, size_t size, size_t* bytesRead); // 28
uint32_t SysWriteFile(uint32_t handle, const void* buf, size_t size, size_t* written); // 29
uint32_t SysCreateFile(const char* path, uint32_t* handleOut); // 30
uint32_t SysDeleteFile(const char* path); // 31
uint32_t SysTruncateFile(uint32_t handle, uint64_t newSize); // 32
uint64_t SysGetFilePos(uint32_t handle); // 33
uint32_t SysSeekFile(uint32_t handle, uint64_t offset); // 34
uint64_t SysGetFileSize(uint32_t handle); // 35
// ---------------------------------------------------------------------------
// Graphics & Input (36-47)
// ---------------------------------------------------------------------------
uint32_t SysScreenBlit(int x, int y, int w, int h, const uint32_t* pixels); // 36
uint32_t SysScreenClear(uint32_t color); // 37
uint32_t SysScreenGetSize(int* widthOut, int* heightOut); // 38
uint32_t SysScreenPutChar(char c, int x, int y, uint32_t fg, uint32_t bg); // 39
uint64_t SysKbPoll(void); // 40
uint64_t SysKbIsKeyDown(uint8_t scancode, bool extended); // 41
char SysKbReadChar(void); // 42
uint8_t SysKbReadScancode(void); // 43
uint32_t SysKbGetModifiers(void); // 44
uint64_t SysMousePoll(void); // 45
uint64_t SysMouseRead(int* dx, int* dy, uint8_t* buttons); // 46
void SysMouseGetPos(int* x, int* y); // 47
// ---------------------------------------------------------------------------
// System Info & Process Management (48-53)
// ---------------------------------------------------------------------------
uint64_t SysGetTick(void); // 48
uint32_t SysDebugPrint(const char* str); // 49
uint32_t SysCreateProcess(const char* path, uint32_t* handleOut, const char* cmdline); // 50
uint32_t SysWaitForProcess(uint32_t handle); // 51
uint32_t SysGetProcessExitCode(uint32_t handle, int* exitCodeOut); // 52
uint32_t SysWriteConsole(const char* buf, size_t len); // 53
// ---------------------------------------------------------------------------
// Directories & Environment (54-57)
// ---------------------------------------------------------------------------
uint32_t SysOpenDir(const char* path, uint32_t* handleOut); // 54
uint32_t SysReadDir(uint32_t handle, void* dirEntryBuffer); // 55
uint32_t SysSetCwd(const char* path); // 56
uint32_t SysGetCwd(char* buf, size_t size); // 57
// ---------------------------------------------------------------------------
// Process/Thread Helpers & Named Queues (58-63)
// ---------------------------------------------------------------------------
uint32_t SysWaitThread(uint32_t tid); // 58
uint32_t SysGetProcessPid(uint32_t handle, uint32_t* pidOut); // 59
uint32_t SysPublishQueue(const char* name, uint32_t handle); // 60
uint32_t SysOpenNamedQueue(const char* name, uint32_t* handleOut); // 61
uint32_t SysQueueDuplicate(uint32_t handle, uint32_t targetPid, uint32_t* handleOut); // 62
uint32_t SysNamedQueueOwnerPid(const char* name, uint32_t* pidOut); // 63