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

Function slab_free_item

freebsd/vm/uma_core.c:4497–4525  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4495}
4496
4497static void
4498slab_free_item(uma_zone_t zone, uma_slab_t slab, void *item)
4499{
4500 uma_keg_t keg;
4501 uma_domain_t dom;
4502 int freei;
4503
4504 keg = zone->uz_keg;
4505 KEG_LOCK_ASSERT(keg, slab->us_domain);
4506
4507 /* Do we need to remove from any lists? */
4508 dom = &keg->uk_domain[slab->us_domain];
4509 if (slab->us_freecount + 1 == keg->uk_ipers) {
4510 LIST_REMOVE(slab, us_link);
4511 LIST_INSERT_HEAD(&dom->ud_free_slab, slab, us_link);
4512 dom->ud_free_slabs++;
4513 } else if (slab->us_freecount == 0) {
4514 LIST_REMOVE(slab, us_link);
4515 LIST_INSERT_HEAD(&dom->ud_part_slab, slab, us_link);
4516 }
4517
4518 /* Slab management. */
4519 freei = slab_item_index(slab, keg, item);
4520 BIT_SET(keg->uk_ipers, freei, &slab->us_free);
4521 slab->us_freecount++;
4522
4523 /* Keg statistics. */
4524 dom->ud_free_items++;
4525}
4526
4527static void
4528zone_release(void *arg, void **bucket, int cnt)

Callers 1

zone_releaseFunction · 0.85

Calls 1

slab_item_indexFunction · 0.70

Tested by

no test coverage detected