Files
hiload/src/memory.h
2025-03-21 21:24:46 +02:00

39 lines
925 B
C

#ifndef MEMORY_H_
#define MEMORY_H_
#include "array.h"
#include "str.h"
#include "types.h"
#include <assert.h>
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_