Changeset View
Changeset View
Standalone View
Standalone View
head/sys/vm/uma_core.c
Show First 20 Lines • Show All 4,332 Lines • ▼ Show 20 Lines | if (cache->uc_freebucket.ucb_bucket != NULL) { | ||||
bucket_free(zone, bucket, udata); | bucket_free(zone, bucket, udata); | ||||
critical_enter(); | critical_enter(); | ||||
} else | } else | ||||
cache_bucket_load_free(cache, bucket); | cache_bucket_load_free(cache, bucket); | ||||
return (true); | return (true); | ||||
} | } | ||||
void | |||||
uma_zfree_domain(uma_zone_t zone, void *item, void *udata) | |||||
{ | |||||
/* Enable entropy collection for RANDOM_ENABLE_UMA kernel option */ | |||||
random_harvest_fast_uma(&zone, sizeof(zone), RANDOM_UMA); | |||||
CTR2(KTR_UMA, "uma_zfree_domain zone %s(%p)", zone->uz_name, zone); | |||||
KASSERT(curthread->td_critnest == 0 || SCHEDULER_STOPPED(), | |||||
("uma_zfree_domain: called with spinlock or critical section held")); | |||||
/* uma_zfree(..., NULL) does nothing, to match free(9). */ | |||||
if (item == NULL) | |||||
return; | |||||
zone_free_item(zone, item, udata, SKIP_NONE); | |||||
} | |||||
static void | static void | ||||
slab_free_item(uma_zone_t zone, uma_slab_t slab, void *item) | slab_free_item(uma_zone_t zone, uma_slab_t slab, void *item) | ||||
{ | { | ||||
uma_keg_t keg; | uma_keg_t keg; | ||||
uma_domain_t dom; | uma_domain_t dom; | ||||
int freei; | int freei; | ||||
keg = zone->uz_keg; | keg = zone->uz_keg; | ||||
▲ Show 20 Lines • Show All 1,100 Lines • Show Last 20 Lines |