mem_posix_memalign.c 598 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #include <errno.h>
  2. #include "runtime.h"
  3. #include "arch.h"
  4. #include "malloc.h"
  5. void*
  6. runtime_SysAlloc(uintptr n)
  7. {
  8. void *p;
  9. mstats.sys += n;
  10. errno = posix_memalign(&p, PageSize, n);
  11. if (errno > 0) {
  12. perror("posix_memalign");
  13. exit(2);
  14. }
  15. return p;
  16. }
  17. void
  18. runtime_SysUnused(void *v, uintptr n)
  19. {
  20. USED(v);
  21. USED(n);
  22. // TODO(rsc): call madvise MADV_DONTNEED
  23. }
  24. void
  25. runtime_SysFree(void *v, uintptr n)
  26. {
  27. mstats.sys -= n;
  28. free(v);
  29. }
  30. void*
  31. runtime_SysReserve(void *v, uintptr n)
  32. {
  33. USED(v);
  34. return runtime_SysAlloc(n);
  35. }
  36. void
  37. runtime_SysMap(void *v, uintptr n)
  38. {
  39. USED(v);
  40. USED(n);
  41. }