From ded813a44263103a28e1788489ec0fef7e8d1c7e Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Fri, 1 May 2020 02:25:37 +0200 Subject: Add kmem_valloc Functions like vremap need to allocate some virtual addressing space before making their own mapping. kmem_alloc_wired can be used for that but that wastes memory. * vm/vm_kern.c (kmem_valloc): New function. * vm/vm_kern.h (kmem_valloc): New prototype. * linux/dev/glue/kmem.c (vremap): Call kmem_valloc instead of kmem_alloc_wired. Also check that `offset' is aligned on a page. --- linux/dev/glue/kmem.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'linux/dev') diff --git a/linux/dev/glue/kmem.c b/linux/dev/glue/kmem.c index 8e0b5425..509229d1 100644 --- a/linux/dev/glue/kmem.c +++ b/linux/dev/glue/kmem.c @@ -574,8 +574,10 @@ vremap (unsigned long offset, unsigned long size) { vm_offset_t addr; kern_return_t ret; + + assert(page_aligned(offset)); - ret = kmem_alloc_wired (kernel_map, &addr, round_page (size)); + ret = kmem_valloc (kernel_map, &addr, round_page (size)); if (ret != KERN_SUCCESS) return NULL; -- cgit v1.2.3