mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-15 12:54:27 +00:00
vm: Add kva_alloc_aligned
Add a function like kva_alloc that allows us to specify the alignment of the virtual address space returned. Reviewed by: alc, kib, markj Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D42788
This commit is contained in:
parent
8daee410d2
commit
839999e7ef
|
@ -47,6 +47,7 @@ struct domainset;
|
|||
|
||||
/* 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. */
|
||||
|
|
|
@ -155,6 +155,27 @@ kva_alloc(vm_size_t size)
|
|||
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:
|
||||
*
|
||||
|
|
Loading…
Reference in a new issue