Changeset View
Changeset View
Standalone View
Standalone View
sys/mips/mips/uma_machdep.c
Show First 20 Lines • Show All 46 Lines • ▼ Show 20 Lines | uma_small_alloc(uma_zone_t zone, vm_size_t bytes, u_int8_t *flags, int wait) | ||||
vm_page_t m; | vm_page_t m; | ||||
int pflags; | int pflags; | ||||
void *va; | void *va; | ||||
*flags = UMA_SLAB_PRIV; | *flags = UMA_SLAB_PRIV; | ||||
pflags = malloc2vm_flags(wait) | VM_ALLOC_WIRED; | pflags = malloc2vm_flags(wait) | VM_ALLOC_WIRED; | ||||
for (;;) { | for (;;) { | ||||
#ifdef MIPS64_NEW_PMAP | |||||
m = vm_page_alloc(NULL, 0, pflags | VM_ALLOC_NOOBJ); | |||||
#else /* ! MIPS64_NEW_PMAP */ | |||||
m = vm_page_alloc_freelist(VM_FREELIST_DIRECT, pflags); | m = vm_page_alloc_freelist(VM_FREELIST_DIRECT, pflags); | ||||
#endif /* ! MIPS64_NEW_PMAP */ | |||||
#ifndef __mips_n64 | #ifndef __mips_n64 | ||||
if (m == NULL && vm_page_reclaim_contig(pflags, 1, | if (m == NULL && vm_page_reclaim_contig(pflags, 1, | ||||
0, MIPS_KSEG0_LARGEST_PHYS, PAGE_SIZE, 0)) | 0, MIPS_KSEG0_LARGEST_PHYS, PAGE_SIZE, 0)) | ||||
continue; | continue; | ||||
#endif | #endif | ||||
if (m == NULL) { | if (m == NULL) { | ||||
if (wait & M_NOWAIT) | if (wait & M_NOWAIT) | ||||
return (NULL); | return (NULL); | ||||
else | else | ||||
VM_WAIT; | VM_WAIT; | ||||
} else | } else | ||||
break; | break; | ||||
} | } | ||||
pa = VM_PAGE_TO_PHYS(m); | pa = VM_PAGE_TO_PHYS(m); | ||||
if ((wait & M_NODUMP) == 0) | |||||
dump_add_page(pa); | |||||
va = (void *)MIPS_PHYS_TO_DIRECT(pa); | va = (void *)MIPS_PHYS_TO_DIRECT(pa); | ||||
if ((wait & M_ZERO) && (m->flags & PG_ZERO) == 0) | if ((wait & M_ZERO) && (m->flags & PG_ZERO) == 0) | ||||
bzero(va, PAGE_SIZE); | bzero(va, PAGE_SIZE); | ||||
return (va); | return (va); | ||||
} | } | ||||
void | void | ||||
uma_small_free(void *mem, vm_size_t size, u_int8_t flags) | uma_small_free(void *mem, vm_size_t size, u_int8_t flags) | ||||
Show All 10 Lines |