| 874 | } |
| 875 | |
| 876 | static void |
| 877 | vmem_destroy1(vmem_t *vm) |
| 878 | { |
| 879 | bt_t *bt; |
| 880 | |
| 881 | /* |
| 882 | * Drain per-cpu quantum caches. |
| 883 | */ |
| 884 | qc_destroy(vm); |
| 885 | |
| 886 | /* |
| 887 | * The vmem should now only contain empty segments. |
| 888 | */ |
| 889 | VMEM_LOCK(vm); |
| 890 | MPASS(vm->vm_nbusytag == 0); |
| 891 | |
| 892 | TAILQ_REMOVE(&vm->vm_seglist, &vm->vm_cursor, bt_seglist); |
| 893 | while ((bt = TAILQ_FIRST(&vm->vm_seglist)) != NULL) |
| 894 | bt_remseg(vm, bt); |
| 895 | |
| 896 | if (vm->vm_hashlist != NULL && vm->vm_hashlist != vm->vm_hash0) |
| 897 | free(vm->vm_hashlist, M_VMEM); |
| 898 | |
| 899 | bt_freetrim(vm, 0); |
| 900 | |
| 901 | VMEM_CONDVAR_DESTROY(vm); |
| 902 | VMEM_LOCK_DESTROY(vm); |
| 903 | uma_zfree(vmem_zone, vm); |
| 904 | } |
| 905 | |
| 906 | static int |
| 907 | vmem_import(vmem_t *vm, vmem_size_t size, vmem_size_t align, int flags) |
no test coverage detected