We can finally show memory usage in userspace. This could have been done using sysfs, but I'm lazy and don't want to implement that. Maybe in the next release?
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;
|
|
}
|