#ifndef MEMORY_H_ #define MEMORY_H_ #include "array.h" #include "str.h" #include "types.h" #include typedef enum { HI_MEMORY_READ = 1 << 0, HI_MEMORY_WRITE = 1 << 1, HI_MEMORY_EXECUTE = 1 << 2, HI_MEMORY_SHARED = 1 << 3, HI_MEMORY_PRIVATE = 1 << 4 } MemoryPermissions; typedef struct { uptr region_start; uptr region_end; ptrdiff offset; u64 inode; u32 permission; // enum MemoryPermissions const char *pathname; } MemoryRegion; sc_array_def(MemoryRegion, memreg); /* A pointer that can be used to place the memory regions into. Clears regions * before use, but uses the same buffer. */ HiloadResult read_memory_maps_self(struct sc_array_memreg *regions); /* Return index the pointer is found in */ HiloadResult memory_find_pointer(uptr ptr, struct sc_array_memreg *const regions, size_t *index); #endif // MEMORY_H_