First cut at cleaning up uc_mem_map, eliminate map_begin and map_end, move tracking inside uc struct

This commit is contained in:
Chris Eagle
2015-08-25 21:52:18 -07:00
parent c1514609b1
commit 03e8b28d71
4 changed files with 34 additions and 17 deletions

10
include/uc_priv.h Normal file → Executable file
View File

@@ -15,6 +15,12 @@
QTAILQ_HEAD(CPUTailQ, CPUState);
typedef struct MemoryBlock {
uint64_t begin;
size_t size;
uint32_t perms;
} MemoryBlock;
typedef struct ModuleEntry {
void (*init)(void);
QTAILQ_ENTRY(ModuleEntry) node;
@@ -165,11 +171,13 @@ struct uc_struct {
int thumb; // thumb mode for ARM
// full TCG cache leads to middle-block break in the last translation?
bool block_full;
MemoryBlock *mapped_blocks;
uint32_t mapped_block_count;
};
#include "qemu_macro.h"
// check if this address is mapped in (via uc_mem_map())
bool memory_mapping(uint64_t address);
bool memory_mapping(struct uc_struct* uc, uint64_t address);
#endif

6
include/unicorn/unicorn.h Normal file → Executable file
View File

@@ -384,6 +384,12 @@ uc_err uc_hook_add(uch handle, uch *h2, uc_hook_t type, void *callback, void *us
UNICORN_EXPORT
uc_err uc_hook_del(uch handle, uch *h2);
typedef enum uc_prot {
UC_PROT_READ = 1,
UC_PROT_WRITE = 2,
UC_PROT_EXEC = 4
} uc_prot;
/*
Map memory in for emulation.
This API adds a memory region that can be used by emulation.