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

36 lines
715 B
C

#include "kernel/types.h"
#include "kernel/stat.h"
#include "kernel/riscv.h" // to get PGSIZE
#include "user/user.h"
#define KIBIBYTES 1024
#define MEBIBYTES (1024 * 1024)
void
display_memory(void)
{
uint64 free_ram, npages, nm, nk;
free_ram = freeram();
npages = free_ram / PGSIZE;
nm = free_ram / MEBIBYTES;
nk = free_ram / KIBIBYTES;
printf("%ld bytes (%ld MiB or %ld KiB), %ld pages ", free_ram, nm, nk, npages);
}
int
main(int argc, char *argv[])
{
void *mem;
display_memory();
printf("free memory at the start\n");
mem = malloc(PGSIZE * 1000);
display_memory();
printf("after 1000*PGSIZE mem alloc\n");
free(mem);
display_memory();
printf("after dealloc\n");
exit(0);
}