Lines Matching refs:si
82 struct nm_selinfo *si = opaque; in nm_kqueue_notify() local
87 KNOTE_UNLOCKED(&si->si.si_note, /*hint=*/0x100); in nm_kqueue_notify()
90 int nm_os_selinfo_init(NM_SELINFO_T *si, const char *name) { in nm_os_selinfo_init() argument
93 TASK_INIT(&si->ntfytask, 0, nm_kqueue_notify, si); in nm_os_selinfo_init()
94 si->ntfytq = taskqueue_create(name, M_NOWAIT, in nm_os_selinfo_init()
95 taskqueue_thread_enqueue, &si->ntfytq); in nm_os_selinfo_init()
96 if (si->ntfytq == NULL) in nm_os_selinfo_init()
98 err = taskqueue_start_threads(&si->ntfytq, 1, PI_NET, "tq %s", name); in nm_os_selinfo_init()
100 taskqueue_free(si->ntfytq); in nm_os_selinfo_init()
101 si->ntfytq = NULL; in nm_os_selinfo_init()
105 snprintf(si->mtxname, sizeof(si->mtxname), "nmkl%s", name); in nm_os_selinfo_init()
106 mtx_init(&si->m, si->mtxname, NULL, MTX_DEF); in nm_os_selinfo_init()
107 knlist_init_mtx(&si->si.si_note, &si->m); in nm_os_selinfo_init()
108 si->kqueue_users = 0; in nm_os_selinfo_init()
114 nm_os_selinfo_uninit(NM_SELINFO_T *si) in nm_os_selinfo_uninit() argument
116 if (si->ntfytq == NULL) { in nm_os_selinfo_uninit()
119 taskqueue_drain(si->ntfytq, &si->ntfytask); in nm_os_selinfo_uninit()
120 taskqueue_free(si->ntfytq); in nm_os_selinfo_uninit()
121 si->ntfytq = NULL; in nm_os_selinfo_uninit()
122 knlist_delete(&si->si.si_note, curthread, /*islocked=*/0); in nm_os_selinfo_uninit()
123 knlist_destroy(&si->si.si_note); in nm_os_selinfo_uninit()
125 mtx_destroy(&si->m); in nm_os_selinfo_uninit()
1329 nm_os_selwakeup(struct nm_selinfo *si) in nm_os_selwakeup() argument
1331 selwakeuppri(&si->si, PI_NET); in nm_os_selwakeup()
1332 if (si->kqueue_users > 0) { in nm_os_selwakeup()
1333 taskqueue_enqueue(si->ntfytq, &si->ntfytask); in nm_os_selwakeup()
1338 nm_os_selrecord(struct thread *td, struct nm_selinfo *si) in nm_os_selrecord() argument
1340 selrecord(td, &si->si); in nm_os_selrecord()
1347 struct nm_selinfo *si = priv->np_si[NR_RX]; in netmap_knrdetach() local
1349 knlist_remove(&si->si.si_note, kn, /*islocked=*/0); in netmap_knrdetach()
1351 KASSERT(si->kqueue_users > 0, ("kqueue_user underflow on %s", in netmap_knrdetach()
1352 si->mtxname)); in netmap_knrdetach()
1353 si->kqueue_users--; in netmap_knrdetach()
1354 nm_prinf("kqueue users for %s: %d", si->mtxname, si->kqueue_users); in netmap_knrdetach()
1362 struct nm_selinfo *si = priv->np_si[NR_TX]; in netmap_knwdetach() local
1364 knlist_remove(&si->si.si_note, kn, /*islocked=*/0); in netmap_knwdetach()
1366 si->kqueue_users--; in netmap_knwdetach()
1367 nm_prinf("kqueue users for %s: %d", si->mtxname, si->kqueue_users); in netmap_knwdetach()
1414 struct nm_selinfo *si; in netmap_kncopy() local
1417 si = priv->np_si[kn->kn_filter == EVFILT_WRITE ? NR_TX : NR_RX]; in netmap_kncopy()
1419 si->kqueue_users++; in netmap_kncopy()
1449 struct nm_selinfo *si; in netmap_kqfilter() local
1467 si = priv->np_si[(ev == EVFILT_WRITE) ? NR_TX : NR_RX]; in netmap_kqfilter()
1472 si->kqueue_users++; in netmap_kqfilter()
1473 nm_prinf("kqueue users for %s: %d", si->mtxname, si->kqueue_users); in netmap_kqfilter()
1475 knlist_add(&si->si.si_note, kn, /*islocked=*/0); in netmap_kqfilter()