* kmem_subinit: * * Initializes a map to manage a subrange * of the kernel virtual address space. * * Arguments are as follows: * * parent Map to take range from * min, max Returned endpoints of map * size Size of range to find * superpage_align Request that min is superpage aligned */
| 373 | * superpage_align Request that min is superpage aligned |
| 374 | */ |
| 375 | void |
| 376 | kmem_subinit(vm_map_t map, vm_map_t parent, vm_offset_t *min, vm_offset_t *max, |
| 377 | vm_size_t size, bool superpage_align) |
| 378 | { |
| 379 | int ret; |
| 380 | |
| 381 | size = round_page(size); |
| 382 | |
| 383 | *min = vm_map_min(parent); |
| 384 | ret = vm_map_find(parent, NULL, 0, min, size, 0, superpage_align ? |
| 385 | VMFS_SUPER_SPACE : VMFS_ANY_SPACE, VM_PROT_ALL, VM_PROT_ALL, |
| 386 | MAP_ACC_NO_CHARGE); |
| 387 | if (ret != KERN_SUCCESS) |
| 388 | panic("kmem_subinit: bad status return of %d", ret); |
| 389 | *max = *min + size; |
| 390 | vm_map_init(map, vm_map_pmap(parent), *min, *max); |
| 391 | if (vm_map_submap(parent, *min, *max, map) != KERN_SUCCESS) |
| 392 | panic("kmem_subinit: unable to change range to submap"); |
| 393 | } |
| 394 | |
| 395 | /* |
| 396 | * kmem_malloc_domain: |
no test coverage detected