xv6-riscv/kernel/freeram.c
2025-02-10 06:01:08 +01:00

34 lines
496 B
C

#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;
}