#include #include #include #include #include #include #include b32 os_memory_allocate(OSMemory *memory, size_t size) { // @Performance: Keep the fd of /dev/zero open for the whole runtime? int fd = open("/dev/zero", O_RDWR); if (fd == -1) { printf("open() failed: %s\n", strerror(errno)); return false; } void *address = mmap(0, size, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0); if (address == MAP_FAILED) { printf("mmap failed\n"); return false; } close(fd); memory->size = size; memory->p = address; return true; } void os_memory_free(OSMemory *memory) { munmap(memory->p, memory->size); }