| 310 | } |
| 311 | |
| 312 | static void |
| 313 | inm_release_task(void *arg __unused, int pending __unused) |
| 314 | { |
| 315 | struct in_multi_head inm_free_tmp; |
| 316 | struct in_multi *inm, *tinm; |
| 317 | |
| 318 | SLIST_INIT(&inm_free_tmp); |
| 319 | mtx_lock(&in_multi_free_mtx); |
| 320 | SLIST_CONCAT(&inm_free_tmp, &inm_free_list, in_multi, inm_nrele); |
| 321 | mtx_unlock(&in_multi_free_mtx); |
| 322 | IN_MULTI_LOCK(); |
| 323 | SLIST_FOREACH_SAFE(inm, &inm_free_tmp, inm_nrele, tinm) { |
| 324 | SLIST_REMOVE_HEAD(&inm_free_tmp, inm_nrele); |
| 325 | MPASS(inm); |
| 326 | inm_release(inm); |
| 327 | } |
| 328 | IN_MULTI_UNLOCK(); |
| 329 | } |
| 330 | |
| 331 | /* |
| 332 | * Initialize an in_mfilter structure to a known state at t0, t1 |
nothing calls this directly
no test coverage detected