Changeset View
Changeset View
Standalone View
Standalone View
sys/vm/uma_core.c
Show First 20 Lines • Show All 3,606 Lines • ▼ Show 20 Lines | for (;;) { | ||||
slab = keg_alloc_slab(keg, zone, domain, flags, aflags); | slab = keg_alloc_slab(keg, zone, domain, flags, aflags); | ||||
if (slab != NULL) | if (slab != NULL) | ||||
return (slab); | return (slab); | ||||
if (!rr && (flags & M_WAITOK) == 0) | if (!rr && (flags & M_WAITOK) == 0) | ||||
break; | break; | ||||
if (rr && vm_domainset_iter_policy(&di, &domain) != 0) { | if (rr && vm_domainset_iter_policy(&di, &domain) != 0) { | ||||
if ((flags & M_WAITOK) != 0) { | if ((flags & M_WAITOK) != 0) { | ||||
vm_wait_doms(&keg->uk_dr.dr_policy->ds_mask); | vm_wait_doms(&keg->uk_dr.dr_policy->ds_mask, 0); | ||||
goto restart; | goto restart; | ||||
} | } | ||||
break; | break; | ||||
} | } | ||||
} | } | ||||
/* | /* | ||||
* We might not have been able to get a slab but another cpu | * We might not have been able to get a slab but another cpu | ||||
▲ Show 20 Lines • Show All 1,127 Lines • ▼ Show 20 Lines | for (;;) { | ||||
LIST_REMOVE(slab, us_link); | LIST_REMOVE(slab, us_link); | ||||
LIST_INSERT_HEAD(&dom->ud_free_slab, slab, | LIST_INSERT_HEAD(&dom->ud_free_slab, slab, | ||||
us_link); | us_link); | ||||
dom->ud_free_slabs++; | dom->ud_free_slabs++; | ||||
KEG_UNLOCK(keg, slab->us_domain); | KEG_UNLOCK(keg, slab->us_domain); | ||||
break; | break; | ||||
} | } | ||||
if (vm_domainset_iter_policy(&di, &domain) != 0) | if (vm_domainset_iter_policy(&di, &domain) != 0) | ||||
vm_wait_doms(&keg->uk_dr.dr_policy->ds_mask); | vm_wait_doms(&keg->uk_dr.dr_policy->ds_mask, 0); | ||||
} | } | ||||
} | } | ||||
} | } | ||||
/* | /* | ||||
* Returns a snapshot of memory consumption in bytes. | * Returns a snapshot of memory consumption in bytes. | ||||
*/ | */ | ||||
size_t | size_t | ||||
▲ Show 20 Lines • Show All 678 Lines • Show Last 20 Lines |