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