#include "types.h" #include "param.h" #include "memlayout.h" #include "spinlock.h" #include "riscv.h" #include "defs.h" struct run { struct run *next; }; extern struct { struct spinlock lock; struct run *freelist; } kmem; uint64 sys_freeram(void) { struct run *r; uint64 free_pages = 0; acquire(&kmem.lock); // loop over free pages' list r = kmem.freelist; while (r != 0) { free_pages++; r = r->next; } release(&kmem.lock); return free_pages * PGSIZE; }