Page MenuHomeFreeBSD

D42788.id130846.diff
No OneTemporary

D42788.id130846.diff

diff --git a/sys/vm/vm_extern.h b/sys/vm/vm_extern.h
--- a/sys/vm/vm_extern.h
+++ b/sys/vm/vm_extern.h
@@ -47,6 +47,7 @@
/* These operate on kernel virtual addresses only. */
vm_offset_t kva_alloc(vm_size_t);
+vm_offset_t kva_alloc_aligned(vm_size_t, vm_size_t);
void kva_free(vm_offset_t, vm_size_t);
/* These operate on pageable virtual addresses. */
diff --git a/sys/vm/vm_kern.c b/sys/vm/vm_kern.c
--- a/sys/vm/vm_kern.c
+++ b/sys/vm/vm_kern.c
@@ -155,6 +155,27 @@
return (addr);
}
+/*
+ * kva_alloc_aligned:
+ *
+ * Allocate a virtual address range as in kva_alloc where the base
+ * address is aligned to align.
+ */
+vm_offset_t
+kva_alloc_aligned(vm_size_t size, vm_size_t align)
+{
+ vm_offset_t addr;
+
+ TSENTER();
+ size = round_page(size);
+ if (vmem_xalloc(kernel_arena, size, align, 0, 0, VMEM_ADDR_MIN,
+ VMEM_ADDR_MAX, M_BESTFIT | M_NOWAIT, &addr))
+ return (0);
+ TSEXIT();
+
+ return (addr);
+}
+
/*
* kva_free:
*

File Metadata

Mime Type
text/plain
Expires
Wed, Jan 21, 9:15 AM (12 h, 5 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27798743
Default Alt Text
D42788.id130846.diff (957 B)

Event Timeline