Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/kern_kcov.c
Show First 20 Lines • Show All 402 Lines • ▼ Show 20 Lines | kcov_free(struct kcov_info *info) | ||||
if (info->kvaddr != 0) { | if (info->kvaddr != 0) { | ||||
pmap_qremove(info->kvaddr, info->bufsize / PAGE_SIZE); | pmap_qremove(info->kvaddr, info->bufsize / PAGE_SIZE); | ||||
kva_free(info->kvaddr, info->bufsize); | kva_free(info->kvaddr, info->bufsize); | ||||
} | } | ||||
if (info->bufobj != NULL) { | if (info->bufobj != NULL) { | ||||
VM_OBJECT_WLOCK(info->bufobj); | VM_OBJECT_WLOCK(info->bufobj); | ||||
m = vm_page_lookup(info->bufobj, 0); | m = vm_page_lookup(info->bufobj, 0); | ||||
for (i = 0; i < info->bufsize / PAGE_SIZE; i++) { | for (i = 0; i < info->bufsize / PAGE_SIZE; i++) { | ||||
vm_page_lock(m); | |||||
vm_page_unwire_noq(m); | vm_page_unwire_noq(m); | ||||
vm_page_unlock(m); | |||||
m = vm_page_next(m); | m = vm_page_next(m); | ||||
} | } | ||||
VM_OBJECT_WUNLOCK(info->bufobj); | VM_OBJECT_WUNLOCK(info->bufobj); | ||||
vm_object_deallocate(info->bufobj); | vm_object_deallocate(info->bufobj); | ||||
} | } | ||||
free(info, M_KCOV_INFO); | free(info, M_KCOV_INFO); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 159 Lines • Show Last 20 Lines |