On 10/30/2012 09:06 AM, liu ping fan wrote: >>> while (len > 0) { >>> page = addr & TARGET_PAGE_MASK; >>> l = (page + TARGET_PAGE_SIZE) - addr; >>> if (l > len) >>> l = len; >>> - section = phys_page_find(d, page >> TARGET_PAGE_BITS); >>> + >>> + if (as->lock) { >>> + qemu_mutex_lock(as->lock); >>> + safe_ref = memory_region_section_lookup_ref(d, page, &obj_mrs); >>> + qemu_mutex_unlock(as->lock); >>> + if (!safe_ref) { >>> + qemu_mutex_lock_iothread(); >>> + qemu_mutex_lock(as->lock); >>> + /* when 2nd try, mem map can change, need to judge it >>> again */ >>> + safe_ref = memory_region_section_lookup_ref(d, page, >>> &obj_mrs); >>> + qemu_mutex_unlock(as->lock); >>> + if (safe_ref) { >>> + qemu_mutex_unlock_iothread(); >>> + } >>> + } >>> + } else { >>> + /* Caller hold the big lock */ >>> + memory_region_section_lookup_ref(d, page, &obj_mrs); >> >> It's not a property of the address space, it's a property of the caller. >> > Sorry, what is your meaning?
Whether the caller holds the big lock or not is not known by the address space. It is only known by the caller itself. -- error compiling committee.c: too many arguments to function