53 memset(retval,0,
sizeof(*retval));
55 retval->
name = strdup(name);
75 if (region->
name && strcmp(name,region->
name) == 0)
93 if (region->
space != space) {
98 t1 = g_list_find(space->
regions,region);
118 if (region->
type == rtype && strcmp(name,region->
name) == 0)
153 *range_saveptr = range;
250 memset(retval,0,
sizeof(*retval));
253 retval->
name = strdup(name);
256 retval->
debugfiles = g_hash_table_new(g_str_hash,g_str_equal);
297 if (range->
region != region) {
302 t1 = g_list_find(region->
ranges,range);
320 if (range->
start == start)
387 *range_saveptr = range;
414 *range_saveptr = range;
429 fprintf(ud->
stream,
"%sregion(%s:%s)",
458 verror(
"cannot free (%d refs) memregion(%s:0x%"PRIxADDR":%s:%s)\n",
464 vwarn(
"forced free (%d refs) memregion(%s:0x%"PRIxADDR":%s:%s)\n",
486 verror(
"cannot free (%d wrefs) memregion(%s:0x%"PRIxADDR":%s:%s)\n",
492 vwarn(
"forced free (%d wrefs) memregion(%s:0x%"PRIxADDR":%s:%s)\n",
511 g_hash_table_iter_init(&iter,region->
debugfiles);
512 while (g_hash_table_iter_next(&iter,
513 (gpointer)&key,(gpointer)&debugfile)) {
514 RPUT(debugfile,debugfile,region,trefcnt);
526 region->
space = NULL;
547 memset(retval,0,
sizeof(*retval));
554 if (start < region->base_load_addr)
584 return (range->
start <= real_addr && real_addr < range->end ? 1 : 0);
#define RPUTW(x, objtype, hx, rc)
int addrspace_detach_region(struct addrspace *space, struct memregion *region)
int memregion_contains_real(struct memregion *region, ADDR addr)
REFCNT memrange_free(struct memrange *range, int force)
int addrspace_attach_region(struct addrspace *space, struct memregion *region)
ADDR memregion_unrelocate(struct memregion *region, ADDR real_addr, struct memrange **range_saveptr)
void memrange_dump(struct memrange *range, struct dump_info *ud)
void addrspace_obj_flags_propagate(struct addrspace *space, obj_flags_t orf, obj_flags_t nandf)
int addrspace_find_range_real(struct addrspace *space, ADDR addr, struct memregion **region_saveptr, struct memrange **range_saveptr)
int memregion_attach_range(struct memregion *region, struct memrange *range)
int memregion_detach_range(struct memregion *region, struct memrange *range)
#define v_g_list_foreach_remove(glhead, glcur, glnext)
#define v_g_list_foreach(glhead, glcur, elm)
int memrange_contains_obj(struct memrange *range, ADDR obj_addr)
#define verror(format,...)
int target_attach_space(struct target *target, struct addrspace *space)
struct memrange * memregion_find_range_obj(struct memregion *region, ADDR obj_addr)
struct memregion * memregion_create(struct addrspace *space, region_type_t type, char *name)
#define vwarn(format,...)
struct memregion * memrange_region(struct memrange *range)
struct memrange * memrange_create(struct memregion *region, ADDR start, ADDR end, OFFSET offset, unsigned int prot_flags)
REFCNT memregion_free(struct memregion *region, int force)
void memregion_dump(struct memregion *region, struct dump_info *ud)
struct memregion * addrspace_match_region_start(struct addrspace *space, region_type_t rtype, ADDR start)
struct memrange * memregion_find_range_real(struct memregion *region, ADDR real_addr)
struct memregion * addrspace_match_region_name(struct addrspace *space, region_type_t rtype, char *name)
void memregion_obj_flags_propagate(struct memregion *region, obj_flags_t orf, obj_flags_t nandf)
struct memrange * memregion_match_range(struct memregion *region, ADDR start)
struct target * memrange_target(struct memrange *range)
#define v_g_list_foreach_safe(glhead, glcur, glnext, elm)
#define vdebug(devel, areas, flags, format,...)
ADDR memrange_unrelocate(struct memrange *range, ADDR real)
struct memregion * region
void * calloc(size_t nmemb, size_t size)
int memrange_contains_real(struct memrange *range, ADDR real_addr)
struct addrspace * memrange_space(struct memrange *range)
ADDR memregion_relocate(struct memregion *region, ADDR obj_addr, struct memrange **range_saveptr)
ADDR memrange_relocate(struct memrange *range, ADDR obj)
#define RPUT(x, objtype, hx, rc)
void * malloc(size_t size)
void memrange_obj_flags_propagate(struct memrange *range, obj_flags_t orf, obj_flags_t nandf)
struct memregion * addrspace_find_region(struct addrspace *space, char *name)
REFCNT addrspace_free(struct addrspace *space, int force)
struct addrspace * addrspace_create(struct target *target, char *name, ADDR tag)