Improved debug output - you know get the exact address of a page fault, not

rounded to the page offset.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8633 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler 2004-08-24 21:47:11 +00:00
parent 4c7651ac24
commit 96a34bfa35
1 changed files with 6 additions and 5 deletions

View File

@ -2157,7 +2157,7 @@ vm_page_fault(addr_t address, addr_t fault_address, bool is_write, bool is_user,
address, fault_address);
}
} else {
dprintf("vm_page_fault: killing team 0x%lx\n", thread_get_current_thread()->team->id);
dprintf("vm_page_fault: killing team 0x%lx, ip 0x%lx\n", thread_get_current_thread()->team->id, fault_address);
kill_team(team_get_current_team_id());
}
}
@ -2167,7 +2167,7 @@ vm_page_fault(addr_t address, addr_t fault_address, bool is_write, bool is_user,
static int
vm_soft_fault(addr_t address, bool is_write, bool is_user)
vm_soft_fault(addr_t originalAddress, bool is_write, bool is_user)
{
vm_address_space *aspace;
vm_virtual_map *map;
@ -2178,13 +2178,14 @@ vm_soft_fault(addr_t address, bool is_write, bool is_user)
off_t cache_offset;
vm_page dummy_page;
vm_page *page = NULL;
addr_t address;
int change_count;
int err;
// dprintf("vm_soft_fault: thid 0x%x address 0x%x, is_write %d, is_user %d\n",
// thread_get_current_thread_id(), address, is_write, is_user);
address = ROUNDOWN(address, PAGE_SIZE);
address = ROUNDOWN(originalAddress, PAGE_SIZE);
if (IS_KERNEL_ADDRESS(address)) {
aspace = vm_get_kernel_aspace();
@ -2212,7 +2213,7 @@ vm_soft_fault(addr_t address, bool is_write, bool is_user)
if (region == NULL) {
release_sem_etc(map->sem, READ_COUNT, 0);
vm_put_aspace(aspace);
dprintf("vm_soft_fault: va 0x%lx not covered by region in address space\n", address);
dprintf("vm_soft_fault: va 0x%lx not covered by region in address space\n", originalAddress);
return ERR_VM_PF_BAD_ADDRESS; // BAD_ADDRESS
}
@ -2226,7 +2227,7 @@ vm_soft_fault(addr_t address, bool is_write, bool is_user)
if (is_write && (region->lock & (B_WRITE_AREA | (is_user ? 0 : B_KERNEL_WRITE_AREA))) == 0) {
release_sem_etc(map->sem, READ_COUNT, 0);
vm_put_aspace(aspace);
dprintf("write access attempted on read-only region 0x%lx at %p\n", region->id, (void *)address);
dprintf("write access attempted on read-only region 0x%lx at %p\n", region->id, (void *)originalAddress);
return ERR_VM_PF_BAD_PERM; // BAD_PERMISSION
}