diff options
author | alc <alc@FreeBSD.org> | 2008-01-03 07:34:34 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2008-01-03 07:34:34 +0000 |
commit | 545d26e30bb60df264b73543bf214c7e006f18fb (patch) | |
tree | 46a2b299e20f99257e0a9e31f02276471aed28a1 /sys/vm | |
parent | 9699ca07d2cae2224f351d0a332b8265c829f9a8 (diff) | |
download | FreeBSD-src-545d26e30bb60df264b73543bf214c7e006f18fb.zip FreeBSD-src-545d26e30bb60df264b73543bf214c7e006f18fb.tar.gz |
Add an access type parameter to pmap_enter(). It will be used to implement
superpage promotion.
Correct a style error in kmem_malloc(): pmap_enter()'s last parameter is
a Boolean.
Diffstat (limited to 'sys/vm')
-rw-r--r-- | sys/vm/pmap.h | 4 | ||||
-rw-r--r-- | sys/vm/vm_fault.c | 7 | ||||
-rw-r--r-- | sys/vm/vm_kern.c | 3 |
3 files changed, 8 insertions, 6 deletions
diff --git a/sys/vm/pmap.h b/sys/vm/pmap.h index d45c0f9..0438d11 100644 --- a/sys/vm/pmap.h +++ b/sys/vm/pmap.h @@ -95,8 +95,8 @@ void pmap_clear_modify(vm_page_t m); void pmap_clear_reference(vm_page_t m); void pmap_copy(pmap_t, pmap_t, vm_offset_t, vm_size_t, vm_offset_t); void pmap_copy_page(vm_page_t, vm_page_t); -void pmap_enter(pmap_t, vm_offset_t, vm_page_t, vm_prot_t, - boolean_t); +void pmap_enter(pmap_t, vm_offset_t, vm_prot_t, vm_page_t, + vm_prot_t, boolean_t); void pmap_enter_quick(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot); void pmap_enter_object(pmap_t pmap, vm_offset_t start, diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c index d2a8220..faa28da 100644 --- a/sys/vm/vm_fault.c +++ b/sys/vm/vm_fault.c @@ -888,7 +888,7 @@ readrest: * back on the active queue until later so that the pageout daemon * won't find it (yet). */ - pmap_enter(fs.map->pmap, vaddr, fs.m, prot, wired); + pmap_enter(fs.map->pmap, vaddr, fault_type, fs.m, prot, wired); if (((fault_flags & VM_FAULT_WIRE_MASK) == 0) && (wired == 0)) { vm_fault_prefault(fs.map->pmap, vaddr, fs.entry); } @@ -1177,9 +1177,10 @@ vm_fault_copy_entry(dst_map, src_map, dst_entry, src_entry) VM_OBJECT_UNLOCK(dst_object); /* - * Enter it in the pmap... + * Enter it in the pmap as a read and/or execute access. */ - pmap_enter(dst_map->pmap, vaddr, dst_m, prot, FALSE); + pmap_enter(dst_map->pmap, vaddr, prot & ~VM_PROT_WRITE, dst_m, + prot, FALSE); /* * Mark it no longer busy, and put it on the active list. diff --git a/sys/vm/vm_kern.c b/sys/vm/vm_kern.c index 3b6de83..44694f5 100644 --- a/sys/vm/vm_kern.c +++ b/sys/vm/vm_kern.c @@ -406,7 +406,8 @@ retry: /* * Because this is kernel_pmap, this call will not block. */ - pmap_enter(kernel_pmap, addr + i, m, VM_PROT_ALL, 1); + pmap_enter(kernel_pmap, addr + i, VM_PROT_ALL, m, VM_PROT_ALL, + TRUE); vm_page_wakeup(m); } VM_OBJECT_UNLOCK(kmem_object); |