// vim:fileencoding=utf-8:foldmethod=marker #include "../../../common/aliases/aliases.h" #include "../../../common/platform/platform.h" #ifdef WAPP_PLATFORM_POSIX #include "mem_os_posix.h" #include "../mem_os_ops.h" #include wapp_intern const i32 access_types[] = { [WAPP_MEM_ACCESS_NONE] = PROT_NONE, [WAPP_MEM_ACCESS_READ_ONLY] = PROT_READ, [WAPP_MEM_ACCESS_EXEC_ONLY] = PROT_EXEC, [WAPP_MEM_ACCESS_READ_WRITE] = PROT_READ | PROT_WRITE, [WAPP_MEM_ACCESS_READ_EXEC] = PROT_READ | PROT_EXEC, [WAPP_MEM_ACCESS_READ_WRITE_EXEC] = PROT_READ | PROT_WRITE | PROT_EXEC, }; void *os_mem_allocate(void *addr, u64 size, MemAccess access, MemAllocFlags flags, MemInitType type) { (void)type; i32 alloc_flags = flags | MAP_ANON | MAP_PRIVATE; #if defined(WAPP_PLATFORM_LINUX) || defined(WAPP_PLATFORM_GNU) || defined(WAPP_PLATFORM_NET_BSD) alloc_flags |= MAP_NORESERVE; #endif return mmap(addr, size, access_types[access], alloc_flags, -1, 0); } void os_mem_free(void *ptr, u64 size) { munmap(ptr, size); } #endif // !WAPP_PLATFORM_POSIX