#include "Pledge.h" #include "memory/MemoryManager.h" #include "sys/Syscall.h" #include "thread/Scheduler.h" #include Result sys_memstat(Registers*, SyscallArgs args) { auto* current = Scheduler::current(); TRY(check_pledge(current, Promise::p_stdio)); struct membuf buf; buf.mem_total = MemoryManager::total(); buf.mem_used = MemoryManager::used(); buf.mem_free = MemoryManager::free(); buf.mem_reserved = MemoryManager::reserved(); if (!MemoryManager::copy_to_user_typed((struct membuf*)args[0], &buf)) return err(EFAULT); return 0; }