summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorjeffs <jeffs@NetBSD.org>2000-07-24 20:10:51 +0000
committerjeffs <jeffs@NetBSD.org>2000-07-24 20:10:51 +0000
commit05dfa34e6906881cbbf4be0b4ebe2bac299a5be5 (patch)
tree6dca99489c3502df53f496e8a245ef0125f40239 /sys
parent43301f1feec2a9a5e98cac5cca1644d0c9be12eb (diff)
Add uvm_km_valloc_prefer_wait(). Used to valloc with the passed in
voff_t being passed to PMAP_PREFER(), which results in the propper virtual alignment of the allocated space.
Diffstat (limited to 'sys')
-rw-r--r--sys/uvm/uvm_extern.h4
-rw-r--r--sys/uvm/uvm_km.c17
2 files changed, 16 insertions, 5 deletions
diff --git a/sys/uvm/uvm_extern.h b/sys/uvm/uvm_extern.h
index 686cc808330..a55209c57d7 100644
--- a/sys/uvm/uvm_extern.h
+++ b/sys/uvm/uvm_extern.h
@@ -1,4 +1,4 @@
-/* $NetBSD: uvm_extern.h,v 1.45 2000/06/27 16:16:43 mrg Exp $ */
+/* $NetBSD: uvm_extern.h,v 1.46 2000/07/24 20:10:51 jeffs Exp $ */
/*
*
@@ -453,6 +453,8 @@ struct vm_map *uvm_km_suballoc __P((vm_map_t, vaddr_t *,
boolean_t, vm_map_t));
vaddr_t uvm_km_valloc __P((vm_map_t, vsize_t));
vaddr_t uvm_km_valloc_wait __P((vm_map_t, vsize_t));
+vaddr_t uvm_km_valloc_prefer_wait __P((vm_map_t, vsize_t,
+ voff_t));
vaddr_t uvm_km_alloc_poolpage1 __P((vm_map_t,
struct uvm_object *, boolean_t));
void uvm_km_free_poolpage1 __P((vm_map_t, vaddr_t));
diff --git a/sys/uvm/uvm_km.c b/sys/uvm/uvm_km.c
index d23359bb099..12b75e0e6ed 100644
--- a/sys/uvm/uvm_km.c
+++ b/sys/uvm/uvm_km.c
@@ -1,4 +1,4 @@
-/* $NetBSD: uvm_km.c,v 1.37 2000/06/27 17:29:24 mrg Exp $ */
+/* $NetBSD: uvm_km.c,v 1.38 2000/07/24 20:10:53 jeffs Exp $ */
/*
* Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -806,12 +806,13 @@ uvm_km_valloc(map, size)
*/
vaddr_t
-uvm_km_valloc_wait(map, size)
+uvm_km_valloc_prefer_wait(map, size, prefer)
vm_map_t map;
vsize_t size;
+ voff_t prefer;
{
vaddr_t kva;
- UVMHIST_FUNC("uvm_km_valloc_wait"); UVMHIST_CALLED(maphist);
+ UVMHIST_FUNC("uvm_km_valloc_prefer_wait"); UVMHIST_CALLED(maphist);
UVMHIST_LOG(maphist, "(map=0x%x, size=0x%x)", map, size, 0,0);
@@ -833,7 +834,7 @@ uvm_km_valloc_wait(map, size)
*/
if (__predict_true(uvm_map(map, &kva, size, uvm.kernel_object,
- UVM_UNKNOWN_OFFSET, UVM_MAPFLAG(UVM_PROT_ALL,
+ prefer, UVM_MAPFLAG(UVM_PROT_ALL,
UVM_PROT_ALL, UVM_INH_NONE, UVM_ADV_RANDOM, 0))
== KERN_SUCCESS)) {
UVMHIST_LOG(maphist,"<- done (kva=0x%x)", kva,0,0,0);
@@ -850,6 +851,14 @@ uvm_km_valloc_wait(map, size)
/*NOTREACHED*/
}
+vaddr_t
+uvm_km_valloc_wait(map, size)
+ vm_map_t map;
+ vsize_t size;
+{
+ return uvm_km_valloc_prefer_wait(map, size, UVM_UNKNOWN_OFFSET);
+}
+
/* Sanity; must specify both or none. */
#if (defined(PMAP_MAP_POOLPAGE) || defined(PMAP_UNMAP_POOLPAGE)) && \
(!defined(PMAP_MAP_POOLPAGE) || !defined(PMAP_UNMAP_POOLPAGE))