Lines Matching defs:knl

250 	struct knlist *knl;
252 knl = kn->kn_knlist;
253 if (knl != NULL)
254 knl->kl_lock(knl->kl_lockarg);
255 return (knl);
259 kn_list_unlock(struct knlist *knl)
263 if (knl == NULL)
265 do_free = knl->kl_autodestroy && knlist_empty(knl);
266 knl->kl_unlock(knl->kl_lockarg);
268 knlist_destroy(knl);
269 free(knl, M_KQUEUE);
299 #define KNL_ASSERT_LOCK(knl, islocked) do { \
301 KNL_ASSERT_LOCKED(knl); \
303 KNL_ASSERT_UNLOCKED(knl); \
306 #define KNL_ASSERT_LOCKED(knl) do { \
307 knl->kl_assert_lock((knl)->kl_lockarg, LA_LOCKED); \
309 #define KNL_ASSERT_UNLOCKED(knl) do { \
310 knl->kl_assert_lock((knl)->kl_lockarg, LA_UNLOCKED); \
313 #define KNL_ASSERT_LOCKED(knl) do {} while (0)
314 #define KNL_ASSERT_UNLOCKED(knl) do {} while (0)
1495 struct knlist *knl;
1504 knl = NULL;
1674 knl = kn_list_lock(kn);
1709 knl = kn_list_lock(kn);
1743 kn_list_unlock(knl);
1920 struct knlist *knl;
2046 knl = kn_list_lock(kn);
2054 kn_list_unlock(knl);
2084 kn_list_unlock(knl);
2428 knlist_add(struct knlist *knl, struct knote *kn, int islocked)
2431 KNL_ASSERT_LOCK(knl, islocked);
2437 knl->kl_lock(knl->kl_lockarg);
2438 SLIST_INSERT_HEAD(&knl->kl_list, kn, kn_selnext);
2440 knl->kl_unlock(knl->kl_lockarg);
2442 kn->kn_knlist = knl;
2448 knlist_remove_kq(struct knlist *knl, struct knote *kn, int knlislocked,
2452 KASSERT(!kqislocked || knlislocked, ("kq locked w/o knl locked"));
2453 KNL_ASSERT_LOCK(knl, knlislocked);
2459 knl->kl_lock(knl->kl_lockarg);
2460 SLIST_REMOVE(&knl->kl_list, kn, knote, kn_selnext);
2463 kn_list_unlock(knl);
2475 knlist_remove(struct knlist *knl, struct knote *kn, int islocked)
2478 knlist_remove_kq(knl, kn, islocked, 0);
2482 knlist_empty(struct knlist *knl)
2485 KNL_ASSERT_LOCKED(knl);
2486 return (SLIST_EMPTY(&knl->kl_list));
2520 knlist_init(struct knlist *knl, void *lock, void (*kl_lock)(void *),
2526 knl->kl_lockarg = &knlist_lock;
2528 knl->kl_lockarg = lock;
2531 knl->kl_lock = knlist_mtx_lock;
2533 knl->kl_lock = kl_lock;
2535 knl->kl_unlock = knlist_mtx_unlock;
2537 knl->kl_unlock = kl_unlock;
2539 knl->kl_assert_lock = knlist_mtx_assert_lock;
2541 knl->kl_assert_lock = kl_assert_lock;
2543 knl->kl_autodestroy = 0;
2544 SLIST_INIT(&knl->kl_list);
2548 knlist_init_mtx(struct knlist *knl, struct mtx *lock)
2551 knlist_init(knl, lock, NULL, NULL, NULL);
2557 struct knlist *knl;
2559 knl = malloc(sizeof(struct knlist), M_KQUEUE, M_WAITOK);
2560 knlist_init_mtx(knl, lock);
2561 return (knl);
2565 knlist_destroy(struct knlist *knl)
2568 KASSERT(KNLIST_EMPTY(knl),
2569 ("destroying knlist %p with knotes on it", knl));
2573 knlist_detach(struct knlist *knl)
2576 KNL_ASSERT_LOCKED(knl);
2577 knl->kl_autodestroy = 1;
2578 if (knlist_empty(knl)) {
2579 knlist_destroy(knl);
2580 free(knl, M_KQUEUE);
2589 knlist_cleardel(struct knlist *knl, struct thread *td, int islocked, int killkn)
2594 KASSERT(!knl->kl_autodestroy, ("cleardel for autodestroy %p", knl));
2596 KNL_ASSERT_LOCKED(knl);
2598 KNL_ASSERT_UNLOCKED(knl);
2600 knl->kl_lock(knl->kl_lockarg);
2603 SLIST_FOREACH_SAFE(kn, &knl->kl_list, kn_selnext, kn2) {
2610 knlist_remove_kq(knl, kn, 1, 1);
2623 if (!SLIST_EMPTY(&knl->kl_list)) {
2625 kn = SLIST_FIRST(&knl->kl_list);
2629 knl->kl_unlock(knl->kl_lockarg);
2637 KNL_ASSERT_LOCKED(knl);
2639 knl->kl_unlock(knl->kl_lockarg);
2640 KNL_ASSERT_UNLOCKED(knl);