111 lines
6.9 KiB
C
111 lines
6.9 KiB
C
#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
|