22 lines
599 B
C++
22 lines
599 B
C++
|
#include "Pledge.h"
|
||
|
#include "memory/MemoryManager.h"
|
||
|
#include "sys/Syscall.h"
|
||
|
#include "thread/Scheduler.h"
|
||
|
#include <bits/memstat.h>
|
||
|
|
||
|
Result<u64> 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;
|
||
|
}
|