From 05dfa34e6906881cbbf4be0b4ebe2bac299a5be5 Mon Sep 17 00:00:00 2001 From: jeffs Date: Mon, 24 Jul 2000 20:10:51 +0000 Subject: [PATCH] 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. --- sys/uvm/uvm_extern.h | 4 +++- sys/uvm/uvm_km.c | 17 +++++++++++++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/sys/uvm/uvm_extern.h b/sys/uvm/uvm_extern.h index 686cc8083300..a55209c57d70 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 d23359bb099f..12b75e0e6ed4 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))