MCPcopy Create free account
hub / github.com/F-Stack/f-stack / bucket_drain

Function bucket_drain

freebsd/vm/uma_core.c:1144–1170  ·  view source on GitHub ↗

* Frees all outstanding items in a bucket * * Arguments: * zone The zone to free to, must be unlocked. * bucket The free/alloc bucket with items. * * Returns: * Nothing */

Source from the content-addressed store, hash-verified

1142 * Nothing
1143 */
1144static void
1145bucket_drain(uma_zone_t zone, uma_bucket_t bucket)
1146{
1147 int i;
1148
1149 if (bucket->ub_cnt == 0)
1150 return;
1151
1152 if ((zone->uz_flags & UMA_ZONE_SMR) != 0 &&
1153 bucket->ub_seq != SMR_SEQ_INVALID) {
1154 smr_wait(zone->uz_smr, bucket->ub_seq);
1155 bucket->ub_seq = SMR_SEQ_INVALID;
1156 for (i = 0; i < bucket->ub_cnt; i++)
1157 item_dtor(zone, bucket->ub_bucket[i],
1158 zone->uz_size, NULL, SKIP_NONE);
1159 }
1160 if (zone->uz_fini)
1161 for (i = 0; i < bucket->ub_cnt; i++)
1162 zone->uz_fini(bucket->ub_bucket[i], zone->uz_size);
1163 zone->uz_release(zone->uz_arg, bucket->ub_bucket, bucket->ub_cnt);
1164 if (zone->uz_max_items > 0)
1165 zone_free_limit(zone, bucket->ub_cnt);
1166#ifdef INVARIANTS
1167 bzero(bucket->ub_bucket, sizeof(void *) * bucket->ub_cnt);
1168#endif
1169 bucket->ub_cnt = 0;
1170}
1171
1172/*
1173 * Drains the per cpu caches for a zone.

Callers 2

bucket_freeFunction · 0.85
cache_freeFunction · 0.85

Calls 4

smr_waitFunction · 0.85
item_dtorFunction · 0.85
zone_free_limitFunction · 0.85
bzeroFunction · 0.85

Tested by

no test coverage detected