From 8a3ffb2be13f45049a5178540490237d399b78e6 Mon Sep 17 00:00:00 2001 From: Daniel Hammer Date: Wed, 30 Sep 2026 09:43:18 +0200 Subject: [PATCH] feat: unify system status codes --- kernel/src/Api/Audio.hpp | 4 +- kernel/src/Api/BluetoothSyscall.hpp | 28 +- kernel/src/Api/BuildNo.hpp | 2 +- kernel/src/Api/Clipboard.hpp | 34 +- kernel/src/Api/Device.hpp | 8 +- kernel/src/Api/Filesystem.hpp | 54 +-- kernel/src/Api/Graphics.hpp | 15 +- kernel/src/Api/Heap.hpp | 18 +- kernel/src/Api/IoRedir.hpp | 40 +- kernel/src/Api/IpcSyscall.hpp | 12 +- kernel/src/Api/LibSyscall.hpp | 8 +- kernel/src/Api/Net.hpp | 6 +- kernel/src/Api/Power.hpp | 12 +- kernel/src/Api/Process.hpp | 60 +-- kernel/src/Api/Storage.hpp | 50 +-- kernel/src/Api/Syscall.cpp | 362 +++++++++--------- kernel/src/Api/Syscall.hpp | 4 + kernel/src/Api/Time.hpp | 4 +- kernel/src/Api/WinServer.cpp | 79 ++-- kernel/src/Api/Window.hpp | 14 +- kernel/src/Common/StatusCodes.hpp | 28 ++ kernel/src/Ipc/Ipc.cpp | 11 +- kernel/src/Sched/Consent.cpp | 14 +- programs/include/Api/Syscall.hpp | 4 + programs/include/libc/montauk.h | 21 + programs/include/montauk/statuscodes.h | 35 ++ programs/include/montauk/syscall.h | 1 + programs/lib/libc/libc.c | 10 +- programs/src/display/main.cpp | 2 +- programs/src/login/login_shutdown.cpp | 2 +- programs/src/reset/main.cpp | 2 +- programs/src/shell/main.cpp | 4 +- scripts/montauk-syscalls.py | 110 +++++- template/docs/syscalls.md | 23 ++ template/sysroot/include/Api/Syscall.hpp | 168 ++++++++ template/sysroot/include/gui/desktop.hpp | 10 + template/sysroot/include/gui/terminal.hpp | 141 +++++-- template/sysroot/include/gui/truetype.hpp | 8 +- template/sysroot/include/libc/montauk.h | 42 +- template/sysroot/include/libc/wchar.h | 1 + .../sysroot/include/montauk/capabilities.h | 216 +++++++++++ template/sysroot/include/montauk/consent.h | 209 ++++++++++ .../sysroot/include/montauk/statuscodes.h | 35 ++ template/sysroot/include/montauk/syscall.h | 67 +++- template/sysroot/include/montauk/user.h | 10 + template/sysroot/lib/liblibc.a | Bin 674538 -> 677502 bytes 46 files changed, 1499 insertions(+), 489 deletions(-) create mode 100644 kernel/src/Common/StatusCodes.hpp create mode 100644 programs/include/montauk/statuscodes.h create mode 100644 template/sysroot/include/montauk/capabilities.h create mode 100644 template/sysroot/include/montauk/consent.h create mode 100644 template/sysroot/include/montauk/statuscodes.h diff --git a/kernel/src/Api/Audio.hpp b/kernel/src/Api/Audio.hpp index bf495bf..179b8bd 100644 --- a/kernel/src/Api/Audio.hpp +++ b/kernel/src/Api/Audio.hpp @@ -36,12 +36,12 @@ namespace montauk::abi { bitsPerSample, pid, name); } - return -1; + return NoDevice; } static int64_t Sys_AudioClose(int handle) { Drivers::Audio::Mixer::Close(handle); - return 0; + return Success; } static int64_t Sys_AudioWrite(int handle, const uint8_t* data, uint32_t size) { diff --git a/kernel/src/Api/BluetoothSyscall.hpp b/kernel/src/Api/BluetoothSyscall.hpp index bd7a385..5bd2403 100644 --- a/kernel/src/Api/BluetoothSyscall.hpp +++ b/kernel/src/Api/BluetoothSyscall.hpp @@ -18,8 +18,8 @@ namespace montauk::abi { static int64_t Sys_BtScan(BtScanResult* buf, int maxCount, uint32_t timeoutMs) { - if (!buf || maxCount <= 0) return -1; - if (!Drivers::USB::Bluetooth::IsInitialized()) return -1; + if (!buf || maxCount <= 0) return InvalidArgument; + if (!Drivers::USB::Bluetooth::IsInitialized()) return NoDevice; // Use a stack buffer for kernel-side results (max 16) Drivers::USB::Bluetooth::Hci::InquiryDevice tmpBuf[16]; @@ -46,15 +46,15 @@ namespace montauk::abi { } static int64_t Sys_BtConnect(const uint8_t* bdAddr) { - if (!bdAddr) return -1; - if (!Drivers::USB::Bluetooth::IsInitialized()) return -1; + if (!bdAddr) return InvalidArgument; + if (!Drivers::USB::Bluetooth::IsInitialized()) return NoDevice; return (int64_t)Drivers::USB::Bluetooth::Connect(bdAddr); } static int64_t Sys_BtDisconnect(const uint8_t* bdAddr) { - if (!bdAddr) return -1; - if (!Drivers::USB::Bluetooth::IsInitialized()) return -1; + if (!bdAddr) return InvalidArgument; + if (!Drivers::USB::Bluetooth::IsInitialized()) return NoDevice; Kt::KernelLogStream(Kt::INFO, "Power") << "pid " << kcp::dec << (uint64_t)Sched::GetCurrentPid() @@ -63,11 +63,11 @@ namespace montauk::abi { } static int64_t Sys_BtSetAddr(const uint8_t* bdAddr) { - if (!bdAddr) return -1; - if (!Drivers::USB::Bluetooth::IsInitialized()) return -1; + if (!bdAddr) return InvalidArgument; + if (!Drivers::USB::Bluetooth::IsInitialized()) return NoDevice; // bdAddr is a 6-byte buffer, addr[0] = least-significant octet. - return Drivers::USB::Bluetooth::SetAddress(bdAddr) ? 0 : -1; + return Drivers::USB::Bluetooth::SetAddress(bdAddr) ? Success : GenericFailure; } static int64_t Sys_BtBonds(BtBondInfo* buf, int maxCount) { @@ -90,8 +90,8 @@ namespace montauk::abi { } static int64_t Sys_BtForget(const uint8_t* bdAddr) { - if (!bdAddr) return -1; - if (!Drivers::USB::Bluetooth::IsInitialized()) return -1; + if (!bdAddr) return InvalidArgument; + if (!Drivers::USB::Bluetooth::IsInitialized()) return NoDevice; return (int64_t)Drivers::USB::Bluetooth::ForgetDevice(bdAddr); } @@ -119,13 +119,13 @@ namespace montauk::abi { } static int64_t Sys_BtInfo(BtAdapterInfo* buf) { - if (!buf) return -1; + if (!buf) return InvalidArgument; memset(buf, 0, sizeof(BtAdapterInfo)); if (!Drivers::USB::Bluetooth::IsInitialized()) { buf->initialized = 0; - return -1; + return NoDevice; } buf->initialized = 1; @@ -138,7 +138,7 @@ namespace montauk::abi { for (; i < 63 && name[i]; i++) buf->name[i] = name[i]; buf->name[i] = '\0'; - return 0; + return Success; } } diff --git a/kernel/src/Api/BuildNo.hpp b/kernel/src/Api/BuildNo.hpp index 2fb68a4..377d126 100644 --- a/kernel/src/Api/BuildNo.hpp +++ b/kernel/src/Api/BuildNo.hpp @@ -12,4 +12,4 @@ #pragma once -#define MONTAUK_BUILD_NUMBER 251 +#define MONTAUK_BUILD_NUMBER 254 diff --git a/kernel/src/Api/Clipboard.hpp b/kernel/src/Api/Clipboard.hpp index 3f959bd..24b53e0 100644 --- a/kernel/src/Api/Clipboard.hpp +++ b/kernel/src/Api/Clipboard.hpp @@ -90,22 +90,24 @@ namespace montauk::abi { static int Sys_ClipboardSetText(const char* data, uint32_t len) { if (len == 0) return Sys_ClipboardClear(); - if (data == nullptr || len > CLIPBOARD_MAX_TEXT_BYTES || Memory::g_heap == nullptr) - return -1; + if (data == nullptr || len > CLIPBOARD_MAX_TEXT_BYTES) + return InvalidArgument; + if (Memory::g_heap == nullptr) + return OutOfMemory; for (uint32_t i = 0; i < len; i++) { if (data[i] == '\0') - return -1; + return InvalidArgument; } const char* currentUser = ClipboardCurrentUser(); - if (currentUser == nullptr) return -1; + if (currentUser == nullptr) return GenericFailure; char user[32]; ClipboardCopyUser(user, currentUser); char* newText = (char*)Memory::g_heap->Request(len + 1); - if (newText == nullptr) return -1; + if (newText == nullptr) return OutOfMemory; for (uint32_t i = 0; i < len; i++) newText[i] = data[i]; newText[len] = '\0'; @@ -129,18 +131,18 @@ namespace montauk::abi { if (oldText != nullptr) Memory::g_heap->Free(oldText); - return 0; + return Success; } static int Sys_ClipboardGetInfo(ClipboardInfo* out) { - if (out == nullptr) return -1; + if (out == nullptr) return InvalidArgument; out->textBytes = 0; out->_pad = 0; out->serial = 0; const char* currentUser = ClipboardCurrentUser(); - if (currentUser == nullptr) return -1; + if (currentUser == nullptr) return GenericFailure; char user[32]; ClipboardCopyUser(user, currentUser); @@ -152,17 +154,17 @@ namespace montauk::abi { out->serial = slot->serial; } g_clipboardLock.Release(); - return 0; + return Success; } static int Sys_ClipboardGetText(char* buffer, uint32_t bufferLen, uint32_t* outLen, uint64_t* outSerial) { - if (outLen == nullptr) return -1; + if (outLen == nullptr) return InvalidArgument; *outLen = 0; if (outSerial != nullptr) *outSerial = 0; const char* currentUser = ClipboardCurrentUser(); - if (currentUser == nullptr) return -1; + if (currentUser == nullptr) return GenericFailure; char user[32]; ClipboardCopyUser(user, currentUser); @@ -173,25 +175,25 @@ namespace montauk::abi { if (slot != nullptr && outSerial != nullptr) *outSerial = slot->serial; g_clipboardLock.Release(); - return 0; + return Success; } *outLen = slot->len; if (outSerial != nullptr) *outSerial = slot->serial; if (buffer == nullptr || bufferLen < slot->len) { g_clipboardLock.Release(); - return -1; + return BufferTooSmall; } for (uint32_t i = 0; i < slot->len; i++) buffer[i] = slot->text[i]; g_clipboardLock.Release(); - return 0; + return Success; } static int Sys_ClipboardClear() { const char* currentUser = ClipboardCurrentUser(); - if (currentUser == nullptr) return -1; + if (currentUser == nullptr) return GenericFailure; char user[32]; ClipboardCopyUser(user, currentUser); @@ -214,7 +216,7 @@ namespace montauk::abi { if (oldText != nullptr) Memory::g_heap->Free(oldText); - return 0; + return Success; } } diff --git a/kernel/src/Api/Device.hpp b/kernel/src/Api/Device.hpp index fb28000..0ad9906 100644 --- a/kernel/src/Api/Device.hpp +++ b/kernel/src/Api/Device.hpp @@ -225,10 +225,10 @@ namespace montauk::abi { } static int Sys_DiskInfo(DiskInfo* buf, int blockDevIndex) { - if (buf == nullptr) return -1; + if (buf == nullptr) return InvalidArgument; auto* bdev = Drivers::Storage::GetBlockDevice(blockDevIndex); - if (!bdev) return -1; + if (!bdev) return NoDevice; // Zero the struct first so SATA-specific fields default to 0 for (unsigned i = 0; i < sizeof(DiskInfo); i++) @@ -303,8 +303,8 @@ namespace montauk::abi { } // If type is still 0, this block device is not recognized - if (buf->type == 0) return -1; + if (buf->type == 0) return UnsupportedOp; - return 0; + return Success; } }; diff --git a/kernel/src/Api/Filesystem.hpp b/kernel/src/Api/Filesystem.hpp index 3311a08..fb69bcf 100644 --- a/kernel/src/Api/Filesystem.hpp +++ b/kernel/src/Api/Filesystem.hpp @@ -20,6 +20,8 @@ #include namespace montauk::abi { + // Writes refused here return SystemIntegrityError: the path is protected + // by Fs/ProtectedPaths, not merely gated on an ordinary capability. static bool CanModifyFilePath(const char* resolved) { uint64_t required = Fs::RequiredFileWriteCapability(resolved); return required == 0 || Sched::HasCapability(required); @@ -27,7 +29,7 @@ namespace montauk::abi { static int Sys_Open(const char* path) { char resolved[256]; - if (!ResolveProcessPath(path, resolved, sizeof(resolved))) return -1; + if (!ResolveProcessPath(path, resolved, sizeof(resolved))) return InvalidArgument; return Ipc::OpenFileHandle(resolved); } @@ -53,8 +55,8 @@ namespace montauk::abi { static int Sys_ReadDirAt(const char* path, const char** outNames, int maxEntries, int startIndex) { char resolved[256]; - if (!ResolveProcessPath(path, resolved, sizeof(resolved))) return -1; - if (startIndex < 0) return -1; + if (!ResolveProcessPath(path, resolved, sizeof(resolved))) return InvalidArgument; + if (startIndex < 0) return InvalidArgument; // Get entries from VFS into a kernel-local array const char* kernelNames[256]; @@ -65,7 +67,7 @@ namespace montauk::abi { // Allocate a user-accessible page for string data via process heap auto* proc = Sched::GetCurrentProcessPtr(); - if (proc == nullptr) return -1; + if (proc == nullptr) return GenericFailure; // Use a rotating ring of scratch pages below the heap instead of // extending the heap high-water mark on every call. This keeps repeated @@ -80,11 +82,11 @@ namespace montauk::abi { if (physAddr == 0) { void* page = Memory::g_pfa->AllocateZeroed(); - if (page == nullptr) return -1; + if (page == nullptr) return OutOfMemory; physAddr = Memory::SubHHDM((uint64_t)page); if (!Memory::VMM::Paging::MapUserIn(proc->pml4Phys, physAddr, userVa)) { Memory::g_pfa->Free(page); - return -1; + return OutOfMemory; } pageBuf = (uint8_t*)page; } else { @@ -113,25 +115,25 @@ namespace montauk::abi { static int Sys_FCreate(const char* path) { char resolved[256]; - if (!ResolveProcessPath(path, resolved, sizeof(resolved))) return -1; - if (!CanModifyFilePath(resolved)) return SYS_ERR_PERMISSION; + if (!ResolveProcessPath(path, resolved, sizeof(resolved))) return InvalidArgument; + if (!CanModifyFilePath(resolved)) return SystemIntegrityError; return Ipc::CreateFileHandle(resolved); } static int Sys_FDelete(const char* path) { char resolved[256]; - if (!ResolveProcessPath(path, resolved, sizeof(resolved))) return -1; - if (!CanModifyFilePath(resolved)) return SYS_ERR_PERMISSION; + if (!ResolveProcessPath(path, resolved, sizeof(resolved))) return InvalidArgument; + if (!CanModifyFilePath(resolved)) return SystemIntegrityError; return Fs::Vfs::VfsDelete(resolved); } static int Sys_Stat(const char* path, FileStat* out) { - if (out == nullptr) return -1; + if (out == nullptr) return InvalidArgument; char resolved[256]; - if (!ResolveProcessPath(path, resolved, sizeof(resolved))) return -1; + if (!ResolveProcessPath(path, resolved, sizeof(resolved))) return InvalidArgument; Fs::Vfs::StatInfo info; - if (Fs::Vfs::VfsStat(resolved, info) != 0) return -1; + if (Fs::Vfs::VfsStat(resolved, info) != 0) return NoSuchPath; out->size = info.size; out->mtime = info.mtime; @@ -139,38 +141,46 @@ namespace montauk::abi { out->atime = info.atime; out->mode = info.mode; out->isDir = info.isDir ? 1u : 0u; - return 0; + return Success; } static int Sys_Utime(const char* path, int64_t atime, int64_t mtime, bool useCurrent) { char resolved[256]; - if (!ResolveProcessPath(path, resolved, sizeof(resolved))) return -1; + if (!ResolveProcessPath(path, resolved, sizeof(resolved))) return InvalidArgument; // Timestamps are file state like any other: a protected path must not // be mutable through a side door that skips the write check. - if (!CanModifyFilePath(resolved)) return SYS_ERR_PERMISSION; + if (!CanModifyFilePath(resolved)) return SystemIntegrityError; if (useCurrent) { int64_t now = Timekeeping::GetUnixTimestamp(); atime = now; mtime = now; } - return Fs::Vfs::VfsSetTimes(resolved, atime, mtime); + // VfsSetTimes has its own codes: -1 not found, -2 unsupported by the + // filesystem, -3 timestamp out of range, -4 I/O error. + switch (Fs::Vfs::VfsSetTimes(resolved, atime, mtime)) { + case 0: return Success; + case -2: return UnsupportedOp; + case -3: return InvalidArgument; + case -4: return IoFailure; + default: return NoSuchPath; + } } static int Sys_FMkdir(const char* path) { char resolved[256]; - if (!ResolveProcessPath(path, resolved, sizeof(resolved))) return -1; - if (!CanModifyFilePath(resolved)) return SYS_ERR_PERMISSION; + if (!ResolveProcessPath(path, resolved, sizeof(resolved))) return InvalidArgument; + if (!CanModifyFilePath(resolved)) return SystemIntegrityError; return Fs::Vfs::VfsMkdir(resolved); } static int Sys_FRename(const char* oldPath, const char* newPath) { char resolvedOld[256]; char resolvedNew[256]; - if (!ResolveProcessPath(oldPath, resolvedOld, sizeof(resolvedOld))) return -1; - if (!ResolveProcessPath(newPath, resolvedNew, sizeof(resolvedNew))) return -1; + if (!ResolveProcessPath(oldPath, resolvedOld, sizeof(resolvedOld))) return InvalidArgument; + if (!ResolveProcessPath(newPath, resolvedNew, sizeof(resolvedNew))) return InvalidArgument; if (!CanModifyFilePath(resolvedOld) || !CanModifyFilePath(resolvedNew)) - return SYS_ERR_PERMISSION; + return SystemIntegrityError; return Fs::Vfs::VfsRename(resolvedOld, resolvedNew); } diff --git a/kernel/src/Api/Graphics.hpp b/kernel/src/Api/Graphics.hpp index 4a04cee..fb3304b 100644 --- a/kernel/src/Api/Graphics.hpp +++ b/kernel/src/Api/Graphics.hpp @@ -118,18 +118,18 @@ namespace montauk::abi { if ((int64_t)index == -1) { return GPU::FlipSupported() ? 1 : 0; } - if (!GPU::FlipSupported()) return -1; + if (!GPU::FlipSupported()) return UnsupportedOp; auto* proc = Sched::GetCurrentProcessPtr(); if ((int64_t)index == -2) { - return proc != nullptr ? GPU::AcquireFlip(proc->pid) : -1; + return proc != nullptr ? GPU::AcquireFlip(proc->pid) : GenericFailure; } - if (proc == nullptr) return -1; + if (proc == nullptr) return GenericFailure; return GPU::Flip((int)index, (flags & 1) != 0, proc->pid); } static int64_t Sys_DisplayInfo(DisplayInfo* out) { - return Drivers::Graphics::IntelGPU::GetDisplayInfo(out) ? 0 : -1; + return Drivers::Graphics::IntelGPU::GetDisplayInfo(out) ? Success : NoDevice; } static int64_t Sys_DisplayModes(DisplayModeInfo* out, int maxCount) { @@ -137,7 +137,12 @@ namespace montauk::abi { } static int64_t Sys_DisplaySetMode(int modeIndex) { - return Drivers::Graphics::IntelGPU::SetDisplayMode(modeIndex); + // The driver answers -2 for a mode that would need link retraining + // and -3 for a modeset that failed and was rolled back. + int64_t rc = Drivers::Graphics::IntelGPU::SetDisplayMode(modeIndex); + if (rc == -2) return UnsupportedOp; + if (rc == -3) return IoFailure; + return rc; } static int64_t Sys_DisplayBrightness(int percent) { diff --git a/kernel/src/Api/Heap.hpp b/kernel/src/Api/Heap.hpp index a4e149f..4d8ae64 100644 --- a/kernel/src/Api/Heap.hpp +++ b/kernel/src/Api/Heap.hpp @@ -211,9 +211,9 @@ namespace montauk::abi { auto* proc = Sched::GetCurrentProcessPtr(); int slot = GetCurrentSlot(); if (proc == nullptr || slot < 0 || size == 0 || (addr & 0xFFFULL) != 0 || - size > UINT64_MAX - 0xFFFULL) return -1; + size > UINT64_MAX - 0xFFFULL) return InvalidArgument; size = (size + 0xFFFULL) & ~0xFFFULL; - if (addr > UINT64_MAX - size) return -1; + if (addr > UINT64_MAX - size) return InvalidArgument; g_heapLocks[slot].Acquire(); uint64_t firstPage = 0; @@ -229,7 +229,7 @@ namespace montauk::abi { } link = &area->next; } - if (*link == nullptr) { g_heapLocks[slot].Release(); return -1; } + if (*link == nullptr) { g_heapLocks[slot].Release(); return InvalidArgument; } HeapAlloc* area = *link; uint64_t oldPages = area->numPages; @@ -262,7 +262,7 @@ namespace montauk::abi { g_heapLocks[slot].Acquire(); Sched::g_allocatedPages[slot] -= resident; g_heapLocks[slot].Release(); - return 0; + return Success; } inline int64_t Sys_Protect(uint64_t addr, uint64_t size, uint64_t prot) { @@ -272,9 +272,9 @@ namespace montauk::abi { size > UINT64_MAX - 0xFFFULL || (prot & ~(VmProtRead | VmProtWrite | VmProtExec)) != 0 || (prot & VmProtRead) == 0 || - ((prot & VmProtWrite) != 0 && (prot & VmProtExec) != 0)) return -1; + ((prot & VmProtWrite) != 0 && (prot & VmProtExec) != 0)) return InvalidArgument; size = (size + 0xFFFULL) & ~0xFFFULL; - if (addr > UINT64_MAX - size) return -1; + if (addr > UINT64_MAX - size) return InvalidArgument; g_heapLocks[slot].Acquire(); uint64_t pages = size / 0x1000ULL; @@ -293,7 +293,7 @@ namespace montauk::abi { break; } } - if (!covered) { g_heapLocks[slot].Release(); return -1; } + if (!covered) { g_heapLocks[slot].Release(); return InvalidArgument; } } uint64_t end = addr + size; @@ -343,12 +343,12 @@ namespace montauk::abi { addr + i * 0x1000ULL, writable, executable)) { g_heapLocks[slot].Release(); - return -1; + return GenericFailure; } } g_heapLocks[slot].Release(); Memory::ShootdownUserRange(proc->pml4Phys, addr, (uint32_t)pages); - return 0; + return Success; } // Resolve a non-present access inside an anonymous VMA. This is used for diff --git a/kernel/src/Api/IoRedir.hpp b/kernel/src/Api/IoRedir.hpp index b8d1726..6974e95 100644 --- a/kernel/src/Api/IoRedir.hpp +++ b/kernel/src/Api/IoRedir.hpp @@ -19,18 +19,18 @@ namespace montauk::abi { const char* path, const char* args, const SpawnCapabilities* capabilities) { char resolved[256]; - if (!ResolveProcessPath(path, resolved, sizeof(resolved))) return -1; + if (!ResolveProcessPath(path, resolved, sizeof(resolved))) return InvalidArgument; int parentSlot = Ipc::CurrentSlot(); int childPid = Sched::Spawn(resolved, args, false, nullptr, 0, capabilities); - if (childPid < 0) return -1; + if (childPid < 0) return childPid; auto* child = Sched::GetProcessByPid(childPid); int childSlot = Ipc::SlotForPid(childPid); if (child == nullptr || childSlot < 0 || parentSlot < 0) { Sched::KillProcess(childPid); - return -1; + return GenericFailure; } Ipc::Stream* outStream = Ipc::CreateStream(RedirOutputStreamCapacity); @@ -41,7 +41,7 @@ namespace montauk::abi { if (inStream != nullptr) Ipc::ReleaseStream(inStream, false, false); if (keyMailbox != nullptr) Ipc::ReleaseMailbox(keyMailbox, false, false); Sched::KillProcess(childPid); - return -1; + return OutOfMemory; } int parentOutHandle = Ipc::InstallHandleForSlot( @@ -71,7 +71,7 @@ namespace montauk::abi { if (child->ioInHandle < 0) Ipc::ReleaseStream(inStream, false, false); if (child->ioKeyHandle < 0) Ipc::ReleaseMailbox(keyMailbox, false, false); Sched::KillProcess(childPid); - return -1; + return GenericFailure; } child->redirected = true; @@ -80,7 +80,7 @@ namespace montauk::abi { child->termRows = 25; if (Sched::StartProcess(childPid) < 0) { Sched::KillProcess(childPid); - return -1; + return GenericFailure; } return childPid; @@ -93,11 +93,11 @@ namespace montauk::abi { static int Sys_SpawnRedirCaps(const char* path, const char* args, const SpawnCapabilities* requested) { auto* parent = Sched::GetCurrentProcessPtr(); - if (parent == nullptr || requested == nullptr) return -1; + if (parent == nullptr || requested == nullptr) return InvalidArgument; SpawnCapabilities copy = *requested; if (!ValidCapabilityDelegation(copy, parent->delegableCaps)) { - return SYS_ERR_PERMISSION; + return CapabilityDenied; } return Sys_SpawnRedirInternal(path, args, ©); } @@ -105,51 +105,51 @@ namespace montauk::abi { static int Sys_ChildIoRead(int childPid, char* buf, int maxLen) { auto* child = Sched::GetProcessByPid(childPid); if (child == nullptr || child->parentPid != Sched::GetCurrentPid()) - return SYS_ERR_PERMISSION; + return PermissionDenied; Ipc::HandleSnapshot snapshot; Ipc::Stream* stream = GetRedirOutStream(child, snapshot); - if (!child->redirected || stream == nullptr) return -1; + if (!child->redirected || stream == nullptr) return InvalidArgument; return Ipc::StreamRead(stream, (uint8_t*)buf, maxLen, true); } static int Sys_ChildIoWrite(int childPid, const char* data, int len) { auto* child = Sched::GetProcessByPid(childPid); if (child == nullptr || child->parentPid != Sched::GetCurrentPid()) - return SYS_ERR_PERMISSION; + return PermissionDenied; Ipc::HandleSnapshot snapshot; Ipc::Stream* stream = GetRedirInStream(child, snapshot); - if (!child->redirected || stream == nullptr) return -1; + if (!child->redirected || stream == nullptr) return InvalidArgument; return WriteAllToStream(stream, (const uint8_t*)data, len); } static int Sys_ChildIoWriteKey(int childPid, const KeyEvent* key) { - if (key == nullptr) return -1; + if (key == nullptr) return InvalidArgument; auto* child = Sched::GetProcessByPid(childPid); if (child == nullptr || child->parentPid != Sched::GetCurrentPid()) - return SYS_ERR_PERMISSION; + return PermissionDenied; Ipc::HandleSnapshot snapshot; Ipc::Mailbox* mailbox = GetRedirKeyMailbox(child, snapshot); - if (!child->redirected || mailbox == nullptr) return -1; + if (!child->redirected || mailbox == nullptr) return InvalidArgument; for (;;) { uint64_t observedWake = Sched::ObserveObjectWake(mailbox); int rc = Ipc::MailboxSend(mailbox, 0, key, sizeof(KeyEvent)); - if (rc < 0) return -1; + if (rc < 0) return GenericFailure; if (rc == 0) { Sched::BlockOnObjectSince(mailbox, 0, observedWake); continue; } - return 0; + return Success; } } static int Sys_ChildIoSetTermsz(int childPid, int cols, int rows) { auto* child = Sched::GetProcessByPid(childPid); if (child == nullptr || child->parentPid != Sched::GetCurrentPid()) - return SYS_ERR_PERMISSION; - if (!child->redirected) return -1; + return PermissionDenied; + if (!child->redirected) return InvalidArgument; child->termCols = cols; child->termRows = rows; - return 0; + return Success; } }; diff --git a/kernel/src/Api/IpcSyscall.hpp b/kernel/src/Api/IpcSyscall.hpp index 2f2df34..1ba579b 100644 --- a/kernel/src/Api/IpcSyscall.hpp +++ b/kernel/src/Api/IpcSyscall.hpp @@ -20,15 +20,15 @@ namespace montauk::abi { } static int Sys_StreamCreate(int* outReadHandle, int* outWriteHandle, uint32_t capacity) { - if (outReadHandle == nullptr || outWriteHandle == nullptr) return -1; + if (outReadHandle == nullptr || outWriteHandle == nullptr) return InvalidArgument; int readHandle = -1; int writeHandle = -1; - if (Ipc::CreateStreamHandlePair(capacity, readHandle, writeHandle) < 0) return -1; + if (Ipc::CreateStreamHandlePair(capacity, readHandle, writeHandle) < 0) return GenericFailure; *outReadHandle = readHandle; *outWriteHandle = writeHandle; - return 0; + return Success; } static int Sys_StreamRead(int handle, uint8_t* buffer, int maxLen) { @@ -40,15 +40,15 @@ namespace montauk::abi { } static int Sys_MailboxCreate(int* outSendHandle, int* outRecvHandle) { - if (outSendHandle == nullptr || outRecvHandle == nullptr) return -1; + if (outSendHandle == nullptr || outRecvHandle == nullptr) return InvalidArgument; int sendHandle = -1; int recvHandle = -1; - if (Ipc::CreateMailboxHandlePair(sendHandle, recvHandle) < 0) return -1; + if (Ipc::CreateMailboxHandlePair(sendHandle, recvHandle) < 0) return GenericFailure; *outSendHandle = sendHandle; *outRecvHandle = recvHandle; - return 0; + return Success; } static int Sys_MailboxSend(int handle, uint32_t msgType, const void* data, uint16_t len, int attachHandle) { diff --git a/kernel/src/Api/LibSyscall.hpp b/kernel/src/Api/LibSyscall.hpp index 5341235..19d4853 100644 --- a/kernel/src/Api/LibSyscall.hpp +++ b/kernel/src/Api/LibSyscall.hpp @@ -115,15 +115,15 @@ namespace montauk::abi { // Decrements refcount; actually unmaps when refcount reaches 0. inline int Sys_UnloadLib(uint64_t handle) { int slot = GetCurrentSlot(); - if (slot < 0) return -1; + if (slot < 0) return GenericFailure; int libSlot = (int)handle - 1; - if (libSlot < 0 || libSlot >= MaxLibsPerProcess) return -1; + if (libSlot < 0 || libSlot >= MaxLibsPerProcess) return InvalidArgument; g_libLocks[slot].Acquire(); if (!g_libTable[slot][libSlot].inUse) { g_libLocks[slot].Release(); - return -1; + return InvalidArgument; } g_libTable[slot][libSlot].refcount--; @@ -144,7 +144,7 @@ namespace montauk::abi { } g_libLocks[slot].Release(); - return 0; + return Success; } // Resolve a symbol in a loaded library. diff --git a/kernel/src/Api/Net.hpp b/kernel/src/Api/Net.hpp index 9924175..37a3bc6 100644 --- a/kernel/src/Api/Net.hpp +++ b/kernel/src/Api/Net.hpp @@ -164,7 +164,7 @@ namespace montauk::abi { // wired and wireless status apart: the IP configuration is global, so the // only way to say which interface owns it is `active`. static int Sys_NetIfs(NetIfInfo* out, int maxCount) { - if (out == nullptr || maxCount <= 0) return -1; + if (out == nullptr || maxCount <= 0) return InvalidArgument; const auto* active = ::Net::NetIf::Active(); int count = ::Net::NetIf::Count(); @@ -193,12 +193,12 @@ namespace montauk::abi { } static int Sys_SetNetCfg(const NetCfg* in) { - if (in == nullptr) return -1; + if (in == nullptr) return InvalidArgument; Net::SetIpAddress(in->ipAddress); Net::SetSubnetMask(in->subnetMask); Net::SetGateway(in->gateway); Net::SetDnsServer(in->dnsServer); - return 0; + return Success; } // ---- DNS resolve ---- diff --git a/kernel/src/Api/Power.hpp b/kernel/src/Api/Power.hpp index e347716..a9995d9 100644 --- a/kernel/src/Api/Power.hpp +++ b/kernel/src/Api/Power.hpp @@ -49,7 +49,7 @@ namespace montauk::abi { Kt::KernelLogStream(Kt::INFO, "Power") << "pid " << kcp::dec << (uint64_t)Sched::GetCurrentPid() << " posted graceful power request " << (uint64_t)action; - return 0; + return Success; } static void Sys_Reset() { @@ -88,7 +88,7 @@ namespace montauk::abi { static int64_t Sys_Suspend() { if (!Hal::AcpiSleep::IsS3Available()) { - return -1; // S3 not supported + return UnsupportedOp; // S3 not supported } return (int64_t)Hal::AcpiSleep::Suspend(); } @@ -98,7 +98,7 @@ namespace montauk::abi { static int64_t Sys_PowerInfo(PowerInfo* out) { Hal::CpuPower::Snapshot s{}; if (!Hal::CpuPower::GetSnapshot(s)) { - return -1; + return NoDevice; } out->hwpActive = s.HwpActive ? 1 : 0; @@ -113,7 +113,7 @@ namespace montauk::abi { out->maxMHz = s.MaxMHz; out->effMHz = s.EffMHz; out->apIdleHint = Hal::CpuIdle::GetApIdleHint(); - return 0; + return Success; } // SYS_BATTERYINFO. Fills a battery snapshot. Returns -1 on a machine with @@ -122,7 +122,7 @@ namespace montauk::abi { static int64_t Sys_BatteryInfo(BatteryInfo* out) { Hal::Battery::Status s{}; if (!Hal::Battery::GetStatus(s)) { - return -1; + return NoDevice; } out->present = s.Present ? 1 : 0; @@ -139,6 +139,6 @@ namespace montauk::abi { out->presentRate = s.PresentRate; out->voltageMv = s.VoltageMv; out->minutesRemaining = s.MinutesRemaining; - return 0; + return Success; } }; diff --git a/kernel/src/Api/Process.hpp b/kernel/src/Api/Process.hpp index 26eeaae..d9602ab 100644 --- a/kernel/src/Api/Process.hpp +++ b/kernel/src/Api/Process.hpp @@ -49,13 +49,13 @@ namespace montauk::abi { // stream, whether or not it also carries a capability grant. The child is // created suspended (startReady == false) so its first instruction cannot // run before the channels exist, and is started here once they do. - // Returns childPid, or kills the child and returns -1 on failure. + // Returns childPid, or kills the child and returns GenericFailure. static int InheritRedirection(int childPid, Sched::Process* parent, int parentSlot) { auto* child = Sched::GetProcessByPid(childPid); int childSlot = Ipc::SlotForPid(childPid); if (child == nullptr || childSlot < 0 || parentSlot < 0) { Sched::KillProcess(childPid); - return -1; + return GenericFailure; } child->ioOutHandle = DuplicateHandleBetweenSlots(parentSlot, parent->ioOutHandle, childSlot); @@ -65,7 +65,7 @@ namespace montauk::abi { if (child->ioOutHandle < 0 || child->ioInHandle < 0 || child->ioKeyHandle < 0 || !ConfigureRedirWaitsetForSlot(childSlot, child)) { Sched::KillProcess(childPid); - return -1; + return GenericFailure; } child->redirected = true; @@ -74,7 +74,7 @@ namespace montauk::abi { child->termRows = parent->termRows; if (Sched::StartProcess(childPid) < 0) { Sched::KillProcess(childPid); - return -1; + return GenericFailure; } return childPid; @@ -83,7 +83,7 @@ namespace montauk::abi { static int Sys_Spawn(const char* path, const char* args, const char* environment = nullptr, uint32_t environmentLength = 0) { char resolved[256]; - if (!ResolveProcessPath(path, resolved, sizeof(resolved))) return -1; + if (!ResolveProcessPath(path, resolved, sizeof(resolved))) return InvalidArgument; auto* parent = Sched::GetCurrentProcessPtr(); int parentSlot = Ipc::CurrentSlot(); @@ -101,7 +101,7 @@ namespace montauk::abi { static int Sys_SpawnCaps(const char* path, const char* args, const char* user, const SpawnCapabilities* requested) { auto* parent = Sched::GetCurrentProcessPtr(); - if (parent == nullptr || requested == nullptr) return -1; + if (parent == nullptr || requested == nullptr) return InvalidArgument; // Snapshot all security-sensitive userspace inputs before evaluating // them. This prevents another thread from changing a mask or owner @@ -111,7 +111,7 @@ namespace montauk::abi { const char* userOverride = nullptr; if (user != nullptr) { if (!Sched::HasCapability(CAP_USER_ADMIN)) - return SYS_ERR_PERMISSION; + return CapabilityDenied; int i = 0; for (; i < 31 && user[i]; i++) childUser[i] = user[i]; childUser[i] = '\0'; @@ -122,11 +122,11 @@ namespace montauk::abi { // possessing a capability is insufficient to pass it: the parent must // also hold it in its delegable set. if (!ValidCapabilityDelegation(copy, parent->delegableCaps)) { - return SYS_ERR_PERMISSION; + return CapabilityDenied; } char resolved[256]; - if (!ResolveProcessPath(path, resolved, sizeof(resolved))) return -1; + if (!ResolveProcessPath(path, resolved, sizeof(resolved))) return InvalidArgument; int parentSlot = Ipc::CurrentSlot(); bool inheritRedirection = parent->redirected; @@ -143,16 +143,16 @@ namespace montauk::abi { // The calling process's own capability masks. static int Sys_GetCaps(SpawnCapabilities* out) { auto* proc = Sched::GetCurrentProcessPtr(); - if (proc == nullptr || out == nullptr) return -1; + if (proc == nullptr || out == nullptr) return InvalidArgument; out->effective = proc->effectiveCaps; out->delegable = proc->delegableCaps; - return 0; + return Success; } // Copy the absolute path this process was spawned from (argv[0]). static int Sys_GetExecPath(char* buf, uint64_t maxLen) { auto* proc = Sched::GetCurrentProcessPtr(); - if (proc == nullptr || buf == nullptr || maxLen == 0) return -1; + if (proc == nullptr || buf == nullptr || maxLen == 0) return InvalidArgument; int i = 0; for (; i < (int)maxLen - 1 && proc->name[i]; i++) { buf[i] = proc->name[i]; @@ -163,7 +163,7 @@ namespace montauk::abi { static int Sys_GetArgs(char* buf, uint64_t maxLen) { auto* proc = Sched::GetCurrentProcessPtr(); - if (proc == nullptr || buf == nullptr || maxLen == 0) return -1; + if (proc == nullptr || buf == nullptr || maxLen == 0) return InvalidArgument; int i = 0; for (; i < (int)maxLen - 1 && proc->args[i]; i++) { buf[i] = proc->args[i]; @@ -174,8 +174,8 @@ namespace montauk::abi { static int Sys_GetEnviron(char* buf, uint64_t maxLen) { auto* proc = Sched::GetCurrentProcessPtr(); - if (proc == nullptr || buf == nullptr || maxLen == 0) return -1; - if (maxLen < proc->environmentLength) return -2; + if (proc == nullptr || buf == nullptr || maxLen == 0) return InvalidArgument; + if (maxLen < proc->environmentLength) return BufferTooSmall; for (uint32_t i = 0; i < proc->environmentLength; i++) buf[i] = proc->environment[i]; return (int)proc->environmentLength; @@ -184,10 +184,10 @@ namespace montauk::abi { static int Sys_SetEnviron(const char* buf, uint64_t len) { auto* proc = Sched::GetCurrentProcessPtr(); if (proc == nullptr || buf == nullptr || len == 0 || - len > Sched::Process::EnvironmentBytes || buf[len - 1] != '\0') return -1; + len > Sched::Process::EnvironmentBytes || buf[len - 1] != '\0') return InvalidArgument; for (uint64_t i = 0; i < len; i++) proc->environment[i] = buf[i]; proc->environmentLength = (uint32_t)len; - return 0; + return Success; } static int Sys_ProcList(ProcInfo* buf, int maxCount) { @@ -233,7 +233,7 @@ namespace montauk::abi { } ancestor = target->parentPid; } - if (!descendant) return SYS_ERR_PERMISSION; + if (!descendant) return PermissionDenied; } return Sched::KillProcess(pid); } @@ -247,19 +247,19 @@ namespace montauk::abi { } static int Sys_SetUser(int pid, const char* name) { - if (name == nullptr) return -1; + if (name == nullptr) return InvalidArgument; auto* target = Sched::GetProcessByPid(pid); - if (target == nullptr) return -1; + if (target == nullptr) return InvalidArgument; int i = 0; for (; i < 31 && name[i]; i++) target->user[i] = name[i]; target->user[i] = '\0'; - return 0; + return Success; } static int Sys_GetUser(char* buf, uint64_t maxLen) { auto* proc = Sched::GetCurrentProcessPtr(); - if (proc == nullptr || buf == nullptr || maxLen == 0) return -1; + if (proc == nullptr || buf == nullptr || maxLen == 0) return InvalidArgument; int i = 0; for (; i < (int)maxLen - 1 && proc->user[i]; i++) buf[i] = proc->user[i]; @@ -269,15 +269,15 @@ namespace montauk::abi { static int Sys_GetCwd(char* buf, uint64_t maxLen) { auto* proc = Sched::GetCurrentProcessPtr(); - if (proc == nullptr || buf == nullptr || maxLen == 0) return -1; + if (proc == nullptr || buf == nullptr || maxLen == 0) return InvalidArgument; const char* cwd = proc->cwd[0] ? proc->cwd : "0:/"; uint64_t cwdLen = 0; while (cwd[cwdLen] != '\0') cwdLen++; - // Reserve -1 for non-size failures so libc can distinguish them - // from a buffer that can be retried with a larger allocation. - if (maxLen <= cwdLen) return -2; + // BufferTooSmall tells libc the call can be retried with a larger + // allocation (ERANGE), unlike the other failures. + if (maxLen <= cwdLen) return BufferTooSmall; for (uint64_t i = 0; i <= cwdLen; i++) buf[i] = cwd[i]; return (int)cwdLen; @@ -304,10 +304,10 @@ namespace montauk::abi { static int Sys_Chdir(const char* path) { auto* proc = Sched::GetCurrentProcessPtr(); - if (proc == nullptr || path == nullptr) return -1; + if (proc == nullptr || path == nullptr) return InvalidArgument; char resolved[256]; - if (!ResolveProcessPath(path, resolved, sizeof(resolved))) return -1; + if (!ResolveProcessPath(path, resolved, sizeof(resolved))) return InvalidArgument; // ReadDir doubles as the directory-existence probe: it fails // for nonexistent paths and for regular files (directories are @@ -315,12 +315,12 @@ namespace montauk::abi { // would reject every valid target). { const char* entries[1]; - if (Fs::Vfs::VfsReadDir(resolved, entries, 1) < 0) return -1; + if (Fs::Vfs::VfsReadDir(resolved, entries, 1) < 0) return NoSuchPath; } int i = 0; for (; i < 255 && resolved[i]; i++) proc->cwd[i] = resolved[i]; proc->cwd[i] = '\0'; - return 0; + return Success; } }; diff --git a/kernel/src/Api/Storage.hpp b/kernel/src/Api/Storage.hpp index 9cdc89c..792d364 100644 --- a/kernel/src/Api/Storage.hpp +++ b/kernel/src/Api/Storage.hpp @@ -29,7 +29,7 @@ namespace montauk::abi { // Fill a user buffer with partition info. Returns the number of entries written. static int Sys_PartList(PartInfo* buf, int maxCount) { if (buf == nullptr || maxCount <= 0) return 0; - if (!UserMemory::Range((uint64_t)buf, (uint64_t)maxCount * sizeof(PartInfo), true)) return -1; + if (!UserMemory::Range((uint64_t)buf, (uint64_t)maxCount * sizeof(PartInfo), true)) return BadPointer; int total = Drivers::Storage::Gpt::GetPartitionCount(); int count = total < maxCount ? total : maxCount; @@ -58,10 +58,10 @@ namespace montauk::abi { } // Fill a user buffer with one entry per mounted volume. Returns the number - // of entries written, or -1 for a bad buffer. + // of entries written, or BadPointer for a bad buffer. static int Sys_VolInfo(VolInfo* buf, int maxCount) { if (buf == nullptr || maxCount <= 0) return 0; - if (!UserMemory::Range((uint64_t)buf, (uint64_t)maxCount * sizeof(VolInfo), true)) return -1; + if (!UserMemory::Range((uint64_t)buf, (uint64_t)maxCount * sizeof(VolInfo), true)) return BadPointer; int drives[Fs::Vfs::MaxDrives]; int n = Fs::Vfs::VfsDriveList(drives, Fs::Vfs::MaxDrives); @@ -99,47 +99,47 @@ namespace montauk::abi { return n; } - // Read sectors from a block device. Returns bytes read, or -1 on error. + // Read sectors from a block device. Returns bytes read, or a status code. static int64_t Sys_DiskRead(int blockDev, uint64_t lba, uint32_t count, void* buffer) { - if (buffer == nullptr || count == 0) return -1; - if (count > 128) return -1; // same limit as AHCI + if (buffer == nullptr || count == 0) return InvalidArgument; + if (count > 128) return InvalidArgument; // same limit as AHCI auto* dev = Drivers::Storage::GetBlockDevice(blockDev); - if (!dev) return -1; + if (!dev) return NoDevice; - if (lba >= dev->SectorCount || count > dev->SectorCount - lba) return -1; - if (!UserMemory::Range((uint64_t)buffer, (uint64_t)count * dev->SectorSize, true)) return -1; + if (lba >= dev->SectorCount || count > dev->SectorCount - lba) return InvalidArgument; + if (!UserMemory::Range((uint64_t)buffer, (uint64_t)count * dev->SectorSize, true)) return BadPointer; - if (!dev->ReadSectors(dev->Ctx, lba, count, buffer)) return -1; + if (!dev->ReadSectors(dev->Ctx, lba, count, buffer)) return IoFailure; return (int64_t)(count * dev->SectorSize); } - // Write sectors to a block device. Returns bytes written, or -1 on error. + // Write sectors to a block device. Returns bytes written, or a status code. static int64_t Sys_DiskWrite(int blockDev, uint64_t lba, uint32_t count, const void* buffer) { - if (buffer == nullptr || count == 0) return -1; - if (count > 128) return -1; + if (buffer == nullptr || count == 0) return InvalidArgument; + if (count > 128) return InvalidArgument; auto* dev = Drivers::Storage::GetBlockDevice(blockDev); - if (!dev) return -1; + if (!dev) return NoDevice; - if (lba >= dev->SectorCount || count > dev->SectorCount - lba) return -1; - if (!UserMemory::Range((uint64_t)buffer, (uint64_t)count * dev->SectorSize, false)) return -1; + if (lba >= dev->SectorCount || count > dev->SectorCount - lba) return InvalidArgument; + if (!UserMemory::Range((uint64_t)buffer, (uint64_t)count * dev->SectorSize, false)) return BadPointer; - if (!dev->WriteSectors(dev->Ctx, lba, count, buffer)) return -1; + if (!dev->WriteSectors(dev->Ctx, lba, count, buffer)) return IoFailure; return (int64_t)(count * dev->SectorSize); } - // Initialize a new GPT on a block device. Returns 0 on success, -1 on error. + // Initialize a new GPT on a block device. Returns 0 on success, GenericFailure on error. static int64_t Sys_GptInit(int blockDev) { Fs::FsProbe::UnmountPartitionsForBlockDevice(blockDev); return (int64_t)Drivers::Storage::Gpt::InitializeGpt(blockDev); } - // Add a partition to an existing GPT. Returns partition index on success, -1 on error. + // Add a partition to an existing GPT. Returns partition index on success, GenericFailure on error. static int64_t Sys_GptAdd(const GptAddParams* params) { - if (params == nullptr) return -1; + if (params == nullptr) return InvalidArgument; Drivers::Storage::Gpt::Guid typeGuid; __builtin_memcpy(&typeGuid, ¶ms->typeGuid, sizeof(typeGuid)); @@ -149,7 +149,7 @@ namespace montauk::abi { typeGuid, params->name); } - // Mount a partition as a VFS drive. Returns 0 on success, -1 on error. + // Mount a partition as a VFS drive. Returns 0 on success, GenericFailure on error. static int64_t Sys_FsMount(int partIndex, int driveNum) { return (int64_t)Fs::FsProbe::MountPartition(partIndex, driveNum); } @@ -163,12 +163,12 @@ namespace montauk::abi { return (int64_t)Fs::FsProbe::SyncAndUnmountAll(); } - // Format a partition with a filesystem. Returns 0 on success, -1 on error. + // Format a partition with a filesystem. Returns 0 on success, GenericFailure on error. static int64_t Sys_FsFormat(const FsFormatParams* params) { - if (params == nullptr) return -1; + if (params == nullptr) return InvalidArgument; auto* part = Drivers::Storage::Gpt::GetPartition(params->partIndex); - if (!part) return -1; + if (!part) return InvalidArgument; switch (params->fsType) { case FS_TYPE_FAT32: @@ -180,7 +180,7 @@ namespace montauk::abi { part->BlockDevIndex, part->StartLba, part->SectorCount, params->label[0] ? params->label : nullptr); default: - return -1; // unknown filesystem type + return UnsupportedOp; // unknown filesystem type } } diff --git a/kernel/src/Api/Syscall.cpp b/kernel/src/Api/Syscall.cpp index 30c93bc..314bb42 100644 --- a/kernel/src/Api/Syscall.cpp +++ b/kernel/src/Api/Syscall.cpp @@ -62,54 +62,54 @@ namespace montauk::abi { switch (frame->syscall_nr) { case SYS_EXIT: { Sys_Exit((int)frame->arg1); - return 0; + return Success; } case SYS_YIELD: Sys_Yield(); - return 0; + return Success; case SYS_SLEEP_MS: Sys_SleepMs(frame->arg1); - return 0; + return Success; case SYS_GETPID: return (int64_t)Sys_GetPid(); case SYS_PRINT: - if (!UserMemory::String(frame->arg1, kMaxPrintableStringBytes)) return -1; + if (!UserMemory::String(frame->arg1, kMaxPrintableStringBytes)) return BadPointer; Sys_Print((const char*)frame->arg1); - return 0; + return Success; case SYS_PUTCHAR: Sys_Putchar((char)frame->arg1); - return 0; + return Success; case SYS_OPEN: - if (!UserMemory::String(frame->arg1, kMaxPathBytes)) return -1; + if (!UserMemory::String(frame->arg1, kMaxPathBytes)) return BadPointer; return (int64_t)Sys_Open((const char*)frame->arg1); case SYS_READ: - if (!UserMemory::Range(frame->arg2, frame->arg4, true)) return -1; + if (!UserMemory::Range(frame->arg2, frame->arg4, true)) return BadPointer; return (int64_t)Sys_Read((int)frame->arg1, (uint8_t*)frame->arg2, frame->arg3, frame->arg4); case SYS_GETSIZE: return (int64_t)Sys_GetSize((int)frame->arg1); case SYS_CLOSE: Sys_Close((int)frame->arg1); - return 0; + return Success; case SYS_READDIR: - if ((int64_t)frame->arg3 < 0) return -1; - if (!UserMemory::String(frame->arg1, kMaxPathBytes)) return -1; + if ((int64_t)frame->arg3 < 0) return InvalidArgument; + if (!UserMemory::String(frame->arg1, kMaxPathBytes)) return BadPointer; if (!UserMemory::Range(frame->arg2, (uint64_t)((frame->arg3 > 256) ? 256 : frame->arg3) * sizeof(const char*), true)) { - return -1; + return BadPointer; } return (int64_t)Sys_ReadDir((const char*)frame->arg1, (const char**)frame->arg2, (int)frame->arg3); case SYS_READDIR_AT: - if ((int64_t)frame->arg3 < 0) return -1; - if ((int64_t)frame->arg4 < 0) return -1; - if (!UserMemory::String(frame->arg1, kMaxPathBytes)) return -1; + if ((int64_t)frame->arg3 < 0) return InvalidArgument; + if ((int64_t)frame->arg4 < 0) return InvalidArgument; + if (!UserMemory::String(frame->arg1, kMaxPathBytes)) return BadPointer; if (!UserMemory::Range(frame->arg2, (uint64_t)((frame->arg3 > 256) ? 256 : frame->arg3) * sizeof(const char*), true)) { - return -1; + return BadPointer; } return (int64_t)Sys_ReadDirAt((const char*)frame->arg1, (const char**)frame->arg2, @@ -121,7 +121,7 @@ namespace montauk::abi { return (int64_t)Sys_AllocEager(frame->arg1); case SYS_FREE: Sys_Free(frame->arg1); - return 0; + return Success; case SYS_MMAP_ANON: return (int64_t)Sys_MapAnonymous(frame->arg1, frame->arg2); case SYS_MUNMAP: @@ -133,15 +133,15 @@ namespace montauk::abi { case SYS_GETMILLISECONDS: return (int64_t)Sys_GetMilliseconds(); case SYS_GETINFO: - if (!UserMemory::Writable(frame->arg1)) return -1; + if (!UserMemory::Writable(frame->arg1)) return BadPointer; Sys_GetInfo((SysInfo*)frame->arg1); - return 0; + return Success; case SYS_ISKEYAVAILABLE: return (int64_t)Sys_IsKeyAvailable(); case SYS_GETKEY: - if (!UserMemory::Writable(frame->arg1)) return -1; + if (!UserMemory::Writable(frame->arg1)) return BadPointer; Sys_GetKey((KeyEvent*)frame->arg1); - return 0; + return Success; case SYS_GETCHAR: return (int64_t)Sys_GetChar(); case SYS_GETCHAR_NB: @@ -149,73 +149,75 @@ namespace montauk::abi { case SYS_PING: return (int64_t)Sys_Ping((uint32_t)frame->arg1, (uint32_t)frame->arg2); case SYS_SPAWN: - if (!UserMemory::String(frame->arg1, kMaxPathBytes)) return -1; - if (frame->arg2 != 0 && !UserMemory::String(frame->arg2, kMaxArgsBytes)) return -1; + if (!UserMemory::String(frame->arg1, kMaxPathBytes)) return BadPointer; + if (frame->arg2 != 0 && !UserMemory::String(frame->arg2, kMaxArgsBytes)) return BadPointer; return (int64_t)Sys_Spawn((const char*)frame->arg1, UserMemory::IsUserPtr(frame->arg2) ? (const char*)frame->arg2 : nullptr); case SYS_SPAWN_CAPS: - if (!UserMemory::String(frame->arg1, kMaxPathBytes)) return -1; - if (frame->arg2 != 0 && !UserMemory::String(frame->arg2, kMaxArgsBytes)) return -1; - if (frame->arg3 != 0 && !UserMemory::String(frame->arg3, 32)) return -1; - if (!UserMemory::Readable(frame->arg4)) return -1; + if (!UserMemory::String(frame->arg1, kMaxPathBytes)) return BadPointer; + if (frame->arg2 != 0 && !UserMemory::String(frame->arg2, kMaxArgsBytes)) return BadPointer; + if (frame->arg3 != 0 && !UserMemory::String(frame->arg3, 32)) return BadPointer; + if (!UserMemory::Readable(frame->arg4)) return BadPointer; return (int64_t)Sys_SpawnCaps( (const char*)frame->arg1, frame->arg2 ? (const char*)frame->arg2 : nullptr, frame->arg3 ? (const char*)frame->arg3 : nullptr, (const SpawnCapabilities*)frame->arg4); case SYS_SPAWN_ENV: - if (!UserMemory::String(frame->arg1, kMaxPathBytes)) return -1; - if (frame->arg2 != 0 && !UserMemory::String(frame->arg2, kMaxArgsBytes)) return -1; - if (frame->arg3 == 0 || frame->arg4 == 0 || - frame->arg4 > Sched::Process::EnvironmentBytes || - !UserMemory::Range(frame->arg3, frame->arg4, false) || - ((const char*)frame->arg3)[frame->arg4 - 1] != '\0') return -1; + if (!UserMemory::String(frame->arg1, kMaxPathBytes)) return BadPointer; + if (frame->arg2 != 0 && !UserMemory::String(frame->arg2, kMaxArgsBytes)) return BadPointer; + if (frame->arg4 == 0 || frame->arg4 > Sched::Process::EnvironmentBytes) + return InvalidArgument; + if (frame->arg3 == 0 || !UserMemory::Range(frame->arg3, frame->arg4, false)) + return BadPointer; + if (((const char*)frame->arg3)[frame->arg4 - 1] != '\0') return InvalidArgument; return (int64_t)Sys_Spawn((const char*)frame->arg1, UserMemory::IsUserPtr(frame->arg2) ? (const char*)frame->arg2 : nullptr, (const char*)frame->arg3, (uint32_t)frame->arg4); case SYS_WAITPID: return Sys_WaitPid((int)frame->arg1); case SYS_GETENVIRON: - if (!UserMemory::Range(frame->arg1, frame->arg2, true)) return -1; + if (!UserMemory::Range(frame->arg1, frame->arg2, true)) return BadPointer; return Sys_GetEnviron((char*)frame->arg1, frame->arg2); case SYS_SETENVIRON: - if (frame->arg2 == 0 || frame->arg2 > Sched::Process::EnvironmentBytes || - !UserMemory::Range(frame->arg1, frame->arg2, false)) return -1; + if (frame->arg2 == 0 || frame->arg2 > Sched::Process::EnvironmentBytes) + return InvalidArgument; + if (!UserMemory::Range(frame->arg1, frame->arg2, false)) return BadPointer; return Sys_SetEnviron((const char*)frame->arg1, frame->arg2); case SYS_FBINFO: - if (!UserMemory::Writable(frame->arg1)) return -1; + if (!UserMemory::Writable(frame->arg1)) return BadPointer; Sys_FbInfo((FbInfo*)frame->arg1); - return 0; + return Success; case SYS_FBMAP: return (int64_t)Sys_FbMap(); case SYS_FBFLIP: return Sys_FbFlip(frame->arg1, frame->arg2); case SYS_DISPLAYINFO: - if (!UserMemory::Writable(frame->arg1)) return -1; + if (!UserMemory::Writable(frame->arg1)) return BadPointer; return Sys_DisplayInfo((DisplayInfo*)frame->arg1); case SYS_DISPLAYMODES: // The Intel driver publishes at most 32 modes. Bounding this // here also keeps the userspace range calculation overflow-free. - if ((int64_t)frame->arg2 < 0 || frame->arg2 > 32) return -1; + if ((int64_t)frame->arg2 < 0 || frame->arg2 > 32) return InvalidArgument; if (!UserMemory::Range(frame->arg1, - (uint64_t)frame->arg2 * sizeof(DisplayModeInfo), true)) return -1; + (uint64_t)frame->arg2 * sizeof(DisplayModeInfo), true)) return BadPointer; return Sys_DisplayModes((DisplayModeInfo*)frame->arg1, (int)frame->arg2); case SYS_DISPLAYSETMODE: - if (!Sched::Consent::Require(CAP_DISPLAY_ADMIN)) return SYS_ERR_PERMISSION; + if (!Sched::Consent::Require(CAP_DISPLAY_ADMIN)) return CapabilityDenied; return Sys_DisplaySetMode((int)frame->arg1); case SYS_DISPLAYBRIGHTNESS: if ((int64_t)frame->arg1 >= 0 && - !Sched::Consent::Require(CAP_DISPLAY_ADMIN)) return SYS_ERR_PERMISSION; + !Sched::Consent::Require(CAP_DISPLAY_ADMIN)) return CapabilityDenied; return Sys_DisplayBrightness((int)frame->arg1); case SYS_GETEXECPATH: - if (!UserMemory::Range(frame->arg2 ? frame->arg1 : frame->arg1, frame->arg2, true)) return -1; + if (!UserMemory::Range(frame->arg2 ? frame->arg1 : frame->arg1, frame->arg2, true)) return BadPointer; return Sys_GetExecPath((char*)frame->arg1, frame->arg2); case SYS_STAT: - if (!UserMemory::String(frame->arg1, kMaxPathBytes)) return -1; - if (!UserMemory::Writable(frame->arg2)) return -1; + if (!UserMemory::String(frame->arg1, kMaxPathBytes)) return BadPointer; + if (!UserMemory::Writable(frame->arg2)) return BadPointer; return (int64_t)Sys_Stat((const char*)frame->arg1, (FileStat*)frame->arg2); case SYS_UTIME: - if (!UserMemory::String(frame->arg1, kMaxPathBytes)) return -1; + if (!UserMemory::String(frame->arg1, kMaxPathBytes)) return BadPointer; return (int64_t)Sys_Utime((const char*)frame->arg1, (int64_t)frame->arg2, (int64_t)frame->arg3, @@ -223,33 +225,33 @@ namespace montauk::abi { case SYS_TERMSIZE: return (int64_t)Sys_TermSize(); case SYS_GETARGS: - if (!UserMemory::Range(frame->arg1, frame->arg2, true)) return -1; + if (!UserMemory::Range(frame->arg1, frame->arg2, true)) return BadPointer; return (int64_t)Sys_GetArgs((char*)frame->arg1, frame->arg2); case SYS_RESET: - if (!Sched::HasCapability(CAP_POWER_CONTROL)) return SYS_ERR_PERMISSION; + if (!Sched::HasCapability(CAP_POWER_CONTROL)) return CapabilityDenied; Sys_Reset(); - return 0; + return Success; case SYS_SHUTDOWN: - if (!Sched::HasCapability(CAP_POWER_CONTROL)) return SYS_ERR_PERMISSION; + if (!Sched::HasCapability(CAP_POWER_CONTROL)) return CapabilityDenied; Sys_Shutdown(); - return 0; + return Success; case SYS_POWER_REQUEST: if (frame->arg1 != POWER_REQ_QUERY && frame->arg1 != POWER_REQ_SHUTDOWN && frame->arg1 != POWER_REQ_REBOOT && - frame->arg1 != POWER_REQ_PEEK) return -1; + frame->arg1 != POWER_REQ_PEEK) return InvalidArgument; if (frame->arg1 == POWER_REQ_QUERY) { - if (!Sched::HasCapability(CAP_POWER_CONTROL)) return SYS_ERR_PERMISSION; + if (!Sched::HasCapability(CAP_POWER_CONTROL)) return CapabilityDenied; } else if (!Sched::HasCapability(CAP_POWER_REQUEST)) { - return SYS_ERR_PERMISSION; + return CapabilityDenied; } return Sys_PowerRequest((int)frame->arg1); case SYS_GETTIME: - if (!UserMemory::Writable(frame->arg1)) return -1; + if (!UserMemory::Writable(frame->arg1)) return BadPointer; Sys_GetTime((DateTime*)frame->arg1); - return 0; + return Success; case SYS_SETUNIXTIME: - if (!Sched::Consent::Require(CAP_SET_TIME)) return SYS_ERR_PERMISSION; + if (!Sched::Consent::Require(CAP_SET_TIME)) return CapabilityDenied; return Sys_SetUnixTime((int64_t)frame->arg1); case SYS_SOCKET: return (int64_t)Sys_Socket((int)frame->arg1); @@ -262,114 +264,114 @@ namespace montauk::abi { case SYS_ACCEPT: return (int64_t)Sys_Accept((int)frame->arg1); case SYS_SEND: - if (!UserMemory::Range(frame->arg2, frame->arg3, false)) return -1; + if (!UserMemory::Range(frame->arg2, frame->arg3, false)) return BadPointer; return (int64_t)Sys_Send((int)frame->arg1, (const uint8_t*)frame->arg2, (uint32_t)frame->arg3); case SYS_RECV: - if (!UserMemory::Range(frame->arg2, frame->arg3, true)) return -1; + if (!UserMemory::Range(frame->arg2, frame->arg3, true)) return BadPointer; return (int64_t)Sys_Recv((int)frame->arg1, (uint8_t*)frame->arg2, (uint32_t)frame->arg3); case SYS_CLOSESOCK: Sys_CloseSock((int)frame->arg1); - return 0; + return Success; case SYS_GETNETCFG: - if (!UserMemory::Writable(frame->arg1)) return -1; + if (!UserMemory::Writable(frame->arg1)) return BadPointer; Sys_GetNetCfg((NetCfg*)frame->arg1); - return 0; + return Success; case SYS_SETNETCFG: - if (!Sched::Consent::Require(CAP_NETWORK_ADMIN)) return SYS_ERR_PERMISSION; - if (!UserMemory::Readable(frame->arg1)) return -1; + if (!Sched::Consent::Require(CAP_NETWORK_ADMIN)) return CapabilityDenied; + if (!UserMemory::Readable(frame->arg1)) return BadPointer; return (int64_t)Sys_SetNetCfg((const NetCfg*)frame->arg1); case SYS_NETSTATUS: - if (!UserMemory::Writable(frame->arg1)) return -1; + if (!UserMemory::Writable(frame->arg1)) return BadPointer; Sys_NetStatus((NetStatus*)frame->arg1); - return 0; + return Success; case SYS_SENDTO: - if (!UserMemory::Range(frame->arg2, frame->arg3, false)) return -1; + if (!UserMemory::Range(frame->arg2, frame->arg3, false)) return BadPointer; return (int64_t)Sys_SendTo((int)frame->arg1, (const uint8_t*)frame->arg2, (uint32_t)frame->arg3, (uint32_t)frame->arg4, (uint16_t)frame->arg5); case SYS_RECVFROM: - if (!UserMemory::Range(frame->arg2, frame->arg3, true)) return -1; - if (!UserMemory::OptionalRange(frame->arg4, sizeof(uint32_t), true)) return -1; - if (!UserMemory::OptionalRange(frame->arg5, sizeof(uint16_t), true)) return -1; + if (!UserMemory::Range(frame->arg2, frame->arg3, true)) return BadPointer; + if (!UserMemory::OptionalRange(frame->arg4, sizeof(uint32_t), true)) return BadPointer; + if (!UserMemory::OptionalRange(frame->arg5, sizeof(uint16_t), true)) return BadPointer; return (int64_t)Sys_RecvFrom((int)frame->arg1, (uint8_t*)frame->arg2, (uint32_t)frame->arg3, UserMemory::IsUserPtr(frame->arg4) ? (uint32_t*)frame->arg4 : nullptr, UserMemory::IsUserPtr(frame->arg5) ? (uint16_t*)frame->arg5 : nullptr); case SYS_FWRITE: - if (!UserMemory::Range(frame->arg2, frame->arg4, false)) return -1; + if (!UserMemory::Range(frame->arg2, frame->arg4, false)) return BadPointer; return (int64_t)Sys_FWrite((int)frame->arg1, (const uint8_t*)frame->arg2, frame->arg3, frame->arg4); case SYS_FCREATE: - if (!UserMemory::String(frame->arg1, kMaxPathBytes)) return -1; + if (!UserMemory::String(frame->arg1, kMaxPathBytes)) return BadPointer; return (int64_t)Sys_FCreate((const char*)frame->arg1); case SYS_FDELETE: - if (!UserMemory::String(frame->arg1, kMaxPathBytes)) return -1; + if (!UserMemory::String(frame->arg1, kMaxPathBytes)) return BadPointer; return (int64_t)Sys_FDelete((const char*)frame->arg1); case SYS_FMKDIR: - if (!UserMemory::String(frame->arg1, kMaxPathBytes)) return -1; + if (!UserMemory::String(frame->arg1, kMaxPathBytes)) return BadPointer; return (int64_t)Sys_FMkdir((const char*)frame->arg1); case SYS_FRENAME: - if (!UserMemory::String(frame->arg1, kMaxPathBytes)) return -1; - if (!UserMemory::String(frame->arg2, kMaxPathBytes)) return -1; + if (!UserMemory::String(frame->arg1, kMaxPathBytes)) return BadPointer; + if (!UserMemory::String(frame->arg2, kMaxPathBytes)) return BadPointer; return (int64_t)Sys_FRename((const char*)frame->arg1, (const char*)frame->arg2); case SYS_DRIVELIST: - if ((int64_t)frame->arg2 < 0) return -1; - if (!UserMemory::Range(frame->arg1, (uint64_t)frame->arg2 * sizeof(int), true)) return -1; + if ((int64_t)frame->arg2 < 0) return InvalidArgument; + if (!UserMemory::Range(frame->arg1, (uint64_t)frame->arg2 * sizeof(int), true)) return BadPointer; return (int64_t)Sys_DriveList((int*)frame->arg1, (int)frame->arg2); case SYS_DRIVELABEL: - if ((int64_t)frame->arg3 <= 0) return -1; - if (!UserMemory::Range(frame->arg2, frame->arg3, true)) return -1; + if ((int64_t)frame->arg3 <= 0) return InvalidArgument; + if (!UserMemory::Range(frame->arg2, frame->arg3, true)) return BadPointer; return (int64_t)Sys_DriveLabel((int)frame->arg1, (char*)frame->arg2, (int)frame->arg3); case SYS_DRIVEKIND: return (int64_t)Sys_DriveKind((int)frame->arg1); case SYS_TERMSCALE: return Sys_TermScale(frame->arg1, frame->arg2); case SYS_RESOLVE: - if (!UserMemory::String(frame->arg1, kMaxHostnameBytes)) return -1; + if (!UserMemory::String(frame->arg1, kMaxHostnameBytes)) return BadPointer; return Sys_Resolve((const char*)frame->arg1); case SYS_GETRANDOM: - if (!UserMemory::Range(frame->arg1, frame->arg2, true)) return -1; + if (!UserMemory::Range(frame->arg1, frame->arg2, true)) return BadPointer; return Sys_GetRandom((uint8_t*)frame->arg1, frame->arg2); case SYS_LOG: - if (!Sched::Consent::Require(CAP_LOG_READ)) return SYS_ERR_PERMISSION; - if (!UserMemory::Range(frame->arg1, frame->arg2, true)) return -1; + if (!Sched::Consent::Require(CAP_LOG_READ)) return CapabilityDenied; + if (!UserMemory::Range(frame->arg1, frame->arg2, true)) return BadPointer; return Kt::ReadKernelLogBuffer((char*)frame->arg1, frame->arg2); case SYS_MOUSESTATE: - if (!UserMemory::Writable(frame->arg1)) return -1; + if (!UserMemory::Writable(frame->arg1)) return BadPointer; Sys_MouseState((MouseState*)frame->arg1); - return 0; + return Success; case SYS_SETMOUSEBOUNDS: Sys_SetMouseBounds((int32_t)frame->arg1, (int32_t)frame->arg2); - return 0; + return Success; case SYS_SPAWN_REDIR: - if (!UserMemory::String(frame->arg1, kMaxPathBytes)) return -1; - if (frame->arg2 != 0 && !UserMemory::String(frame->arg2, kMaxArgsBytes)) return -1; + if (!UserMemory::String(frame->arg1, kMaxPathBytes)) return BadPointer; + if (frame->arg2 != 0 && !UserMemory::String(frame->arg2, kMaxArgsBytes)) return BadPointer; return (int64_t)Sys_SpawnRedir((const char*)frame->arg1, UserMemory::IsUserPtr(frame->arg2) ? (const char*)frame->arg2 : nullptr); case SYS_SPAWN_REDIR_CAPS: - if (!UserMemory::String(frame->arg1, kMaxPathBytes)) return -1; - if (frame->arg2 != 0 && !UserMemory::String(frame->arg2, kMaxArgsBytes)) return -1; - if (!UserMemory::Readable(frame->arg3)) return -1; + if (!UserMemory::String(frame->arg1, kMaxPathBytes)) return BadPointer; + if (frame->arg2 != 0 && !UserMemory::String(frame->arg2, kMaxArgsBytes)) return BadPointer; + if (!UserMemory::Readable(frame->arg3)) return BadPointer; return (int64_t)Sys_SpawnRedirCaps( (const char*)frame->arg1, frame->arg2 ? (const char*)frame->arg2 : nullptr, (const SpawnCapabilities*)frame->arg3); case SYS_CHILDIO_READ: - if ((int64_t)frame->arg3 < 0) return -1; - if (!UserMemory::Range(frame->arg2, (uint64_t)frame->arg3, true)) return -1; + if ((int64_t)frame->arg3 < 0) return InvalidArgument; + if (!UserMemory::Range(frame->arg2, (uint64_t)frame->arg3, true)) return BadPointer; return (int64_t)Sys_ChildIoRead((int)frame->arg1, (char*)frame->arg2, (int)frame->arg3); case SYS_CHILDIO_WRITE: - if ((int64_t)frame->arg3 < 0) return -1; - if (!UserMemory::Range(frame->arg2, (uint64_t)frame->arg3, false)) return -1; + if ((int64_t)frame->arg3 < 0) return InvalidArgument; + if (!UserMemory::Range(frame->arg2, (uint64_t)frame->arg3, false)) return BadPointer; return (int64_t)Sys_ChildIoWrite((int)frame->arg1, (const char*)frame->arg2, (int)frame->arg3); case SYS_CHILDIO_WRITEKEY: - if (!UserMemory::Readable(frame->arg2)) return -1; + if (!UserMemory::Readable(frame->arg2)) return BadPointer; return (int64_t)Sys_ChildIoWriteKey((int)frame->arg1, (const KeyEvent*)frame->arg2); case SYS_CHILDIO_SETTERMSZ: return (int64_t)Sys_ChildIoSetTermsz((int)frame->arg1, (int)frame->arg2, (int)frame->arg3); case SYS_WINCREATE: - if (!UserMemory::String(frame->arg1, kMaxWindowTitleBytes)) return -1; - if (!UserMemory::Writable(frame->arg4)) return -1; + if (!UserMemory::String(frame->arg1, kMaxWindowTitleBytes)) return BadPointer; + if (!UserMemory::Writable(frame->arg4)) return BadPointer; return (int64_t)Sys_WinCreate((const char*)frame->arg1, (int)frame->arg2, (int)frame->arg3, (WinCreateResult*)frame->arg4); case SYS_WINDESTROY: @@ -377,38 +379,38 @@ namespace montauk::abi { case SYS_WINPRESENT: return (int64_t)Sys_WinPresent((int)frame->arg1); case SYS_WINPOLL: - if (!UserMemory::Writable(frame->arg2)) return -1; + if (!UserMemory::Writable(frame->arg2)) return BadPointer; return (int64_t)Sys_WinPoll((int)frame->arg1, (WinEvent*)frame->arg2); case SYS_WINENUM: - if ((int64_t)frame->arg2 < 0) return -1; - if (!UserMemory::Range(frame->arg1, (uint64_t)frame->arg2 * sizeof(WinInfo), true)) return -1; + if ((int64_t)frame->arg2 < 0) return InvalidArgument; + if (!UserMemory::Range(frame->arg1, (uint64_t)frame->arg2 * sizeof(WinInfo), true)) return BadPointer; return (int64_t)Sys_WinEnum((WinInfo*)frame->arg1, (int)frame->arg2); case SYS_WINMAP: return (int64_t)Sys_WinMap((int)frame->arg1); case SYS_WINUNMAP: return (int64_t)Sys_WinUnmap((int)frame->arg1); case SYS_WINSENDEVENT: - if (!UserMemory::Readable(frame->arg2)) return -1; + if (!UserMemory::Readable(frame->arg2)) return BadPointer; return (int64_t)Sys_WinSendEvent((int)frame->arg1, (const WinEvent*)frame->arg2); case SYS_WINRESIZE: return (int64_t)Sys_WinResize((int)frame->arg1, (int)frame->arg2, (int)frame->arg3); case SYS_PROCLIST: - if ((int64_t)frame->arg2 < 0) return -1; - if (!UserMemory::Range(frame->arg1, (uint64_t)frame->arg2 * sizeof(ProcInfo), true)) return -1; + if ((int64_t)frame->arg2 < 0) return InvalidArgument; + if (!UserMemory::Range(frame->arg1, (uint64_t)frame->arg2 * sizeof(ProcInfo), true)) return BadPointer; return (int64_t)Sys_ProcList((ProcInfo*)frame->arg1, (int)frame->arg2); case SYS_KILL: return (int64_t)Sys_Kill((int)frame->arg1); case SYS_SETSESSION: return (int64_t)Sys_SetSession(); case SYS_KILLSESSION: - if (!Sched::HasCapability(CAP_PROCESS_ADMIN)) return SYS_ERR_PERMISSION; + if (!Sched::HasCapability(CAP_PROCESS_ADMIN)) return CapabilityDenied; return (int64_t)Sys_KillSession((int)frame->arg1); case SYS_DEVLIST: - if ((int64_t)frame->arg2 < 0) return -1; - if (!UserMemory::Range(frame->arg1, (uint64_t)frame->arg2 * sizeof(DevInfo), true)) return -1; + if ((int64_t)frame->arg2 < 0) return InvalidArgument; + if (!UserMemory::Range(frame->arg1, (uint64_t)frame->arg2 * sizeof(DevInfo), true)) return BadPointer; return (int64_t)Sys_DevList((DevInfo*)frame->arg1, (int)frame->arg2); case SYS_DISKINFO: - if (!UserMemory::Writable(frame->arg1)) return -1; + if (!UserMemory::Writable(frame->arg1)) return BadPointer; return (int64_t)Sys_DiskInfo((DiskInfo*)frame->arg1, (int)frame->arg2); case SYS_WINSETSCALE: return (int64_t)Sys_WinSetScale((int)frame->arg1); @@ -419,54 +421,54 @@ namespace montauk::abi { case SYS_WINSETFLAGS: return (int64_t)Sys_WinSetFlags((int)frame->arg1, (uint32_t)frame->arg2); case SYS_MEMSTATS: - if (!UserMemory::Writable(frame->arg1)) return -1; + if (!UserMemory::Writable(frame->arg1)) return BadPointer; Sys_MemStats((MemStats*)frame->arg1); - return 0; + return Success; case SYS_PARTLIST: - if ((int64_t)frame->arg2 < 0) return -1; - if (!UserMemory::Range(frame->arg1, (uint64_t)frame->arg2 * sizeof(PartInfo), true)) return -1; + if ((int64_t)frame->arg2 < 0) return InvalidArgument; + if (!UserMemory::Range(frame->arg1, (uint64_t)frame->arg2 * sizeof(PartInfo), true)) return BadPointer; return (int64_t)Sys_PartList((PartInfo*)frame->arg1, (int)frame->arg2); case SYS_VOLINFO: - if ((int64_t)frame->arg2 < 0) return -1; - if (!UserMemory::Range(frame->arg1, (uint64_t)frame->arg2 * sizeof(VolInfo), true)) return -1; + if ((int64_t)frame->arg2 < 0) return InvalidArgument; + if (!UserMemory::Range(frame->arg1, (uint64_t)frame->arg2 * sizeof(VolInfo), true)) return BadPointer; return (int64_t)Sys_VolInfo((VolInfo*)frame->arg1, (int)frame->arg2); case SYS_DISKREAD: - if (!Sched::HasCapability(CAP_RAW_STORAGE)) return SYS_ERR_PERMISSION; + if (!Sched::HasCapability(CAP_RAW_STORAGE)) return CapabilityDenied; return (int64_t)Sys_DiskRead((int)frame->arg1, frame->arg2, (uint32_t)frame->arg3, (void*)frame->arg4); case SYS_DISKWRITE: - if (!Sched::HasCapability(CAP_RAW_STORAGE)) return SYS_ERR_PERMISSION; + if (!Sched::HasCapability(CAP_RAW_STORAGE)) return CapabilityDenied; return (int64_t)Sys_DiskWrite((int)frame->arg1, frame->arg2, (uint32_t)frame->arg3, (const void*)frame->arg4); case SYS_GPTINIT: - if (!Sched::Consent::Require(CAP_STORAGE_ADMIN)) return SYS_ERR_PERMISSION; + if (!Sched::Consent::Require(CAP_STORAGE_ADMIN)) return CapabilityDenied; return (int64_t)Sys_GptInit((int)frame->arg1); case SYS_GPTADD: - if (!Sched::Consent::Require(CAP_STORAGE_ADMIN)) return SYS_ERR_PERMISSION; - if (!UserMemory::Readable(frame->arg1)) return -1; + if (!Sched::Consent::Require(CAP_STORAGE_ADMIN)) return CapabilityDenied; + if (!UserMemory::Readable(frame->arg1)) return BadPointer; return (int64_t)Sys_GptAdd((const GptAddParams*)frame->arg1); case SYS_FSMOUNT: - if (!Sched::Consent::Require(CAP_STORAGE_ADMIN)) return SYS_ERR_PERMISSION; + if (!Sched::Consent::Require(CAP_STORAGE_ADMIN)) return CapabilityDenied; return (int64_t)Sys_FsMount((int)frame->arg1, (int)frame->arg2); case SYS_FS_SYNC: - if (!Sched::Consent::Require(CAP_STORAGE_ADMIN)) return SYS_ERR_PERMISSION; + if (!Sched::Consent::Require(CAP_STORAGE_ADMIN)) return CapabilityDenied; return Sys_FsSync(); case SYS_FSFORMAT: - if (!Sched::Consent::Require(CAP_STORAGE_ADMIN)) return SYS_ERR_PERMISSION; - if (!UserMemory::Readable(frame->arg1)) return -1; + if (!Sched::Consent::Require(CAP_STORAGE_ADMIN)) return CapabilityDenied; + if (!UserMemory::Readable(frame->arg1)) return BadPointer; return (int64_t)Sys_FsFormat((const FsFormatParams*)frame->arg1); case SYS_AUDIOOPEN: return Sys_AudioOpen((uint32_t)frame->arg1, (uint8_t)frame->arg2, (uint8_t)frame->arg3); case SYS_AUDIOCLOSE: return Sys_AudioClose((int)frame->arg1); case SYS_AUDIOWRITE: - if (!UserMemory::Range(frame->arg2, frame->arg3, false)) return -1; + if (!UserMemory::Range(frame->arg2, frame->arg3, false)) return BadPointer; return Sys_AudioWrite((int)frame->arg1, (const uint8_t*)frame->arg2, (uint32_t)frame->arg3); case SYS_AUDIOCTL: return Sys_AudioCtl((int)frame->arg1, (int)frame->arg2, (int)frame->arg3); case SYS_AUDIOLIST: - if ((int64_t)frame->arg2 < 0) return -1; - if (!UserMemory::Range(frame->arg1, (uint64_t)frame->arg2 * sizeof(AudioStreamInfo), true)) return -1; + if ((int64_t)frame->arg2 < 0) return InvalidArgument; + if (!UserMemory::Range(frame->arg1, (uint64_t)frame->arg2 * sizeof(AudioStreamInfo), true)) return BadPointer; return Sys_AudioList((AudioStreamInfo*)frame->arg1, (int)frame->arg2); case SYS_AUDIOWAIT: return Sys_AudioWait(frame->arg1, frame->arg2); @@ -507,21 +509,21 @@ namespace montauk::abi { return Sys_UsbBulkInRead((int)frame->arg1, (uint8_t*)frame->arg2, (uint32_t)frame->arg3); case SYS_POWERINFO: - if (!UserMemory::Writable(frame->arg1)) return -1; + if (!UserMemory::Writable(frame->arg1)) return BadPointer; return Sys_PowerInfo((PowerInfo*)frame->arg1); case SYS_BATTERYINFO: // Read-only power telemetry, ungated like SYS_POWERINFO: the // panel indicator has to work in an unprivileged session, which // holds no device capability to spend on it. - if (!UserMemory::Writable(frame->arg1)) return -1; + if (!UserMemory::Writable(frame->arg1)) return BadPointer; return Sys_BatteryInfo((BatteryInfo*)frame->arg1); case SYS_GETCAPS: - if (!UserMemory::Writable(frame->arg1)) return -1; + if (!UserMemory::Writable(frame->arg1)) return BadPointer; return Sys_GetCaps((SpawnCapabilities*)frame->arg1); case SYS_CONSENT_REGISTER: return Sched::Consent::Register(); case SYS_CONSENT_NEXT: - if (!UserMemory::Writable(frame->arg1)) return -1; + if (!UserMemory::Writable(frame->arg1)) return BadPointer; return Sched::Consent::Next((ConsentRequest*)frame->arg1); case SYS_CONSENT_REPLY: return Sched::Consent::Reply(frame->arg1, (int)frame->arg2); @@ -529,43 +531,43 @@ namespace montauk::abi { return Sys_ThreadSpawn(frame->arg1, frame->arg2, frame->arg3); case SYS_THREAD_EXIT: Sys_ThreadExit((int)frame->arg1); - return 0; + return Success; case SYS_THREAD_JOIN: - if (frame->arg2 != 0 && !UserMemory::Writable(frame->arg2)) return -1; + if (frame->arg2 != 0 && !UserMemory::Writable(frame->arg2)) return BadPointer; return Sys_ThreadJoin((int)frame->arg1, (int*)frame->arg2); case SYS_THREAD_SELF: return Sys_ThreadSelf(); case SYS_BTSCAN: - if (!Sched::HasCapability(CAP_DEVICE_ADMIN)) return SYS_ERR_PERMISSION; - if ((int64_t)frame->arg2 < 0) return -1; - if (!UserMemory::Range(frame->arg1, (uint64_t)frame->arg2 * sizeof(BtScanResult), true)) return -1; + if (!Sched::HasCapability(CAP_DEVICE_ADMIN)) return CapabilityDenied; + if ((int64_t)frame->arg2 < 0) return InvalidArgument; + if (!UserMemory::Range(frame->arg1, (uint64_t)frame->arg2 * sizeof(BtScanResult), true)) return BadPointer; return Sys_BtScan((BtScanResult*)frame->arg1, (int)frame->arg2, (uint32_t)frame->arg3); case SYS_BTCONNECT: - if (!Sched::HasCapability(CAP_DEVICE_ADMIN)) return SYS_ERR_PERMISSION; - if (!UserMemory::Range(frame->arg1, 6, false)) return -1; + if (!Sched::HasCapability(CAP_DEVICE_ADMIN)) return CapabilityDenied; + if (!UserMemory::Range(frame->arg1, 6, false)) return BadPointer; return Sys_BtConnect((const uint8_t*)frame->arg1); case SYS_BTDISCONNECT: - if (!Sched::HasCapability(CAP_DEVICE_ADMIN)) return SYS_ERR_PERMISSION; - if (!UserMemory::Range(frame->arg1, 6, false)) return -1; + if (!Sched::HasCapability(CAP_DEVICE_ADMIN)) return CapabilityDenied; + if (!UserMemory::Range(frame->arg1, 6, false)) return BadPointer; return Sys_BtDisconnect((const uint8_t*)frame->arg1); case SYS_BTSETADDR: - if (!Sched::HasCapability(CAP_DEVICE_ADMIN)) return SYS_ERR_PERMISSION; - if (!UserMemory::Range(frame->arg1, 6, false)) return -1; + if (!Sched::HasCapability(CAP_DEVICE_ADMIN)) return CapabilityDenied; + if (!UserMemory::Range(frame->arg1, 6, false)) return BadPointer; return Sys_BtSetAddr((const uint8_t*)frame->arg1); case SYS_BTBONDS: - if ((int64_t)frame->arg2 < 0) return -1; - if (!UserMemory::Range(frame->arg1, (uint64_t)frame->arg2 * sizeof(BtBondInfo), true)) return -1; + if ((int64_t)frame->arg2 < 0) return InvalidArgument; + if (!UserMemory::Range(frame->arg1, (uint64_t)frame->arg2 * sizeof(BtBondInfo), true)) return BadPointer; return Sys_BtBonds((BtBondInfo*)frame->arg1, (int)frame->arg2); case SYS_BTFORGET: - if (!Sched::HasCapability(CAP_DEVICE_ADMIN)) return SYS_ERR_PERMISSION; - if (!UserMemory::Range(frame->arg1, 6, false)) return -1; + if (!Sched::HasCapability(CAP_DEVICE_ADMIN)) return CapabilityDenied; + if (!UserMemory::Range(frame->arg1, 6, false)) return BadPointer; return Sys_BtForget((const uint8_t*)frame->arg1); case SYS_BTLIST: - if ((int64_t)frame->arg2 < 0) return -1; - if (!UserMemory::Range(frame->arg1, (uint64_t)frame->arg2 * sizeof(BtDevInfo), true)) return -1; + if ((int64_t)frame->arg2 < 0) return InvalidArgument; + if (!UserMemory::Range(frame->arg1, (uint64_t)frame->arg2 * sizeof(BtDevInfo), true)) return BadPointer; return Sys_BtList((BtDevInfo*)frame->arg1, (int)frame->arg2); case SYS_BTINFO: - if (!UserMemory::Writable(frame->arg1)) return -1; + if (!UserMemory::Writable(frame->arg1)) return BadPointer; return Sys_BtInfo((BtAdapterInfo*)frame->arg1); case SYS_WIFI_SCAN: if (!Sched::Consent::Require(CAP_NETWORK_ADMIN)) return SYS_ERR_PERMISSION; @@ -596,61 +598,61 @@ namespace montauk::abi { if (frame->arg2 != 0 && !UserMemory::String(frame->arg2, 128)) return -1; return Sys_WifiConnectAsync((const char*)frame->arg1, (const char*)frame->arg2); case SYS_NETIFS: - if ((int64_t)frame->arg2 < 0) return -1; - if (!UserMemory::Range(frame->arg1, (uint64_t)frame->arg2 * sizeof(NetIfInfo), true)) return -1; + if ((int64_t)frame->arg2 < 0) return InvalidArgument; + if (!UserMemory::Range(frame->arg1, (uint64_t)frame->arg2 * sizeof(NetIfInfo), true)) return BadPointer; return Sys_NetIfs((NetIfInfo*)frame->arg1, (int)frame->arg2); case SYS_SUSPEND: - if (!Sched::HasCapability(CAP_SUSPEND)) return SYS_ERR_PERMISSION; + if (!Sched::HasCapability(CAP_SUSPEND)) return CapabilityDenied; return Sys_Suspend(); case SYS_SETTZ: - if (!Sched::Consent::Require(CAP_SET_TIME)) return SYS_ERR_PERMISSION; + if (!Sched::Consent::Require(CAP_SET_TIME)) return CapabilityDenied; return Sys_SetTZ((int32_t)frame->arg1); case SYS_GETTZ: return Sys_GetTZ(); case SYS_SETUSER: - if (!Sched::HasCapability(CAP_USER_ADMIN)) return SYS_ERR_PERMISSION; - if (!UserMemory::String(frame->arg2, kMaxUserNameBytes)) return -1; + if (!Sched::HasCapability(CAP_USER_ADMIN)) return CapabilityDenied; + if (!UserMemory::String(frame->arg2, kMaxUserNameBytes)) return BadPointer; return Sys_SetUser((int)frame->arg1, (const char*)frame->arg2); case SYS_GETUSER: - if (!UserMemory::Range(frame->arg1, frame->arg2, true)) return -1; + if (!UserMemory::Range(frame->arg1, frame->arg2, true)) return BadPointer; return Sys_GetUser((char*)frame->arg1, frame->arg2); case SYS_GETCWD: - if (!UserMemory::Range(frame->arg1, frame->arg2, true)) return -1; + if (!UserMemory::Range(frame->arg1, frame->arg2, true)) return BadPointer; return Sys_GetCwd((char*)frame->arg1, frame->arg2); case SYS_CHDIR: - if (!UserMemory::String(frame->arg1, kMaxPathBytes)) return -1; + if (!UserMemory::String(frame->arg1, kMaxPathBytes)) return BadPointer; return Sys_Chdir((const char*)frame->arg1); case SYS_DUPHANDLE: return Sys_DupHandle((int)frame->arg1); case SYS_WAIT_HANDLE: return (int64_t)Sys_WaitHandle((int)frame->arg1, (uint32_t)frame->arg2, frame->arg3); case SYS_STREAM_CREATE: - if (!UserMemory::Writable(frame->arg1) || !UserMemory::Writable(frame->arg2)) return -1; + if (!UserMemory::Writable(frame->arg1) || !UserMemory::Writable(frame->arg2)) return BadPointer; return Sys_StreamCreate((int*)frame->arg1, (int*)frame->arg2, (uint32_t)frame->arg3); case SYS_STREAM_READ: - if ((int64_t)frame->arg3 < 0) return -1; - if (!UserMemory::Range(frame->arg2, (uint64_t)frame->arg3, true)) return -1; + if ((int64_t)frame->arg3 < 0) return InvalidArgument; + if (!UserMemory::Range(frame->arg2, (uint64_t)frame->arg3, true)) return BadPointer; return Sys_StreamRead((int)frame->arg1, (uint8_t*)frame->arg2, (int)frame->arg3); case SYS_STREAM_WRITE: - if ((int64_t)frame->arg3 < 0) return -1; - if (!UserMemory::Range(frame->arg2, (uint64_t)frame->arg3, false)) return -1; + if ((int64_t)frame->arg3 < 0) return InvalidArgument; + if (!UserMemory::Range(frame->arg2, (uint64_t)frame->arg3, false)) return BadPointer; return Sys_StreamWrite((int)frame->arg1, (const uint8_t*)frame->arg2, (int)frame->arg3); case SYS_MAILBOX_CREATE: - if (!UserMemory::Writable(frame->arg1) || !UserMemory::Writable(frame->arg2)) return -1; + if (!UserMemory::Writable(frame->arg1) || !UserMemory::Writable(frame->arg2)) return BadPointer; return Sys_MailboxCreate((int*)frame->arg1, (int*)frame->arg2); case SYS_MAILBOX_SEND: - if (frame->arg4 > 0 && !UserMemory::Range(frame->arg3, frame->arg4, false)) return -1; + if (frame->arg4 > 0 && !UserMemory::Range(frame->arg3, frame->arg4, false)) return BadPointer; return Sys_MailboxSend((int)frame->arg1, (uint32_t)frame->arg2, (const void*)frame->arg3, (uint16_t)frame->arg4, (int)frame->arg5); case SYS_MAILBOX_RECV: - if (!UserMemory::Writable(frame->arg4)) return -1; - if (frame->arg2 != 0 && !UserMemory::Writable(frame->arg2)) return -1; + if (!UserMemory::Writable(frame->arg4)) return BadPointer; + if (frame->arg2 != 0 && !UserMemory::Writable(frame->arg2)) return BadPointer; if (frame->arg3 != 0) { uint16_t maxCopy = *(uint16_t*)frame->arg4; - if (!UserMemory::Range(frame->arg3, maxCopy, true)) return -1; + if (!UserMemory::Range(frame->arg3, maxCopy, true)) return BadPointer; } - if (frame->arg5 != 0 && !UserMemory::Writable(frame->arg5)) return -1; + if (frame->arg5 != 0 && !UserMemory::Writable(frame->arg5)) return BadPointer; return Sys_MailboxRecv((int)frame->arg1, UserMemory::IsUserPtr(frame->arg2) ? (uint32_t*)frame->arg2 : nullptr, UserMemory::IsUserPtr(frame->arg3) ? (void*)frame->arg3 : nullptr, @@ -663,7 +665,7 @@ namespace montauk::abi { case SYS_WAITSET_REMOVE: return Sys_WaitsetRemove((int)frame->arg1, (int)frame->arg2); case SYS_WAITSET_WAIT: - if (frame->arg2 != 0 && !UserMemory::Writable(frame->arg2)) return -1; + if (frame->arg2 != 0 && !UserMemory::Writable(frame->arg2)) return BadPointer; return Sys_WaitsetWait((int)frame->arg1, UserMemory::IsUserPtr(frame->arg2) ? (IpcWaitResult*)frame->arg2 : nullptr, frame->arg3); @@ -685,18 +687,18 @@ namespace montauk::abi { case SYS_GETLIBBASE: return (int64_t)Sys_GetLibBase(frame->arg1); case SYS_CRASH_REPORT: - if (!UserMemory::Writable(frame->arg1)) return -1; + if (!UserMemory::Writable(frame->arg1)) return BadPointer; return Sys_CrashReport((CrashReportInfo*)frame->arg1); case SYS_CLIPBOARD_SET_TEXT: - if (frame->arg2 > 0 && !UserMemory::Range(frame->arg1, frame->arg2, false)) return -1; + if (frame->arg2 > 0 && !UserMemory::Range(frame->arg1, frame->arg2, false)) return BadPointer; return Sys_ClipboardSetText((const char*)frame->arg1, (uint32_t)frame->arg2); case SYS_CLIPBOARD_GET_INFO: - if (!UserMemory::Writable(frame->arg1)) return -1; + if (!UserMemory::Writable(frame->arg1)) return BadPointer; return Sys_ClipboardGetInfo((ClipboardInfo*)frame->arg1); case SYS_CLIPBOARD_GET_TEXT: - if (frame->arg2 > 0 && !UserMemory::Range(frame->arg1, frame->arg2, true)) return -1; - if (!UserMemory::Writable(frame->arg3)) return -1; - if (frame->arg4 != 0 && !UserMemory::Writable(frame->arg4)) return -1; + if (frame->arg2 > 0 && !UserMemory::Range(frame->arg1, frame->arg2, true)) return BadPointer; + if (!UserMemory::Writable(frame->arg3)) return BadPointer; + if (frame->arg4 != 0 && !UserMemory::Writable(frame->arg4)) return BadPointer; return Sys_ClipboardGetText(UserMemory::IsUserPtr(frame->arg1) ? (char*)frame->arg1 : nullptr, (uint32_t)frame->arg2, (uint32_t*)frame->arg3, @@ -706,7 +708,7 @@ namespace montauk::abi { case SYS_INPUT_WAIT: return (int64_t)Sys_InputWait(frame->arg1, frame->arg2); case SYS_LOG_WRITE: { - if (!UserMemory::String(frame->arg1, kMaxUserspaceLogEntryBytes)) return -1; + if (!UserMemory::String(frame->arg1, kMaxUserspaceLogEntryBytes)) return BadPointer; auto* process = Sched::GetCurrentProcessPtr(); const char* username = process != nullptr && process->user[0] != '\0' @@ -719,12 +721,12 @@ namespace montauk::abi { Kt::UserspaceLogStream(imageName, username) << (const char*)frame->arg1; - return 0; + return Success; } case SYS_TERMINAL_ATTACHED: return Sys_TerminalAttached(); default: - return -1; + return BadInvocation; } } diff --git a/kernel/src/Api/Syscall.hpp b/kernel/src/Api/Syscall.hpp index 0bc423d..001d2e2 100644 --- a/kernel/src/Api/Syscall.hpp +++ b/kernel/src/Api/Syscall.hpp @@ -7,6 +7,7 @@ #pragma once #include #include +#include namespace montauk::abi { @@ -399,6 +400,9 @@ namespace montauk::abi { static_assert((CAP_ADMIN_SESSION & CAP_COMPOSITOR) == 0, "a session must not delegate the compositor's authority; " "login grants it to the desktop directly"); + // Capability denial for the Wi-Fi and USB syscalls only, which keep their + // own WIFI_ERR_* / USB_ERR_* spaces; everything else returns + // CapabilityDenied from StatusCodes. static constexpr int SYS_ERR_PERMISSION = -13; // A process holds two independent sets: what it may use (effective) and diff --git a/kernel/src/Api/Time.hpp b/kernel/src/Api/Time.hpp index 1205526..880d272 100644 --- a/kernel/src/Api/Time.hpp +++ b/kernel/src/Api/Time.hpp @@ -32,7 +32,7 @@ namespace montauk::abi { static int64_t Sys_SetTZ(int32_t offsetMinutes) { Timekeeping::SetTZOffset(offsetMinutes); - return 0; + return Success; } static int64_t Sys_GetTZ() { @@ -40,6 +40,6 @@ namespace montauk::abi { } static int64_t Sys_SetUnixTime(int64_t unixSeconds) { - return Timekeeping::SetUnixTimestamp(unixSeconds) ? 0 : -1; + return Timekeeping::SetUnixTimestamp(unixSeconds) ? Success : InvalidArgument; } }; diff --git a/kernel/src/Api/WinServer.cpp b/kernel/src/Api/WinServer.cpp index cefd4a5..64e6929 100644 --- a/kernel/src/Api/WinServer.cpp +++ b/kernel/src/Api/WinServer.cpp @@ -55,13 +55,13 @@ namespace WinServer { } static int UnmapRetiredSnapshotsLocked(int windowId, int callerPid, uint64_t callerPml4) { - int result = -1; + int result = InvalidArgument; for (int i = 0; i < MaxRetiredSnapshots; i++) { if (!g_retiredSnapshots[i].used || g_retiredSnapshots[i].windowId != windowId) continue; if (g_retiredSnapshots[i].surface != nullptr) { if (Ipc::UnmapSurfaceForPid(g_retiredSnapshots[i].surface, callerPid, callerPml4) == 0) { - result = 0; + result = Success; } Ipc::ReleaseSurface(g_retiredSnapshots[i].surface); } @@ -95,21 +95,22 @@ namespace WinServer { } static int SendEventLocked(int windowId, const montauk::abi::WinEvent* event) { - if (windowId < 0 || windowId >= MaxWindows || event == nullptr) return -1; + if (windowId < 0 || windowId >= MaxWindows || event == nullptr) return InvalidArgument; WindowSlot& slot = g_slots[windowId]; - if (!slot.used || slot.eventMailbox == nullptr) return -1; + if (!slot.used || slot.eventMailbox == nullptr) return InvalidArgument; int rc = (event->type == 1) ? Ipc::MailboxSendCoalescedMouse(slot.eventMailbox, 0, event, sizeof(*event)) : Ipc::MailboxSend(slot.eventMailbox, 0, event, sizeof(*event)); - return rc > 0 ? 0 : -1; + if (rc < 0) return GenericFailure; + return rc > 0 ? Success : Busy; } int Create(int ownerPid, uint64_t ownerPml4, const char* title, int w, int h, uint64_t& heapNext, uint64_t& outVa) { WsGuard guard; - if (w <= 0 || h <= 0 || w > 16384 || h > 16384) return -1; + if (w <= 0 || h <= 0 || w > 16384 || h > 16384) return InvalidArgument; int slotIdx = -1; for (int i = 0; i < MaxWindows; i++) { @@ -118,7 +119,7 @@ namespace WinServer { break; } } - if (slotIdx < 0) return -1; + if (slotIdx < 0) return GenericFailure; uint64_t bufSize = (uint64_t)w * (uint64_t)h * 4ULL; Ipc::Surface* live = Ipc::CreateSurface(bufSize); @@ -128,7 +129,7 @@ namespace WinServer { if (live != nullptr) Ipc::ReleaseSurface(live); if (snapshot != nullptr) Ipc::ReleaseSurface(snapshot); if (mailbox != nullptr) Ipc::ReleaseMailbox(mailbox, false, false); - return -1; + return OutOfMemory; } Ipc::RetainSurface(live); @@ -146,7 +147,7 @@ namespace WinServer { Ipc::ReleaseMailbox(mailbox, true, true); Ipc::ReleaseSurface(snapshot); Ipc::ReleaseSurface(live); - return -1; + return GenericFailure; } WindowSlot& slot = g_slots[slotIdx]; @@ -176,40 +177,41 @@ namespace WinServer { int Destroy(int windowId, int callerPid) { WsGuard guard; - if (windowId < 0 || windowId >= MaxWindows) return -1; + if (windowId < 0 || windowId >= MaxWindows) return InvalidArgument; WindowSlot& slot = g_slots[windowId]; - if (!slot.used || slot.ownerPid != callerPid) return -1; + if (!slot.used) return InvalidArgument; + if (slot.ownerPid != callerPid) return PermissionDenied; ReleaseSlotResourcesLocked(slot, true); - return 0; + return Success; } int Present(int windowId, int callerPid) { WsGuard guard; - if (windowId < 0 || windowId >= MaxWindows) return -1; + if (windowId < 0 || windowId >= MaxWindows) return InvalidArgument; WindowSlot& slot = g_slots[windowId]; - if (!slot.used || slot.ownerPid != callerPid || - slot.liveSurface == nullptr || slot.snapshotSurface == nullptr) { - return -1; - } + if (!slot.used || slot.liveSurface == nullptr || slot.snapshotSurface == nullptr) + return InvalidArgument; + if (slot.ownerPid != callerPid) return PermissionDenied; - if (Ipc::CopySurface(slot.snapshotSurface, slot.liveSurface) != 0) return -1; + if (Ipc::CopySurface(slot.snapshotSurface, slot.liveSurface) != 0) return GenericFailure; slot.dirty = true; - return 0; + return Success; } int Poll(int windowId, int callerPid, montauk::abi::WinEvent* outEvent) { WsGuard guard; - if (windowId < 0 || windowId >= MaxWindows || outEvent == nullptr) return -1; + if (windowId < 0 || windowId >= MaxWindows || outEvent == nullptr) return InvalidArgument; WindowSlot& slot = g_slots[windowId]; - if (!slot.used || slot.ownerPid != callerPid || slot.eventMailbox == nullptr) return -1; + if (!slot.used || slot.eventMailbox == nullptr) return InvalidArgument; + if (slot.ownerPid != callerPid) return PermissionDenied; uint16_t len = sizeof(*outEvent); int rc = Ipc::MailboxRecv(slot.eventMailbox, nullptr, outEvent, &len, true); - if (rc < 0) return -1; + if (rc < 0) return GenericFailure; return rc > 0 ? 1 : 0; } @@ -259,7 +261,7 @@ namespace WinServer { if (!slot.used || slot.snapshotSurface == nullptr) return result; int current = Ipc::UnmapSurfaceForPid(slot.snapshotSurface, callerPid, callerPml4); - if (current == 0) return 0; + if (current == 0) return Success; return result; } @@ -271,14 +273,15 @@ namespace WinServer { int Resize(int windowId, int callerPid, uint64_t ownerPml4, int newW, int newH, uint64_t& heapNext, uint64_t& outVa) { WsGuard guard; - if (windowId < 0 || windowId >= MaxWindows) return -1; + if (windowId < 0 || windowId >= MaxWindows) return InvalidArgument; WindowSlot& slot = g_slots[windowId]; - if (!slot.used || slot.ownerPid != callerPid) return -1; - if (newW <= 0 || newH <= 0 || newW > 16384 || newH > 16384) return -1; + if (!slot.used) return InvalidArgument; + if (slot.ownerPid != callerPid) return PermissionDenied; + if (newW <= 0 || newH <= 0 || newW > 16384 || newH > 16384) return InvalidArgument; if (newW == slot.width && newH == slot.height) { outVa = slot.ownerVa; - return 0; + return Success; } uint64_t bufSize = (uint64_t)newW * (uint64_t)newH * 4ULL; @@ -287,7 +290,7 @@ namespace WinServer { if (newLive == nullptr || newSnapshot == nullptr) { if (newLive != nullptr) Ipc::ReleaseSurface(newLive); if (newSnapshot != nullptr) Ipc::ReleaseSurface(newSnapshot); - return -1; + return OutOfMemory; } Ipc::RetainSurface(newLive); @@ -297,7 +300,7 @@ namespace WinServer { if (Ipc::MapSurfaceForPid(newLive, callerPid, ownerPml4, heapNext, newOwnerVa, false) != 0) { Ipc::ReleaseSurface(newSnapshot); Ipc::ReleaseSurface(newLive); - return -1; + return GenericFailure; } if (slot.liveSurface != nullptr) { @@ -327,27 +330,29 @@ namespace WinServer { slot.dirty = true; outVa = newOwnerVa; - return 0; + return Success; } int SetCursor(int windowId, int callerPid, int cursor) { WsGuard guard; - if (windowId < 0 || windowId >= MaxWindows) return -1; + if (windowId < 0 || windowId >= MaxWindows) return InvalidArgument; WindowSlot& slot = g_slots[windowId]; - if (!slot.used || slot.ownerPid != callerPid) return -1; + if (!slot.used) return InvalidArgument; + if (slot.ownerPid != callerPid) return PermissionDenied; slot.cursor = (uint8_t)cursor; - return 0; + return Success; } int SetFlags(int windowId, int callerPid, uint32_t flags) { WsGuard guard; - if (windowId < 0 || windowId >= MaxWindows) return -1; + if (windowId < 0 || windowId >= MaxWindows) return InvalidArgument; WindowSlot& slot = g_slots[windowId]; - if (!slot.used || slot.ownerPid != callerPid) return -1; + if (!slot.used) return InvalidArgument; + if (slot.ownerPid != callerPid) return PermissionDenied; slot.flags = flags & montauk::abi::WIN_FLAG_FULLSCREEN; - return 0; + return Success; } int SetScale(int scale) { @@ -364,7 +369,7 @@ namespace WinServer { SendEventLocked(i, &ev); } } - return 0; + return Success; } int GetScale() { diff --git a/kernel/src/Api/Window.hpp b/kernel/src/Api/Window.hpp index 9b7d83e..66be3cf 100644 --- a/kernel/src/Api/Window.hpp +++ b/kernel/src/Api/Window.hpp @@ -15,16 +15,16 @@ namespace montauk::abi { static int Sys_WinCreate(const char* title, int w, int h, WinCreateResult* result) { - if (result == nullptr || title == nullptr) return -1; + if (result == nullptr || title == nullptr) return InvalidArgument; auto* proc = Sched::GetCurrentProcessPtr(); - if (proc == nullptr) return -1; + if (proc == nullptr) return GenericFailure; uint64_t outVa = 0; int id = WinServer::Create(proc->pid, proc->pml4Phys, title, w, h, proc->heapNext, outVa); result->id = id; result->pixelVa = (id >= 0) ? outVa : 0; - return id >= 0 ? 0 : -1; + return id >= 0 ? Success : id; } static int Sys_WinDestroy(int windowId) { @@ -36,7 +36,7 @@ namespace montauk::abi { } static int Sys_WinPoll(int windowId, WinEvent* outEvent) { - if (outEvent == nullptr) return -1; + if (outEvent == nullptr) return InvalidArgument; return WinServer::Poll(windowId, Sched::GetCurrentPid(), outEvent); } @@ -58,13 +58,13 @@ namespace montauk::abi { static int Sys_WinUnmap(int windowId) { auto* proc = Sched::GetCurrentProcessPtr(); - if (proc == nullptr) return -1; + if (proc == nullptr) return GenericFailure; return WinServer::Unmap(windowId, proc->pid, proc->pml4Phys); } static int Sys_WinSendEvent(int windowId, const WinEvent* event) { - if (!Sched::HasCapability(CAP_COMPOSITOR)) return SYS_ERR_PERMISSION; - if (event == nullptr) return -1; + if (!Sched::HasCapability(CAP_COMPOSITOR)) return CapabilityDenied; + if (event == nullptr) return InvalidArgument; return WinServer::SendEvent(windowId, event); } diff --git a/kernel/src/Common/StatusCodes.hpp b/kernel/src/Common/StatusCodes.hpp new file mode 100644 index 0000000..5cf43e8 --- /dev/null +++ b/kernel/src/Common/StatusCodes.hpp @@ -0,0 +1,28 @@ +/* + * StatusCodes.hpp + * MontaukOS system status codes. + * Copyright (c) 2026 Daniel Hammer +*/ + +#pragma once + +// Syscall return status. Mirrored for userspace in +// programs/include/montauk/statuscodes.h and, as MTK_STATUS_*, in +// programs/include/libc/montauk.h; scripts/montauk-syscalls.py checks all three. +enum StatusCodes { + Success = 0, + GenericFailure = -1, + PermissionDenied = -2, + CapabilityDenied = -3, + SystemIntegrityError = -4, + BadPointer = -5, + InvalidArgument = -6, + UnsupportedOp = -7, + NoDevice = -8, + IoFailure = -9, + BadInvocation = -10, + NoSuchPath = -11, + Busy = -12, + BufferTooSmall = -13, + OutOfMemory = -14 +}; diff --git a/kernel/src/Ipc/Ipc.cpp b/kernel/src/Ipc/Ipc.cpp index 7112fca..e7eb252 100644 --- a/kernel/src/Ipc/Ipc.cpp +++ b/kernel/src/Ipc/Ipc.cpp @@ -1153,7 +1153,7 @@ namespace Ipc { uint64_t writeCapability = Fs::RequiredFileWriteCapability(path); if (create && writeCapability != 0 && !Sched::HasCapability(writeCapability)) { - return montauk::abi::SYS_ERR_PERMISSION; + return SystemIntegrityError; } Fs::Vfs::BackendFile backend = {-1, -1, 0}; @@ -1207,15 +1207,16 @@ namespace Ipc { int FileWriteHandle(int handle, const uint8_t* buffer, uint64_t offset, uint64_t size) { if (buffer == nullptr) return -1; - if (size > 0 && !montauk::abi::UserMemory::Range((uint64_t)buffer, size, false)) return -1; + if (size > 0 && !montauk::abi::UserMemory::Range((uint64_t)buffer, size, false)) return BadPointer; HandleSnapshot snapshot; - if (!snapshot.Capture(CurrentSlot(), handle)) return -1; - if (snapshot.type != HandleType::File || (snapshot.rights & RightWrite) == 0) return -1; + if (!snapshot.Capture(CurrentSlot(), handle)) return InvalidArgument; + if (snapshot.type != HandleType::File) return InvalidArgument; + if ((snapshot.rights & RightWrite) == 0) return PermissionDenied; File* file = (File*)snapshot.object; if (file->writeCapability != 0 && !Sched::HasCapability(file->writeCapability)) { - return montauk::abi::SYS_ERR_PERMISSION; + return SystemIntegrityError; } return Fs::Vfs::WriteBackendFile(file->backend, buffer, offset, size); } diff --git a/kernel/src/Sched/Consent.cpp b/kernel/src/Sched/Consent.cpp index 7c2b238..3cc3669 100644 --- a/kernel/src/Sched/Consent.cpp +++ b/kernel/src/Sched/Consent.cpp @@ -161,25 +161,25 @@ namespace Sched::Consent { } int Register() { - if (!HasCapability(CAP_COMPOSITOR)) return SYS_ERR_PERMISSION; + if (!HasCapability(CAP_COMPOSITOR)) return CapabilityDenied; int pid = GetCurrentPid(); g_lock.Acquire(); // OnProcessExit clears a dead agent, so a live one is always current. if (g_agentPid >= 0 && g_agentPid != pid) { g_lock.Release(); - return -1; + return Busy; } g_agentPid = pid; g_lock.Release(); Kt::KernelLogStream(Kt::INFO, "Consent") << "Agent registered: pid " << (uint64_t)pid; - return 0; + return Success; } int Next(ConsentRequest* out) { int agent = GetCurrentPid(); - if (agent < 0 || agent != g_agentPid) return SYS_ERR_PERMISSION; + if (agent < 0 || agent != g_agentPid) return PermissionDenied; ConsentRequest local; for (;;) { @@ -226,7 +226,7 @@ namespace Sched::Consent { int Reply(uint64_t id, int decision) { int agent = GetCurrentPid(); - if (agent < 0 || agent != g_agentPid) return SYS_ERR_PERMISSION; + if (agent < 0 || agent != g_agentPid) return PermissionDenied; Request* request = nullptr; int pid = -1; @@ -253,13 +253,13 @@ namespace Sched::Consent { } g_lock.Release(); - if (request == nullptr) return -1; + if (request == nullptr) return InvalidArgument; WakeObjectWaiters(request); Kt::KernelLogStream(Kt::INFO, "Consent") << "pid " << (uint64_t)pid << " " << NameOf(capability) << ": " << (granted ? "allowed" : (decision == CONSENT_ALLOW ? "allow refused (no longer valid)" : "denied")); - return 0; + return Success; } void OnProcessExit(int pid) { diff --git a/programs/include/Api/Syscall.hpp b/programs/include/Api/Syscall.hpp index 1790f04..5807e67 100644 --- a/programs/include/Api/Syscall.hpp +++ b/programs/include/Api/Syscall.hpp @@ -7,6 +7,7 @@ #pragma once #include #include +#include namespace montauk::abi { @@ -312,6 +313,9 @@ namespace montauk::abi { static_assert((CAP_ADMIN_SESSION & CAP_COMPOSITOR) == 0, "a session must not delegate the compositor's authority; " "login grants it to the desktop directly"); + // Capability denial for the Wi-Fi and USB syscalls only, which keep their + // own WIFI_ERR_* / USB_ERR_* spaces; everything else returns + // CapabilityDenied from StatusCodes. static constexpr int SYS_ERR_PERMISSION = -13; // A process holds two independent sets: what it may use (effective) and diff --git a/programs/include/libc/montauk.h b/programs/include/libc/montauk.h index fc947f4..d08f457 100644 --- a/programs/include/libc/montauk.h +++ b/programs/include/libc/montauk.h @@ -219,6 +219,27 @@ extern "C" { #define MTK_SYS_CONSENT_REPLY 193 /* @SYSCALLS-END */ +/* Syscall status codes (montauk/statuscodes.h for C++). */ +/* @STATUS-BEGIN + Generated from Common/StatusCodes.hpp by scripts/montauk-syscalls.py. + Do not edit by hand; run 'make gen-syscalls' to refresh. */ +#define MTK_STATUS_SUCCESS (0) +#define MTK_STATUS_GENERIC_FAILURE (-1) +#define MTK_STATUS_PERMISSION_DENIED (-2) +#define MTK_STATUS_CAPABILITY_DENIED (-3) +#define MTK_STATUS_SYSTEM_INTEGRITY_ERROR (-4) +#define MTK_STATUS_BAD_POINTER (-5) +#define MTK_STATUS_INVALID_ARGUMENT (-6) +#define MTK_STATUS_UNSUPPORTED_OP (-7) +#define MTK_STATUS_NO_DEVICE (-8) +#define MTK_STATUS_IO_FAILURE (-9) +#define MTK_STATUS_BAD_INVOCATION (-10) +#define MTK_STATUS_NO_SUCH_PATH (-11) +#define MTK_STATUS_BUSY (-12) +#define MTK_STATUS_BUFFER_TOO_SMALL (-13) +#define MTK_STATUS_OUT_OF_MEMORY (-14) +/* @STATUS-END */ + #define MTK_SOCK_TCP 1 #define MTK_SOCK_UDP 2 #define MTK_IPC_SIGNAL_READABLE (1u << 0) diff --git a/programs/include/montauk/statuscodes.h b/programs/include/montauk/statuscodes.h new file mode 100644 index 0000000..be65416 --- /dev/null +++ b/programs/include/montauk/statuscodes.h @@ -0,0 +1,35 @@ +/* + * statuscodes.h + * MontaukOS status codes + * Copyright (c) 2026 Daniel Hammer +*/ + +#pragma once + +// Userspace mirror of kernel/src/Common/StatusCodes.hpp. Also usable from C +// (the libc includes it), where the enumerators are unqualified. +#ifdef __cplusplus +namespace montauk { +#endif + +enum StatusCodes { + Success = 0, + GenericFailure = -1, + PermissionDenied = -2, + CapabilityDenied = -3, + SystemIntegrityError = -4, + BadPointer = -5, + InvalidArgument = -6, + UnsupportedOp = -7, + NoDevice = -8, + IoFailure = -9, + BadInvocation = -10, + NoSuchPath = -11, + Busy = -12, + BufferTooSmall = -13, + OutOfMemory = -14 +}; + +#ifdef __cplusplus +} +#endif diff --git a/programs/include/montauk/syscall.h b/programs/include/montauk/syscall.h index 468e0bd..5c9c188 100644 --- a/programs/include/montauk/syscall.h +++ b/programs/include/montauk/syscall.h @@ -6,6 +6,7 @@ #pragma once #include +#include namespace montauk { diff --git a/programs/lib/libc/libc.c b/programs/lib/libc/libc.c index b1c45da..52b63d8 100644 --- a/programs/lib/libc/libc.c +++ b/programs/lib/libc/libc.c @@ -15,6 +15,7 @@ #include #include #include +#include "../../include/montauk/statuscodes.h" #include #include #include @@ -2476,7 +2477,7 @@ char *getcwd(char *buf, size_t size) { } int result = (int)_mtk_syscall2(SYS_GETCWD, (long)buf, (long)size); if (result < 0) { - errno = result == -2 ? ERANGE : EIO; + errno = result == BufferTooSmall ? ERANGE : EIO; return NULL; } return buf; @@ -3566,9 +3567,10 @@ int utime(const char *path, const struct utimbuf *times) { times != NULL ? (long)times->modtime : 0, times == NULL); if (result == 0) return 0; - if (result == -2) errno = ENOTSUP; - else if (result == -3) errno = EOVERFLOW; - else if (result == -4) errno = EIO; + if (result == UnsupportedOp) errno = ENOTSUP; + else if (result == InvalidArgument) errno = EOVERFLOW; + else if (result == IoFailure) errno = EIO; + else if (result == SystemIntegrityError) errno = EPERM; else errno = ENOENT; return -1; } diff --git a/programs/src/display/main.cpp b/programs/src/display/main.cpp index c7517cd..503a134 100644 --- a/programs/src/display/main.cpp +++ b/programs/src/display/main.cpp @@ -500,7 +500,7 @@ static void apply_changes() { if (g_driver_available && g_selected_mode != g_info.currentMode) { int result = montauk::display_set_mode(g_selected_mode); if (result < 0) { - set_status(result == -2 + set_status(result == montauk::UnsupportedOp ? "Mode needs unsupported display-link training" : "Mode change failed; previous mode restored"); refresh_state(true); diff --git a/programs/src/login/login_shutdown.cpp b/programs/src/login/login_shutdown.cpp index 0897014..bf0dcdd 100644 --- a/programs/src/login/login_shutdown.cpp +++ b/programs/src/login/login_shutdown.cpp @@ -262,7 +262,7 @@ void perform_graceful_shutdown(LoginState* ls, int action) { // A successful power-control syscall never returns. If it does return, // keep the trusted supervisor alive and make the authorization failure // visible instead of falling through an unreachable-code assumption. - show_stage(ls, heading, rc == montauk::abi::SYS_ERR_PERMISSION + show_stage(ls, heading, rc == montauk::CapabilityDenied ? "Power control permission denied." : "Power control failed."); for (;;) montauk::sleep_ms(1000); diff --git a/programs/src/reset/main.cpp b/programs/src/reset/main.cpp index 0601529..9f0bde7 100644 --- a/programs/src/reset/main.cpp +++ b/programs/src/reset/main.cpp @@ -9,7 +9,7 @@ extern "C" void _start() { montauk::print("Rebooting...\n"); int rc = montauk::reset(); - if (rc == montauk::abi::SYS_ERR_PERMISSION) + if (rc == montauk::CapabilityDenied) montauk::print("reset: permission denied\n"); else montauk::print("reset: reboot failed\n"); diff --git a/programs/src/shell/main.cpp b/programs/src/shell/main.cpp index fff8605..9da0029 100644 --- a/programs/src/shell/main.cpp +++ b/programs/src/shell/main.cpp @@ -194,7 +194,7 @@ static int process_command(const char* line) { : montauk::abi::POWER_REQ_SHUTDOWN; int rc = montauk::power_request(action); if (rc == 0) montauk::exit(0); - montauk::print(rc == montauk::abi::SYS_ERR_PERMISSION + montauk::print(rc == montauk::CapabilityDenied ? "power: permission denied\n" : "power: request failed\n"); return 1; @@ -202,7 +202,7 @@ static int process_command(const char* line) { if (streq(cmd, "suspend")) { int rc = montauk::suspend(); - if (rc == montauk::abi::SYS_ERR_PERMISSION) + if (rc == montauk::CapabilityDenied) montauk::print("suspend: permission denied\n"); return rc == 0 ? 0 : 1; } diff --git a/scripts/montauk-syscalls.py b/scripts/montauk-syscalls.py index a5f28bc..043e09d 100755 --- a/scripts/montauk-syscalls.py +++ b/scripts/montauk-syscalls.py @@ -1,9 +1,12 @@ #!/usr/bin/env python3 -# montauk-syscalls.py - Keep the TCC C API header's syscall numbers in sync -# with the canonical syscall ABI. +# montauk-syscalls.py - Keep the TCC C API header's syscall numbers and status +# codes in sync with the canonical syscall ABI. # # Source of truth : programs/include/Api/Syscall.hpp (montauk::abi::SYS_*) -# Generated block : programs/include/libc/montauk.h (#define MTK_SYS_*) +# kernel/src/Common/StatusCodes.hpp (enum StatusCodes) +# Mirrors : programs/include/montauk/statuscodes.h (must match exactly) +# Generated blocks: programs/include/libc/montauk.h (#define MTK_SYS_*, +# #define MTK_STATUS_*) # # The libc/montauk.h header is a hand-maintained, TCC-compatible C mirror of the # syscall surface. Its typed wrapper functions stay hand-written (their argument @@ -13,10 +16,13 @@ # # Usage: # montauk-syscalls.py check Verify every SYS_* has a matching MTK_SYS_* with -# the same number. Exits non-zero on any drift. -# Run from the build so stale headers fail loudly. -# montauk-syscalls.py gen Rewrite the MTK_SYS_* block in montauk.h from the -# canonical enum (numbers only; wrappers untouched). +# the same number, and that both status code +# mirrors match the kernel enum. Exits non-zero on +# any drift. Run from the build so stale headers +# fail loudly. +# montauk-syscalls.py gen Rewrite the MTK_SYS_* and MTK_STATUS_* blocks in +# montauk.h (numbers only; wrappers untouched). +# statuscodes.h is not generated; fix it by hand. import os import re @@ -26,9 +32,13 @@ SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) REPO_ROOT = os.path.dirname(SCRIPT_DIR) ABI_HDR = os.path.join(REPO_ROOT, "programs/include/Api/Syscall.hpp") C_HDR = os.path.join(REPO_ROOT, "programs/include/libc/montauk.h") +STATUS_HDR = os.path.join(REPO_ROOT, "kernel/src/Common/StatusCodes.hpp") +STATUS_MIRROR = os.path.join(REPO_ROOT, "programs/include/montauk/statuscodes.h") BEGIN_MARKER = "/* @SYSCALLS-BEGIN" END_MARKER = "/* @SYSCALLS-END */" +STATUS_BEGIN_MARKER = "/* @STATUS-BEGIN" +STATUS_END_MARKER = "/* @STATUS-END */" # Canonical SYS_* names intentionally NOT exposed in the C API. Empty by default; # add a name here (without the SYS_ prefix) to suppress a kernel-internal syscall. @@ -38,6 +48,11 @@ EXCLUDE = set() ABI_RE = re.compile(r"constexpr\s+\w+\s+SYS_([A-Z0-9_]+)\s*=\s*(\d+)\s*;") # #define MTK_SYS_FOO 42 DEF_RE = re.compile(r"#define\s+MTK_SYS_([A-Z0-9_]+)\s+(\d+)\b") +# enum StatusCodes { Name = -3, ... }; +ENUM_RE = re.compile(r"enum\s+StatusCodes\s*\{([^}]*)\}", re.S) +ENUM_ENTRY_RE = re.compile(r"([A-Za-z_]\w*)\s*=\s*(-?\d+)") +# #define MTK_STATUS_FOO (-3) +STATUS_DEF_RE = re.compile(r"#define\s+MTK_STATUS_([A-Z0-9_]+)\s+\(?(-?\d+)\)?") def read(path): @@ -62,6 +77,43 @@ def parse_defines(text): return {name: int(num) for name, num in DEF_RE.findall(text)} +def parse_status(path): + """Return [(Name, value)] from the StatusCodes enum in path, in order.""" + m = ENUM_RE.search(read(path)) + if not m: + sys.exit("montauk-syscalls: no enum StatusCodes found in %s" % path) + return [(n, int(v)) for n, v in ENUM_ENTRY_RE.findall(m.group(1))] + + +def status_macro(name): + """GenericFailure -> GENERIC_FAILURE.""" + return re.sub(r"(?` in the `montauk` namespace. The syscall layer provides `syscall0()` through `syscall6()` primitives using AMD64 calling conventions. All raw syscalls return `int64_t`. +## Status Codes + +| Code | Value | Meaning | +|------|-------|---------| +| `Success` | 0 | The call succeeded | +| `GenericFailure` | -1 | Unspecified failure | +| `PermissionDenied` | -2 | The object belongs to another process or the handle lacks the right | +| `CapabilityDenied` | -3 | The caller lacks (or was refused consent for) a required capability | +| `SystemIntegrityError` | -4 | The path is protected (ProtectedPaths) and the caller may not modify it | +| `BadPointer` | -5 | A user pointer or buffer range is invalid | +| `InvalidArgument` | -6 | An argument, id, or handle is invalid | +| `UnsupportedOp` | -7 | The operation is not supported here | +| `NoDevice` | -8 | The required device is absent or not initialized | +| `IoFailure` | -9 | Device I/O failed | +| `BadInvocation` | -10 | Unknown syscall number | +| `NoSuchPath` | -11 | The path does not exist | +| `Busy` | -12 | The resource is in use or its queue is full | +| `BufferTooSmall` | -13 | The output buffer is too small; retry with a larger one | +| `OutOfMemory` | -14 | Memory could not be allocated | + +The Wi-Fi (`WIFI_ERR_*`) and USB (`USB_ERR_*`) syscalls keep their own error codes. + ## Table of Contents +- [Status Codes](#status-codes) - [Process Management](#process-management) - [File System](#file-system) - [Memory](#memory) diff --git a/template/sysroot/include/Api/Syscall.hpp b/template/sysroot/include/Api/Syscall.hpp index 0814b5c..5807e67 100644 --- a/template/sysroot/include/Api/Syscall.hpp +++ b/template/sysroot/include/Api/Syscall.hpp @@ -7,6 +7,7 @@ #pragma once #include #include +#include namespace montauk::abi { @@ -250,6 +251,122 @@ namespace montauk::abi { static constexpr uint64_t SYS_LOG_WRITE = 176; // (logMessage) -> 0 static constexpr uint64_t SYS_TERMINAL_ATTACHED = 177; // () -> 1 when connected to a userspace terminal + static constexpr uint64_t SYS_SPAWN_CAPS = 185; + static constexpr uint64_t SYS_SPAWN_REDIR_CAPS = 186; + // As SYS_ALLOC, but commits every page up front instead of faulting them + // in one at a time. For buffers the caller is about to touch in full. + static constexpr uint64_t SYS_ALLOC_EAGER = 187; // (bytes) -> va, 0 on failure + + /* Battery.hpp -- ACPI battery status */ + static constexpr uint64_t SYS_BATTERYINFO = 188; // (BatteryInfo*) -> 0, -1 no battery device + + // The caller's own capability masks. + static constexpr uint64_t SYS_GETCAPS = 189; // (SpawnCapabilities*) -> 0, -1 bad pointer + + /* Storage.hpp */ + static constexpr uint64_t SYS_VOLINFO = 190; // (VolInfo*, maxCount) -> count, -1 bad pointer + + /* Consent.hpp */ + static constexpr uint64_t SYS_CONSENT_REGISTER = 191; // () -> 0, -13 lacks CAP_COMPOSITOR, -1 another agent is live + static constexpr uint64_t SYS_CONSENT_NEXT = 192; // (ConsentRequest*) -> 1 delivered, 0 none queued + static constexpr uint64_t SYS_CONSENT_REPLY = 193; // (requestId, CONSENT_ALLOW/DENY) -> 0, -1 stale id + + /* Kernel-owned process capabilities. User identities may namespace + per-user resources, but never participate in authorization decisions. */ + static constexpr uint64_t CAP_PROCESS_ADMIN = 1ULL << 0; + static constexpr uint64_t CAP_POWER_REQUEST = 1ULL << 1; + static constexpr uint64_t CAP_POWER_CONTROL = 1ULL << 2; + static constexpr uint64_t CAP_SUSPEND = 1ULL << 3; + static constexpr uint64_t CAP_STORAGE_ADMIN = 1ULL << 4; + static constexpr uint64_t CAP_RAW_STORAGE = 1ULL << 5; + static constexpr uint64_t CAP_NETWORK_ADMIN = 1ULL << 6; + static constexpr uint64_t CAP_SET_TIME = 1ULL << 7; + static constexpr uint64_t CAP_USER_ADMIN = 1ULL << 8; + static constexpr uint64_t CAP_DISPLAY_ADMIN = 1ULL << 9; + static constexpr uint64_t CAP_DEVICE_ADMIN = 1ULL << 10; + static constexpr uint64_t CAP_LOG_READ = 1ULL << 11; + /* Write to the program images the system boots and runs (0:/os, + 0:/apps). Deliberately separate from CAP_STORAGE_ADMIN: grants are + keyed on binary path, so writing an image is equivalent to acquiring + whatever that image is granted at its next launch. Formatting a data + volume must not carry that authority with it. */ + static constexpr uint64_t CAP_SYSTEM_IMAGE = 1ULL << 12; + /* Map other processes' windows and deliver input events to them + (SYS_WINMAP, SYS_WINSENDEVENT): the desktop compositor's authority. + Anything holding it can read every window's pixels and click on any + window, including a consent prompt it is itself waiting on, so it is + never part of a session mask, never part of "all", and never + delegated by the compositor to what it launches. */ + static constexpr uint64_t CAP_COMPOSITOR = 1ULL << 13; + static constexpr uint64_t CAP_ALL = (1ULL << 14) - 1; + static constexpr uint64_t CAP_STANDARD_SESSION = CAP_POWER_REQUEST | CAP_SUSPEND; + static constexpr uint64_t CAP_ADMIN_SESSION = + CAP_STANDARD_SESSION | CAP_PROCESS_ADMIN | CAP_STORAGE_ADMIN | + CAP_RAW_STORAGE | CAP_NETWORK_ADMIN | CAP_SET_TIME | CAP_USER_ADMIN | + CAP_DISPLAY_ADMIN | CAP_DEVICE_ADMIN | CAP_LOG_READ; + static_assert((CAP_STANDARD_SESSION & ~CAP_ADMIN_SESSION) == 0); + static_assert((CAP_ADMIN_SESSION & CAP_POWER_CONTROL) == 0, + "final power control belongs only to the session supervisor"); + static_assert((CAP_ADMIN_SESSION & CAP_SYSTEM_IMAGE) == 0, + "an admin session must not imply authority to rewrite the " + "programs it launches; grant CAP_SYSTEM_IMAGE per binary"); + static_assert((CAP_ADMIN_SESSION & CAP_COMPOSITOR) == 0, + "a session must not delegate the compositor's authority; " + "login grants it to the desktop directly"); + // Capability denial for the Wi-Fi and USB syscalls only, which keep their + // own WIFI_ERR_* / USB_ERR_* spaces; everything else returns + // CapabilityDenied from StatusCodes. + static constexpr int SYS_ERR_PERMISSION = -13; + + // A process holds two independent sets: what it may use (effective) and + // what it may pass to children (delegable). A launcher can delegate what + // it never uses itself, so neither set bounds the other. + struct SpawnCapabilities { + uint64_t effective; + uint64_t delegable; + }; + + // Both of the child's sets must come out of the parent's delegable set. + constexpr bool ValidCapabilityDelegation(const SpawnCapabilities& child, + uint64_t parentDelegable) { + return ((child.effective | child.delegable) & ~CAP_ALL) == 0 && + (child.effective & ~parentDelegable) == 0 && + (child.delegable & ~parentDelegable) == 0; + } + static_assert(ValidCapabilityDelegation( + {CAP_NETWORK_ADMIN, 0}, CAP_NETWORK_ADMIN)); + static_assert(ValidCapabilityDelegation( + {0, CAP_NETWORK_ADMIN}, CAP_NETWORK_ADMIN)); + static_assert(!ValidCapabilityDelegation( + {CAP_NETWORK_ADMIN, CAP_NETWORK_ADMIN}, 0)); + static_assert(!ValidCapabilityDelegation( + {CAP_NETWORK_ADMIN | CAP_SET_TIME, 0}, CAP_NETWORK_ADMIN)); + static_assert(!ValidCapabilityDelegation( + {0, CAP_NETWORK_ADMIN | CAP_SET_TIME}, CAP_NETWORK_ADMIN)); + + /* Capabilities a user can grant at first use through a consent prompt. + A consent grant never exceeds what the process's parent could have + delegated to it at spawn (its consent ceiling), is never delegable + onwards, and is issued only by the session's consent agent -- so it is + deferred delegation, not amplification. */ + static constexpr uint64_t CAP_CONSENT_ELIGIBLE = + CAP_STORAGE_ADMIN | CAP_NETWORK_ADMIN | CAP_SET_TIME | + CAP_DISPLAY_ADMIN | CAP_LOG_READ; + static_assert((CAP_CONSENT_ELIGIBLE & ~CAP_ADMIN_SESSION) == 0, + "consent can only hand out authority an admin session holds"); + + static constexpr int CONSENT_DENY = 0; + static constexpr int CONSENT_ALLOW = 1; + // A request left unanswered this long is denied (and not remembered). + static constexpr uint64_t CONSENT_TIMEOUT_MS = 120000; + + struct ConsentRequest { + uint64_t id; + uint64_t capability; // exactly one CAP_* bit + int32_t pid; + uint32_t imageProtected; // 1 when writing the image needs CAP_SYSTEM_IMAGE + char imagePath[256]; + }; static constexpr int USB_ERR_INVALID = -1; @@ -264,10 +381,17 @@ namespace montauk::abi { // Graceful power-off request actions (SYS_POWER_REQUEST). The desktop posts // a pending action and exits; login.elf reads it, runs the shutdown stages, // then issues the matching SYS_SHUTDOWN / SYS_RESET. + // + // A request can also be posted from inside the session -- the shell's + // shutdown builtin does. login only looks at it once the session leader + // exits, so the leader has to notice and stand down: POWER_REQ_PEEK is the + // non-destructive read it polls with. Only login consumes (QUERY), so a + // leader that peeks cannot swallow the request it is meant to act on. enum PowerRequestAction : int { POWER_REQ_QUERY = 0, // read-and-clear the pending action POWER_REQ_SHUTDOWN = 1, POWER_REQ_REBOOT = 2, + POWER_REQ_PEEK = 3, // read the pending action without clearing it }; static constexpr uint32_t CLIPBOARD_MAX_TEXT_BYTES = 256 * 1024; @@ -530,6 +654,28 @@ namespace montauk::abi { char typeName[24]; // human-readable type name }; + // One mounted volume (returned by SYS_VOLINFO). A volume is a single + // mounted filesystem, which is what a drive number names: one physical + // disk with three partitions occupies three drive numbers. + // + // A volume with no backing partition -- the boot ramdisk -- reports + // blockDev and partIndex as -1 and leaves the geometry fields zero. + struct VolInfo { + int32_t drive; // VFS drive number ("N:/") + int32_t blockDev; // backing block device index, -1 if none + int32_t partIndex; // global GPT partition index, -1 if none + uint32_t kind; // BlockDeviceKind: 0=none/ramdisk, 1=SATA, 2=SATAPI, 3=NVMe, 4=USB MSC + uint64_t startLba; // partition start LBA, 0 if none + uint64_t sectorCount; // partition length in sectors, 0 if none + uint32_t sectorSize; // logical sector size in bytes, 0 if none + uint32_t _pad0; + char label[36]; // filesystem volume label, "" if unset + char fsType[12]; // "ext2", "FAT32", "ramdisk", "" if unknown + char partName[72]; // GPT partition name, "" if none + char model[41]; // backing disk model, "" if none + char _pad1[3]; + }; + struct GptAddParams { int32_t blockDev; uint32_t _pad0; @@ -729,6 +875,8 @@ namespace montauk::abi { char name[64]; uint64_t heapUsed; // Distance from UserHeapBase to high-water mark uint64_t cpuTimeMs; // accumulated scheduler runtime + uint64_t effectiveCaps; + uint64_t delegableCaps; }; struct MemStats { @@ -738,6 +886,26 @@ namespace montauk::abi { uint64_t pageSize; }; + // Battery status (returned by SYS_BATTERYINFO). A machine with no battery + // device fails the call outright; `present` distinguishes a laptop with the + // pack removed from one that is running on it. + struct BatteryInfo { + uint8_t present; // a battery is installed + uint8_t charging; + uint8_t discharging; + uint8_t critical; + uint8_t acOnline; // AC adapter connected + uint8_t hasAcAdapter; // an AC adapter device exists at all + uint8_t percent; // 0..100, 0 when capacity is unknown + uint8_t powerUnitMilliAmps; // capacities are mAh/mA, not mWh/mW + uint32_t remainingCapacity; + uint32_t fullCapacity; // last full charge capacity + uint32_t designCapacity; + uint32_t presentRate; // mW or mA, 0 when unknown + uint32_t voltageMv; + int32_t minutesRemaining; // -1 when not estimable (e.g. charging) + }; + // Crash report (filled by kernel on process fault, returned via SYS_CRASH_REPORT) struct CrashReportInfo { int pid; diff --git a/template/sysroot/include/gui/desktop.hpp b/template/sysroot/include/gui/desktop.hpp index 0783747..54b948c 100644 --- a/template/sysroot/include/gui/desktop.hpp +++ b/template/sysroot/include/gui/desktop.hpp @@ -217,6 +217,16 @@ struct DesktopState { uint64_t wifi_status_time; + // Battery indicator. Absent entirely on a machine with no ACPI battery + // device, which is how a desktop keeps a clean panel. + SvgIcon icon_battery; + char battery_icon_name[64]; // which glyph icon_battery holds + bool battery_present; // a battery device exists + bool battery_popup_open; + Rect battery_icon_rect; + montauk::abi::BatteryInfo battery_info; + uint64_t battery_last_poll; + bool vol_popup_open; Rect vol_icon_rect; int vol_level; // 0-100 diff --git a/template/sysroot/include/gui/terminal.hpp b/template/sysroot/include/gui/terminal.hpp index 70f41aa..6534bcc 100644 --- a/template/sysroot/include/gui/terminal.hpp +++ b/template/sysroot/include/gui/terminal.hpp @@ -10,6 +10,7 @@ #include #include #include +#include namespace gui { @@ -59,32 +60,47 @@ struct TerminalState { int csi_current_param; }; +// ==== Palette ==== +// +// The palette is a mutable global rather than a set of constants because the +// terminal lets the user switch themes at runtime. Cells store resolved colors, +// so a theme switch also has to rewrite the cells that were painted with the +// outgoing palette -- see terminal_remap_palette below. + +struct TermPalette { + Color bg; + Color fg; + Color cursor; + Color ansi[16]; +}; + +inline constexpr TermPalette TERM_PALETTE_DEFAULT = { + colors::TERM_BG, + colors::TERM_FG, + colors::TERM_FG, + { + Color::from_hex(0x000000), Color::from_hex(0xCC0000), + Color::from_hex(0x4E9A06), Color::from_hex(0xC4A000), + Color::from_hex(0x3465A4), Color::from_hex(0x75507B), + Color::from_hex(0x06989A), Color::from_hex(0xD3D7CF), + Color::from_hex(0x555753), Color::from_hex(0xEF2929), + Color::from_hex(0x8AE234), Color::from_hex(0xFCE94F), + Color::from_hex(0x729FCF), Color::from_hex(0xAD7FA8), + Color::from_hex(0x34E2E2), Color::from_hex(0xEEEEEC), + } +}; + +inline TermPalette g_term_palette = TERM_PALETTE_DEFAULT; + // Standard ANSI color palette as ARGB pixels static inline Color term_ansi_color(int idx) { - switch (idx) { - case 0: return Color::from_hex(0x000000); - case 1: return Color::from_hex(0xCC0000); - case 2: return Color::from_hex(0x4E9A06); - case 3: return Color::from_hex(0xC4A000); - case 4: return Color::from_hex(0x3465A4); - case 5: return Color::from_hex(0x75507B); - case 6: return Color::from_hex(0x06989A); - case 7: return Color::from_hex(0xD3D7CF); - case 8: return Color::from_hex(0x555753); - case 9: return Color::from_hex(0xEF2929); - case 10: return Color::from_hex(0x8AE234); - case 11: return Color::from_hex(0xFCE94F); - case 12: return Color::from_hex(0x729FCF); - case 13: return Color::from_hex(0xAD7FA8); - case 14: return Color::from_hex(0x34E2E2); - case 15: return Color::from_hex(0xEEEEEC); - default: return colors::TERM_FG; - } + if (idx < 0 || idx > 15) return g_term_palette.fg; + return g_term_palette.ansi[idx]; } // ANSI 256-color palette (0-15 = standard, 16-231 = RGB cube, 232-255 = grayscale) static inline Color term_ansi_256_color(int idx) { - if (idx < 0) return colors::TERM_FG; + if (idx < 0) return g_term_palette.fg; if (idx <= 15) return term_ansi_color(idx); if (idx <= 231) { // 6x6x6 RGB cube: idx 16 = (0,0,0), idx 231 = (5,5,5) @@ -118,6 +134,47 @@ static inline void terminal_invalidate_render_cache(TerminalState* t) { t->render_cursor_visible = false; } +// Translate one already-resolved cell color from an outgoing palette to the +// incoming one. Colors that are not palette entries -- 256-color cube and +// grayscale ramp values -- are left exactly as the program asked for them. +static inline Color term_remap_color(Color c, const TermPalette& from, + const TermPalette& to) { + if (term_color_equal(c, from.bg)) return to.bg; + if (term_color_equal(c, from.fg)) return to.fg; + for (int i = 0; i < 16; i++) { + if (term_color_equal(c, from.ansi[i])) return to.ansi[i]; + } + return c; +} + +// Repaint an existing terminal in a new palette. Cells carry resolved colors, +// so switching themes without this leaves all scrollback -- and the shell's +// colored prompt -- in the old theme's colors. +static inline void terminal_remap_palette(TerminalState* t, + const TermPalette& from, + const TermPalette& to) { + if (!t || !t->cells) return; + + int total = (t->rows + t->max_scrollback) * t->cols; + for (int i = 0; i < total; i++) { + t->cells[i].fg = term_remap_color(t->cells[i].fg, from, to); + t->cells[i].bg = term_remap_color(t->cells[i].bg, from, to); + } + + if (t->alt_cells) { + int screen = t->rows * t->cols; + for (int i = 0; i < screen; i++) { + t->alt_cells[i].fg = term_remap_color(t->alt_cells[i].fg, from, to); + t->alt_cells[i].bg = term_remap_color(t->alt_cells[i].bg, from, to); + } + } + + t->current_fg = term_remap_color(t->current_fg, from, to); + t->current_bg = term_remap_color(t->current_bg, from, to); + terminal_invalidate_render_cache(t); + t->dirty = true; +} + static inline Color terminal_erase_bg(TerminalState* t) { return t->current_bg; } @@ -162,8 +219,8 @@ static inline void terminal_init_cells(TerminalState* t, int cols, int rows, int t->scrollback_lines = 0; t->max_scrollback = max_sb; t->view_offset = 0; - t->current_fg = colors::TERM_FG; - t->current_bg = colors::TERM_BG; + t->current_fg = g_term_palette.fg; + t->current_bg = g_term_palette.bg; t->cursor_visible = false; t->alt_screen_active = false; t->reverse_video = false; @@ -201,10 +258,10 @@ static inline void terminal_init_cells(TerminalState* t, int cols, int rows, int return; } for (int i = 0; i < total_cells; i++) { - t->cells[i] = {' ', colors::TERM_FG, colors::TERM_BG}; + t->cells[i] = {' ', g_term_palette.fg, g_term_palette.bg}; } for (int i = 0; i < screen_cells; i++) { - t->alt_cells[i] = {' ', colors::TERM_FG, colors::TERM_BG}; + t->alt_cells[i] = {' ', g_term_palette.fg, g_term_palette.bg}; } } @@ -212,7 +269,8 @@ static inline void terminal_init(TerminalState* t, int cols, int rows) { terminal_init_cells(t, cols, rows, TERM_MAX_SCROLLBACK); t->cursor_visible = true; - t->child_pid = montauk::spawn_redir("0:/os/shell.elf"); + static constexpr const char* kShellPath = "0:/os/shell.elf"; + t->child_pid = montauk::caps::launch(kShellPath, {.redirected = true}); if (t->child_pid > 0) montauk::childio_settermsz(t->child_pid, cols, rows); } @@ -245,7 +303,7 @@ static inline void terminal_enter_alt_screen(TerminalState* t) { TermCell* screen = term_screen_row(t, 0); for (int i = 0; i < total; i++) { t->alt_cells[i] = screen[i]; - screen[i] = {' ', colors::TERM_FG, colors::TERM_BG}; + screen[i] = {' ', g_term_palette.fg, g_term_palette.bg}; } t->view_offset = 0; t->cursor_x = 0; @@ -424,8 +482,8 @@ static inline void terminal_process_csi(TerminalState* t, char cmd) { } if (code == 0) { - t->current_fg = colors::TERM_FG; - t->current_bg = colors::TERM_BG; + t->current_fg = g_term_palette.fg; + t->current_bg = g_term_palette.bg; t->reverse_video = false; } else if (code == 1) { // Bold: map to bright version of current color @@ -473,15 +531,15 @@ static inline void terminal_process_csi(TerminalState* t, char cmd) { } else if (code >= 100 && code <= 107) { t->current_bg = term_ansi_color(code - 100 + 8); } else if (code == 39) { - t->current_fg = colors::TERM_FG; + t->current_fg = g_term_palette.fg; } else if (code == 49) { - t->current_bg = colors::TERM_BG; + t->current_bg = g_term_palette.bg; } } if (t->csi_param_count == 0) { // ESC[m with no params = reset - t->current_fg = colors::TERM_FG; - t->current_bg = colors::TERM_BG; + t->current_fg = g_term_palette.fg; + t->current_bg = g_term_palette.bg; t->reverse_video = false; } break; @@ -532,8 +590,8 @@ static inline void terminal_feed(TerminalState* t, const char* data, int len) { for (int j = 0; j < 8; j++) t->csi_params[j] = 0; } else if (ch == 'c') { // Reset terminal - t->current_fg = colors::TERM_FG; - t->current_bg = colors::TERM_BG; + t->current_fg = g_term_palette.fg; + t->current_bg = g_term_palette.bg; t->cursor_x = 0; t->cursor_y = 0; t->parse_state = TerminalState::STATE_NORMAL; @@ -627,18 +685,21 @@ static inline void terminal_draw_cursor_pixels(const TermCell& cell, uint32_t* pixels, int pw, int ph, int px, int py, int cell_w, int cell_h, bool use_ttf, GlyphCache* gc) { + // The block cursor takes its color from the palette and punches the glyph + // out in the background color, so it stays legible on light themes too -- + // a hardcoded white block disappears on a white background. terminal_fill_pixel_rect(pixels, pw, ph, px, py, cell_w, cell_h, - colors::WHITE.to_pixel()); + g_term_palette.cursor.to_pixel()); if (cell.ch <= 32 && cell.ch >= 0) return; if (use_ttf) { int baseline = py + gc->ascent; fonts::mono->draw_char_to_buffer(pixels, pw, ph, - px, baseline, (unsigned char)cell.ch, colors::BLACK, gc); + px, baseline, (unsigned char)cell.ch, g_term_palette.bg, gc); } else { terminal_draw_bitmap_char(pixels, pw, ph, px, py, (unsigned char)cell.ch, - colors::BLACK.to_pixel()); + g_term_palette.bg.to_pixel()); } } @@ -700,7 +761,7 @@ static inline void terminal_render(TerminalState* t, uint32_t* pixels, int pw, i t->render_base_row != base_row || t->render_term_cols != t->cols || t->render_term_rows != t->rows; - uint32_t bg_px = colors::TERM_BG.to_pixel(); + uint32_t bg_px = g_term_palette.bg.to_pixel(); if (full_redraw) { int row_bytes = pw * sizeof(uint32_t); for (int i = 0; i < pw; i++) pixels[i] = bg_px; @@ -779,9 +840,9 @@ static inline void terminal_resize(TerminalState* t, int new_cols, int new_rows) // Clear new buffers for (int i = 0; i < new_total; i++) - new_cells[i] = {' ', colors::TERM_FG, colors::TERM_BG}; + new_cells[i] = {' ', g_term_palette.fg, g_term_palette.bg}; for (int i = 0; i < new_rows * new_cols; i++) - new_alt[i] = {' ', colors::TERM_FG, colors::TERM_BG}; + new_alt[i] = {' ', g_term_palette.fg, g_term_palette.bg}; // Copy content: scrollback + visible screen int old_content = t->scrollback_lines + t->rows; diff --git a/template/sysroot/include/gui/truetype.hpp b/template/sysroot/include/gui/truetype.hpp index edf3593..f7d877e 100644 --- a/template/sysroot/include/gui/truetype.hpp +++ b/template/sysroot/include/gui/truetype.hpp @@ -483,10 +483,10 @@ namespace fonts { return f; }; - system_font = load("0:/fonts/Roboto-Medium.ttf"); - system_bold = load("0:/fonts/Roboto-Bold.ttf"); - mono = load("0:/fonts/JetBrainsMono-Regular.ttf"); - mono_bold = load("0:/fonts/JetBrainsMono-Bold.ttf"); + system_font = load("0:/os/fonts/Roboto-Medium.ttf"); + system_bold = load("0:/os/fonts/Roboto-Bold.ttf"); + mono = load("0:/os/fonts/JetBrainsMono-Regular.ttf"); + mono_bold = load("0:/os/fonts/JetBrainsMono-Bold.ttf"); return system_font != nullptr; } diff --git a/template/sysroot/include/libc/montauk.h b/template/sysroot/include/libc/montauk.h index dd49f4c..d08f457 100644 --- a/template/sysroot/include/libc/montauk.h +++ b/template/sysroot/include/libc/montauk.h @@ -208,8 +208,38 @@ extern "C" { #define MTK_SYS_USB_BULK_IN_START 182 #define MTK_SYS_USB_BULK_IN_STOP 183 #define MTK_SYS_USB_BULK_IN_READ 184 +#define MTK_SYS_SPAWN_CAPS 185 +#define MTK_SYS_SPAWN_REDIR_CAPS 186 +#define MTK_SYS_ALLOC_EAGER 187 +#define MTK_SYS_BATTERYINFO 188 +#define MTK_SYS_GETCAPS 189 +#define MTK_SYS_VOLINFO 190 +#define MTK_SYS_CONSENT_REGISTER 191 +#define MTK_SYS_CONSENT_NEXT 192 +#define MTK_SYS_CONSENT_REPLY 193 /* @SYSCALLS-END */ +/* Syscall status codes (montauk/statuscodes.h for C++). */ +/* @STATUS-BEGIN + Generated from Common/StatusCodes.hpp by scripts/montauk-syscalls.py. + Do not edit by hand; run 'make gen-syscalls' to refresh. */ +#define MTK_STATUS_SUCCESS (0) +#define MTK_STATUS_GENERIC_FAILURE (-1) +#define MTK_STATUS_PERMISSION_DENIED (-2) +#define MTK_STATUS_CAPABILITY_DENIED (-3) +#define MTK_STATUS_SYSTEM_INTEGRITY_ERROR (-4) +#define MTK_STATUS_BAD_POINTER (-5) +#define MTK_STATUS_INVALID_ARGUMENT (-6) +#define MTK_STATUS_UNSUPPORTED_OP (-7) +#define MTK_STATUS_NO_DEVICE (-8) +#define MTK_STATUS_IO_FAILURE (-9) +#define MTK_STATUS_BAD_INVOCATION (-10) +#define MTK_STATUS_NO_SUCH_PATH (-11) +#define MTK_STATUS_BUSY (-12) +#define MTK_STATUS_BUFFER_TOO_SMALL (-13) +#define MTK_STATUS_OUT_OF_MEMORY (-14) +/* @STATUS-END */ + #define MTK_SOCK_TCP 1 #define MTK_SOCK_UDP 2 #define MTK_IPC_SIGNAL_READABLE (1u << 0) @@ -683,8 +713,8 @@ static inline int mtk_set_unix_time(int64_t unix_seconds) { return (int)_mtk_syscall1(MTK_SYS_SETUNIXTIME, (long)unix_seconds); } -static inline void mtk_settz(int offset_minutes) { - _mtk_syscall1(MTK_SYS_SETTZ, (long)offset_minutes); +static inline int mtk_settz(int offset_minutes) { + return (int)_mtk_syscall1(MTK_SYS_SETTZ, (long)offset_minutes); } static inline int mtk_gettz(void) { @@ -883,12 +913,12 @@ static inline int mtk_audio_ctl(int handle, int cmd, int value) { Power management ==================================================================== */ -static inline void mtk_reset(void) { - _mtk_syscall0(MTK_SYS_RESET); +static inline int mtk_reset(void) { + return (int)_mtk_syscall0(MTK_SYS_RESET); } -static inline void mtk_shutdown(void) { - _mtk_syscall0(MTK_SYS_SHUTDOWN); +static inline int mtk_shutdown(void) { + return (int)_mtk_syscall0(MTK_SYS_SHUTDOWN); } /* ==================================================================== diff --git a/template/sysroot/include/libc/wchar.h b/template/sysroot/include/libc/wchar.h index cd90739..45c8baf 100644 --- a/template/sysroot/include/libc/wchar.h +++ b/template/sysroot/include/libc/wchar.h @@ -21,6 +21,7 @@ typedef struct { /* Byte-oriented C locale only: one byte, one character. */ size_t mbstowcs(wchar_t *dst, const char *src, size_t n); int mblen(const char *s, size_t n); +size_t mbrtowc(wchar_t *pwc, const char *s, size_t n, mbstate_t *ps); #ifdef __cplusplus } diff --git a/template/sysroot/include/montauk/capabilities.h b/template/sysroot/include/montauk/capabilities.h new file mode 100644 index 0000000..bbf0595 --- /dev/null +++ b/template/sysroot/include/montauk/capabilities.h @@ -0,0 +1,216 @@ +/* + * capabilities.h + * Shared reader for the capability grant table (0:/config/capabilities.toml) + * Copyright (c) 2026 Daniel Hammer +*/ + +#pragma once +#include +#include +#include +#include + +namespace montauk { +namespace caps { + + inline constexpr const char* GRANT_CONFIG = "capabilities"; + inline constexpr const char* GRANT_PREFIX = "grant."; + + struct CapName { + const char* name; + uint64_t bit; + }; + + // Names as they appear in the config file. Kept in the same order as the + // CAP_* bit definitions in Api/Syscall.hpp. + inline constexpr CapName NAMES[] = { + {"process_admin", montauk::abi::CAP_PROCESS_ADMIN}, + {"power_request", montauk::abi::CAP_POWER_REQUEST}, + {"power_control", montauk::abi::CAP_POWER_CONTROL}, + {"suspend", montauk::abi::CAP_SUSPEND}, + {"storage_admin", montauk::abi::CAP_STORAGE_ADMIN}, + {"raw_storage", montauk::abi::CAP_RAW_STORAGE}, + {"network_admin", montauk::abi::CAP_NETWORK_ADMIN}, + {"set_time", montauk::abi::CAP_SET_TIME}, + {"user_admin", montauk::abi::CAP_USER_ADMIN}, + {"display_admin", montauk::abi::CAP_DISPLAY_ADMIN}, + {"device_admin", montauk::abi::CAP_DEVICE_ADMIN}, + {"log_read", montauk::abi::CAP_LOG_READ}, + {"system_image", montauk::abi::CAP_SYSTEM_IMAGE}, + {"compositor", montauk::abi::CAP_COMPOSITOR}, + }; + + // Never implied by "all": each must be named explicitly in a grant. + inline constexpr uint64_t EXPLICIT_ONLY = + montauk::abi::CAP_SYSTEM_IMAGE | montauk::abi::CAP_COMPOSITOR; + + inline uint64_t bit_for_name(const char* name) { + if (name == nullptr || name[0] == '\0') return 0; + // "all" means "everything this launcher may pass on". + if (montauk::streq(name, "all")) + return montauk::abi::CAP_ALL & ~EXPLICIT_ONLY; + for (const auto& entry : NAMES) { + if (montauk::streq(entry.name, name)) return entry.bit; + } + + return 0; + } + + // True when a grant for `path` can apply: the program is installed under + // 0:/os or 0:/apps, which cannot be rewritten without system_image. The + // kernel enforces this (Fs::IsSystemImage) by starting any other program + // without capabilities; this copy of the rule is only for display. + inline bool is_installed_path(const char* path) { + if (path == nullptr) return false; + const char* p = path; + uint64_t drive = 0; + if (*p < '0' || *p > '9') return false; + while (*p >= '0' && *p <= '9') drive = drive * 10 + (uint64_t)(*p++ - '0'); + if (*p != ':' || drive != 0) return false; + p++; + static const char* const roots[] = {"/os", "/apps"}; + for (const char* root : roots) { + int i = 0; + while (root[i]) { + char c = p[i]; + if (c >= 'A' && c <= 'Z') c = (char)(c + ('a' - 'A')); + if (c != root[i]) break; + i++; + } + if (root[i] == '\0' && (p[i] == '\0' || p[i] == '/')) return true; + } + return false; + } + + // Read an array-of-strings key into a capability mask. + inline uint64_t mask_from_key(const montauk::toml::Doc& doc, const char* key) { + montauk::toml::Value* arr = doc.get_array(key); + if (arr == nullptr) return 0; + + uint64_t mask = 0; + for (int i = 0; i < arr->array.count; i++) { + montauk::toml::Value* item = arr->array.items[i]; + if (item == nullptr || item->type != montauk::toml::Type::String) continue; + mask |= bit_for_name(item->str); + } + return mask; + } + + // Append `suffix` to the "grant.." stem of `path_key`. + // Returns false if the key is not of that shape or does not fit. + inline bool build_sibling_key(const char* path_key, const char* suffix, + char* out, int outSz) { + int prefixLen = 0; + for (; GRANT_PREFIX[prefixLen]; prefixLen++) { + if (path_key[prefixLen] != GRANT_PREFIX[prefixLen]) return false; + } + + // Copy through the final '.' so "grant.foo.path" yields "grant.foo.". + int lastDot = -1; + for (int i = 0; path_key[i]; i++) { + if (path_key[i] == '.') lastDot = i; + } + if (lastDot < prefixLen) return false; + + int n = 0; + for (; n <= lastDot && n < outSz - 1; n++) out[n] = path_key[n]; + for (int i = 0; suffix[i] && n < outSz - 1; i++) out[n++] = suffix[i]; + out[n] = '\0'; + return true; + } + + // Look up the grant declared for `binary_path`. Returns false when the + // path has no entry, which is the common case and means "no authority". + inline bool lookup(const char* binary_path, + montauk::abi::SpawnCapabilities& out) { + out = {0, 0}; + if (binary_path == nullptr || binary_path[0] == '\0') return false; + + montauk::toml::Doc doc = montauk::config::load(GRANT_CONFIG); + + bool found = false; + for (int i = 0; i < doc.entries.count && !found; i++) { + montauk::toml::Value* entry = doc.entries.items[i]; + if (entry == nullptr || entry->key == nullptr) continue; + if (entry->type != montauk::toml::Type::String) continue; + + char sibling[128]; + if (!build_sibling_key(entry->key, "path", sibling, sizeof(sibling))) continue; + if (!montauk::streq(sibling, entry->key)) continue; + if (!montauk::streq(entry->str, binary_path)) continue; + + build_sibling_key(entry->key, "effective", sibling, sizeof(sibling)); + uint64_t effective = mask_from_key(doc, sibling); + build_sibling_key(entry->key, "delegable", sibling, sizeof(sibling)); + uint64_t delegable = mask_from_key(doc, sibling); + + out.effective = effective; + out.delegable = delegable; + found = true; + } + + doc.destroy(); + return found; + } + + // The calling process's own capability masks. + inline bool self(montauk::abi::SpawnCapabilities& out) { + out = {0, 0}; + return montauk::getcaps(&out) == 0; + } + + inline uint64_t self_delegable() { + montauk::abi::SpawnCapabilities mine; + return self(mine) ? mine.delegable : 0; + } + + // Build a spawn request for `binary_path`, clamped to what the caller may + // actually delegate. + inline montauk::abi::SpawnCapabilities for_binary(const char* binary_path, + uint64_t caller_delegable) { + montauk::abi::SpawnCapabilities caps{0, 0}; + + if (caller_delegable == 0) return caps; + + if (!lookup(binary_path, caps)) return caps; + + caps.effective &= caller_delegable; + caps.delegable &= caller_delegable; + return caps; + } + + // The calling process's delegable set, cached. + inline uint64_t my_delegable() { + static uint64_t cached = 0; + static bool loaded = false; + if (!loaded) { + cached = self_delegable(); + loaded = true; + } + return cached; + } + + struct LaunchOptions { + const char* args = nullptr; + // Owner identity for the child. Requires CAP_USER_ADMIN and is + // reserved for session creators (init, login); + const char* user = nullptr; + // True for a console host that reads and writes the child's I/O + // through the childio calls rather than sharing its own. + bool redirected = false; + }; + + // Unified launch helper. + inline int launch(const char* path, const LaunchOptions& opt = {}) { + if (path == nullptr || path[0] == '\0') return -1; + + if (opt.redirected && opt.user != nullptr) return -1; + + montauk::abi::SpawnCapabilities caps = for_binary(path, my_delegable()); + return opt.redirected + ? spawn_redir_with_caps(path, opt.args, caps) + : spawn_with_caps(path, opt.args, opt.user, caps); + } + +} // namespace caps +} // namespace montauk diff --git a/template/sysroot/include/montauk/consent.h b/template/sysroot/include/montauk/consent.h new file mode 100644 index 0000000..93abc45 --- /dev/null +++ b/template/sysroot/include/montauk/consent.h @@ -0,0 +1,209 @@ +/* + * consent.h + * First-use consent: prompt wording and the stored-decision table + * (0:/config/consent.toml). + * Copyright (c) 2026 Daniel Hammer +*/ + +#pragma once +#include +#include +#include +#include +#include + +namespace montauk { +namespace consent { + + inline constexpr const char* STORE_CONFIG = "consent"; + inline constexpr const char* STORE_PREFIX = "decision."; + + struct CapText { + uint64_t bit; + const char* action; // completes " wants to ..." + const char* icon; // shown in the prompt + }; + + inline constexpr CapText TEXTS[] = { + {montauk::abi::CAP_STORAGE_ADMIN, "format, partition and mount disks", + "0:/os/icons/drive-harddisk.svg"}, + {montauk::abi::CAP_NETWORK_ADMIN, "change network settings and join Wi-Fi networks", + "0:/os/icons/network-wired.svg"}, + {montauk::abi::CAP_SET_TIME, "change the system clock and time zone", + "0:/os/icons/preferences-system-time.svg"}, + {montauk::abi::CAP_DISPLAY_ADMIN, "change the screen resolution and brightness", + "0:/os/icons/preferences-desktop-display.svg"}, + {montauk::abi::CAP_LOG_READ, "read the system log, which can reveal what other apps and devices are doing", + "0:/os/icons/utilities-log-viewer.svg"}, + }; + + // Fallback for a capability without its own icon. + inline constexpr const char* DEFAULT_ICON = "0:/os/icons/lock.svg"; + + inline const char* action_for(uint64_t bit) { + for (const auto& t : TEXTS) { + if (t.bit == bit) return t.action; + } + return "use a protected system capability"; + } + + inline const char* icon_for(uint64_t bit) { + for (const auto& t : TEXTS) { + if (t.bit == bit) return t.icon; + } + return DEFAULT_ICON; + } + + inline const char* name_for(uint64_t bit) { + for (const auto& n : montauk::caps::NAMES) { + if (n.bit == bit) return n.name; + } + return ""; + } + + // One stored decision, as read from the table. Only programs installed + // under 0:/os or 0:/apps are ever stored: those paths cannot be rewritten + // without CAP_SYSTEM_IMAGE, so the path alone identifies the program. + // The kernel reports this as ConsentRequest::imageProtected. + struct Decision { + char id[16]; + char path[256]; + uint64_t capability; + bool allow; + }; + + namespace detail { + inline void key(char* out, int cap, const char* id, const char* field) { + int n = 0; + for (const char* p = STORE_PREFIX; *p && n < cap - 1; p++) out[n++] = *p; + for (const char* p = id; *p && n < cap - 1; p++) out[n++] = *p; + if (n < cap - 1) out[n++] = '.'; + for (const char* p = field; *p && n < cap - 1; p++) out[n++] = *p; + out[n] = '\0'; + } + + // Ids of "decision..path" entries, in file order. + inline int collect_ids(const montauk::toml::Doc& doc, char (*ids)[16], int max) { + int count = 0; + int prefixLen = montauk::slen(STORE_PREFIX); + for (int i = 0; i < doc.entries.count && count < max; i++) { + montauk::toml::Value* v = doc.entries.items[i]; + if (v == nullptr || v->key == nullptr) continue; + if (!montauk::starts_with(v->key, STORE_PREFIX)) continue; + const char* rest = v->key + prefixLen; + int dot = 0; + while (rest[dot] && rest[dot] != '.') dot++; + if (rest[dot] != '.' || !montauk::streq(rest + dot + 1, "path")) continue; + if (dot <= 0 || dot >= 16) continue; + montauk::memcpy(ids[count], rest, dot); + ids[count][dot] = '\0'; + count++; + } + return count; + } + + inline bool read(const montauk::toml::Doc& doc, const char* id, Decision& out) { + char k[64]; + montauk::memset(&out, 0, sizeof(out)); + montauk::strncpy(out.id, id, sizeof(out.id)); + key(k, sizeof(k), id, "path"); + montauk::strncpy(out.path, doc.get_string(k, ""), sizeof(out.path)); + key(k, sizeof(k), id, "capability"); + out.capability = montauk::caps::bit_for_name(doc.get_string(k, "")); + key(k, sizeof(k), id, "decision"); + out.allow = montauk::streq(doc.get_string(k, ""), "allow"); + // "all" or an unknown name is never a valid stored decision. + return out.path[0] && + (out.capability & montauk::abi::CAP_CONSENT_ELIGIBLE) != 0 && + (out.capability & (out.capability - 1)) == 0; + } + + inline void remove_id(montauk::toml::Doc* doc, const char* id) { + static const char* fields[] = {"path", "capability", "decision"}; + char k[64]; + for (const char* f : fields) { + key(k, sizeof(k), id, f); + montauk::config::unset(doc, k); + } + } + } // namespace detail + + // Read up to `max` stored decisions. Returns the count. + inline int load_all(Decision* out, int max) { + montauk::toml::Doc doc = montauk::config::load(STORE_CONFIG); + char ids[128][16]; + int idCount = detail::collect_ids(doc, ids, 128); + int count = 0; + for (int i = 0; i < idCount && count < max; i++) { + if (detail::read(doc, ids[i], out[count])) count++; + } + doc.destroy(); + return count; + } + + // Stored answer for (path, capability): 1 allow, 0 deny, -1 none. + inline int lookup(const char* path, uint64_t capability) { + montauk::toml::Doc doc = montauk::config::load(STORE_CONFIG); + char ids[128][16]; + int idCount = detail::collect_ids(doc, ids, 128); + int result = -1; + for (int i = 0; i < idCount && result < 0; i++) { + Decision d; + if (!detail::read(doc, ids[i], d)) continue; + if (d.capability == capability && montauk::streq(d.path, path)) { + result = d.allow ? 1 : 0; + } + } + doc.destroy(); + return result; + } + + // Store an answer, replacing any earlier one for the same path and + // capability. Returns 0 on success, negative when the table cannot be + // written. + inline int record(const char* path, uint64_t capability, bool allow) { + montauk::toml::Doc doc = montauk::config::load(STORE_CONFIG); + char ids[128][16]; + int idCount = detail::collect_ids(doc, ids, 128); + int nextId = 1; + for (int i = 0; i < idCount; i++) { + Decision d; + bool valid = detail::read(doc, ids[i], d); + if (valid && d.capability == capability && montauk::streq(d.path, path)) + detail::remove_id(&doc, ids[i]); + int n = 0; + for (const char* p = ids[i]; *p >= '0' && *p <= '9'; p++) n = n * 10 + (*p - '0'); + if (n >= nextId) nextId = n + 1; + } + + char id[16]; + int len = 0; + char rev[16]; + for (int n = nextId; n > 0 && len < 15; n /= 10) rev[len++] = (char)('0' + n % 10); + for (int i = 0; i < len; i++) id[i] = rev[len - 1 - i]; + id[len] = '\0'; + + char k[64]; + detail::key(k, sizeof(k), id, "path"); + montauk::config::set_string(&doc, k, path); + detail::key(k, sizeof(k), id, "capability"); + montauk::config::set_string(&doc, k, name_for(capability)); + detail::key(k, sizeof(k), id, "decision"); + montauk::config::set_string(&doc, k, allow ? "allow" : "deny"); + + int rc = montauk::config::save(STORE_CONFIG, &doc); + doc.destroy(); + return rc; + } + + // Drop one stored decision by id; the program is asked again next time. + inline int forget(const char* id) { + montauk::toml::Doc doc = montauk::config::load(STORE_CONFIG); + detail::remove_id(&doc, id); + int rc = montauk::config::save(STORE_CONFIG, &doc); + doc.destroy(); + return rc; + } + +} // namespace consent +} // namespace montauk diff --git a/template/sysroot/include/montauk/statuscodes.h b/template/sysroot/include/montauk/statuscodes.h new file mode 100644 index 0000000..be65416 --- /dev/null +++ b/template/sysroot/include/montauk/statuscodes.h @@ -0,0 +1,35 @@ +/* + * statuscodes.h + * MontaukOS status codes + * Copyright (c) 2026 Daniel Hammer +*/ + +#pragma once + +// Userspace mirror of kernel/src/Common/StatusCodes.hpp. Also usable from C +// (the libc includes it), where the enumerators are unqualified. +#ifdef __cplusplus +namespace montauk { +#endif + +enum StatusCodes { + Success = 0, + GenericFailure = -1, + PermissionDenied = -2, + CapabilityDenied = -3, + SystemIntegrityError = -4, + BadPointer = -5, + InvalidArgument = -6, + UnsupportedOp = -7, + NoDevice = -8, + IoFailure = -9, + BadInvocation = -10, + NoSuchPath = -11, + Busy = -12, + BufferTooSmall = -13, + OutOfMemory = -14 +}; + +#ifdef __cplusplus +} +#endif diff --git a/template/sysroot/include/montauk/syscall.h b/template/sysroot/include/montauk/syscall.h index e963fa3..5c9c188 100644 --- a/template/sysroot/include/montauk/syscall.h +++ b/template/sysroot/include/montauk/syscall.h @@ -6,6 +6,7 @@ #pragma once #include +#include namespace montauk { @@ -120,6 +121,28 @@ namespace montauk { inline int spawn(const char* path, const char* args = nullptr) { return (int)syscall2(montauk::abi::SYS_SPAWN, (uint64_t)path, (uint64_t)args); } + inline int spawn_with_caps(const char* path, const char* args, + const char* user, + const montauk::abi::SpawnCapabilities& capabilities) { + return (int)syscall4(montauk::abi::SYS_SPAWN_CAPS, (uint64_t)path, + (uint64_t)args, (uint64_t)user, + (uint64_t)&capabilities); + } + // The calling process's own capability masks. Returns 0 on success. + inline int getcaps(montauk::abi::SpawnCapabilities* out) { + return (int)syscall1(montauk::abi::SYS_GETCAPS, (uint64_t)out); + } + + // Consent agent. + inline int consent_register() { + return (int)syscall0(montauk::abi::SYS_CONSENT_REGISTER); + } + inline int consent_next(montauk::abi::ConsentRequest* out) { + return (int)syscall1(montauk::abi::SYS_CONSENT_NEXT, (uint64_t)out); + } + inline int consent_reply(uint64_t id, int decision) { + return (int)syscall2(montauk::abi::SYS_CONSENT_REPLY, id, (uint64_t)decision); + } inline int chdir(const char* path) { return (int)syscall1(montauk::abi::SYS_CHDIR, (uint64_t)path); } @@ -184,6 +207,10 @@ namespace montauk { // Memory inline void* alloc(uint64_t size) { return (void*)syscall1(montauk::abi::SYS_ALLOC, size); } + // As alloc(), but the kernel commits the whole range immediately. Use it + // for a buffer that is about to be written end to end: the lazy path costs + // one page fault, one mutex acquire and one VMA walk per 4 KiB. + inline void* alloc_eager(uint64_t size) { return (void*)syscall1(montauk::abi::SYS_ALLOC_EAGER, size); } inline void free(void* ptr) { syscall1(montauk::abi::SYS_FREE, (uint64_t)ptr); } // Timekeeping @@ -391,7 +418,10 @@ namespace montauk { } // Timezone offset (total minutes from UTC) - inline void settz(int offset_minutes) { syscall1(montauk::abi::SYS_SETTZ, (uint64_t)(int64_t)offset_minutes); } + inline int settz(int offset_minutes) { + return (int)syscall1(montauk::abi::SYS_SETTZ, + (uint64_t)(int64_t)offset_minutes); + } inline int gettz() { return (int)syscall0(montauk::abi::SYS_GETTZ); } // Random number generation @@ -400,14 +430,12 @@ namespace montauk { } // Power management - [[noreturn]] inline void reset() { - syscall0(montauk::abi::SYS_RESET); - __builtin_unreachable(); + inline int reset() { + return (int)syscall0(montauk::abi::SYS_RESET); } - [[noreturn]] inline void shutdown() { - syscall0(montauk::abi::SYS_SHUTDOWN); - __builtin_unreachable(); + inline int shutdown() { + return (int)syscall0(montauk::abi::SYS_SHUTDOWN); } inline int suspend() { @@ -423,6 +451,13 @@ namespace montauk { return (int)syscall1(montauk::abi::SYS_POWER_REQUEST, (uint64_t)(int64_t)action); } + // Non-destructive read of the pending request, for a session leader that + // must stand down when something inside its session (the shell's shutdown + // builtin, say) asked for power-off. Returns POWER_REQ_QUERY when idle. + inline int power_request_pending() { + return power_request(montauk::abi::POWER_REQ_PEEK); + } + // Mouse inline void mouse_state(montauk::abi::MouseState* out) { syscall1(montauk::abi::SYS_MOUSESTATE, (uint64_t)out); } inline void set_mouse_bounds(int32_t maxX, int32_t maxY) { @@ -447,6 +482,13 @@ namespace montauk { inline int spawn_redir(const char* path, const char* args = nullptr) { return (int)syscall2(montauk::abi::SYS_SPAWN_REDIR, (uint64_t)path, (uint64_t)args); } + inline int spawn_redir_with_caps( + const char* path, const char* args, + const montauk::abi::SpawnCapabilities& capabilities) { + return (int)syscall3(montauk::abi::SYS_SPAWN_REDIR_CAPS, + (uint64_t)path, (uint64_t)args, + (uint64_t)&capabilities); + } inline int childio_read(int childPid, char* buf, int maxLen) { return (int)syscall3(montauk::abi::SYS_CHILDIO_READ, (uint64_t)childPid, (uint64_t)buf, (uint64_t)maxLen); } @@ -484,6 +526,10 @@ namespace montauk { inline int partlist(montauk::abi::PartInfo* buf, int max) { return (int)syscall2(montauk::abi::SYS_PARTLIST, (uint64_t)buf, (uint64_t)max); } + // One entry per mounted volume (one filesystem, i.e. one drive number). + inline int volinfo(montauk::abi::VolInfo* buf, int max) { + return (int)syscall2(montauk::abi::SYS_VOLINFO, (uint64_t)buf, (uint64_t)max); + } // Raw block device I/O (driver-agnostic) inline int64_t disk_read(int blockDev, uint64_t lba, uint32_t sectorCount, void* buf) { @@ -613,6 +659,13 @@ namespace montauk { return (int)syscall1(montauk::abi::SYS_BTINFO, (uint64_t)buf); } + // ACPI battery status. Returns 0 on success, or -1 on a machine with no + // battery device at all -- which is the signal not to draw an indicator. + // A laptop with the pack removed still returns 0, with present == 0. + inline int battery_info(montauk::abi::BatteryInfo* out) { + return (int)syscall1(montauk::abi::SYS_BATTERYINFO, (uint64_t)out); + } + // Wi-Fi. scan() runs a full channel sweep and blocks until it finishes or // timeoutMs elapses, then fills buf with the networks seen; it returns the // number of entries written, or -1 when no adapter is ready. diff --git a/template/sysroot/include/montauk/user.h b/template/sysroot/include/montauk/user.h index 85dbae5..efff1e0 100644 --- a/template/sysroot/include/montauk/user.h +++ b/template/sysroot/include/montauk/user.h @@ -219,6 +219,16 @@ namespace user { return false; } + inline bool is_admin(const char* username) { + UserInfo users[MAX_USERS]; + int count = load_users(users, MAX_USERS); + for (int i = 0; i < count; i++) { + if (montauk::streq(users[i].username, username)) + return montauk::streq(users[i].role, "admin"); + } + return false; + } + // ---- User management ---- inline bool create_user(const char* username, const char* display_name, diff --git a/template/sysroot/lib/liblibc.a b/template/sysroot/lib/liblibc.a index f69128e1f4e587fa8341b9a503408c4756c45612..17fd9462d318617d035fa8c55b6936d0fe362c9f 100644 GIT binary patch literal 677502 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�!3xPso@Dqjse^IQ?82lv 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 z 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

O%NrvbY=NRhtdQtM(5FOBKVp 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 z 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 z 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 DPw0~b