Page MenuHomeFreeBSD

D42788.id130649.diff
No OneTemporary

D42788.id130649.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
@@ -49,6 +49,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
@@ -156,6 +156,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_alloc_aligned(kernel_arena, size, align, M_BESTFIT | M_NOWAIT,
+ &addr))
+ return (0);
+ TSEXIT();
+
+ return (addr);
+}
+
/*
* kva_free:
*

File Metadata

Mime Type
text/plain
Expires
Tue, Apr 28, 5:04 AM (11 h, 4 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
32252042
Default Alt Text
D42788.id130649.diff (928 B)

Event Timeline