* kmem_malloc_domain: * * Allocate wired-down pages in the kernel's address space. */
| 398 | * Allocate wired-down pages in the kernel's address space. |
| 399 | */ |
| 400 | static vm_offset_t |
| 401 | kmem_malloc_domain(int domain, vm_size_t size, int flags) |
| 402 | { |
| 403 | vmem_t *arena; |
| 404 | vm_offset_t addr; |
| 405 | int rv; |
| 406 | |
| 407 | if (__predict_true((flags & M_EXEC) == 0)) |
| 408 | arena = vm_dom[domain].vmd_kernel_arena; |
| 409 | else |
| 410 | arena = vm_dom[domain].vmd_kernel_rwx_arena; |
| 411 | size = round_page(size); |
| 412 | if (vmem_alloc(arena, size, flags | M_BESTFIT, &addr)) |
| 413 | return (0); |
| 414 | |
| 415 | rv = kmem_back_domain(domain, kernel_object, addr, size, flags); |
| 416 | if (rv != KERN_SUCCESS) { |
| 417 | vmem_free(arena, addr, size); |
| 418 | return (0); |
| 419 | } |
| 420 | return (addr); |
| 421 | } |
| 422 | |
| 423 | vm_offset_t |
| 424 | kmem_malloc(vm_size_t size, int flags) |
no test coverage detected