| 40 | #include <vm/uma_int.h> |
| 41 | |
| 42 | void * |
| 43 | uma_small_alloc(uma_zone_t zone, vm_size_t bytes, int domain, u_int8_t *flags, |
| 44 | int wait) |
| 45 | { |
| 46 | vm_paddr_t pa; |
| 47 | vm_page_t m; |
| 48 | int pflags; |
| 49 | void *va; |
| 50 | |
| 51 | *flags = UMA_SLAB_PRIV; |
| 52 | pflags = malloc2vm_flags(wait) | VM_ALLOC_WIRED; |
| 53 | #ifndef __mips_n64 |
| 54 | pflags &= ~(VM_ALLOC_WAITOK | VM_ALLOC_WAITFAIL); |
| 55 | pflags |= VM_ALLOC_NOWAIT; |
| 56 | #endif |
| 57 | |
| 58 | for (;;) { |
| 59 | m = vm_page_alloc_freelist_domain(domain, VM_FREELIST_DIRECT, |
| 60 | pflags); |
| 61 | #ifndef __mips_n64 |
| 62 | if (m == NULL && vm_page_reclaim_contig(pflags, 1, |
| 63 | 0, MIPS_KSEG0_LARGEST_PHYS, PAGE_SIZE, 0)) |
| 64 | continue; |
| 65 | #endif |
| 66 | if (m != NULL) |
| 67 | break; |
| 68 | if ((wait & M_NOWAIT) != 0) |
| 69 | return (NULL); |
| 70 | vm_wait(NULL); |
| 71 | } |
| 72 | |
| 73 | pa = VM_PAGE_TO_PHYS(m); |
| 74 | if ((wait & M_NODUMP) == 0) |
| 75 | dump_add_page(pa); |
| 76 | va = (void *)MIPS_PHYS_TO_DIRECT(pa); |
| 77 | if ((wait & M_ZERO) && (m->flags & PG_ZERO) == 0) |
| 78 | bzero(va, PAGE_SIZE); |
| 79 | return (va); |
| 80 | } |
| 81 | |
| 82 | void |
| 83 | uma_small_free(void *mem, vm_size_t size, u_int8_t flags) |
nothing calls this directly
no test coverage detected