klist
static struct kinfo_proc **klist = NULL;
if (kp != NULL && klist != NULL)
klist = calloc(count, sizeof(*klist));
if (klist == NULL) {
klist[i] = &kp[i];
qsort(klist, nklist, sizeof(*klist), kinfo_proc_comp);
if (klist[i]->p_pid >= (int32_t)idx) {
*kinfo = klist[i];
free(klist);
klist = NULL;
struct klist sc_note;
struct klist sc_note;
struct klist sc_note;
struct klist sc_note;
struct klist *klist;
klist = &sc->sc_rsel.si_note;
klist = &sc->sc_wsel.si_note;
klist_insert_locked(klist, kn);
struct klist sc_note;
klist_invalidate(&sc->play.klist);
klist_invalidate(&sc->rec.klist);
struct klist mix_klist; /* list of knotes */
struct klist *klist;
klist = &sc->rec.klist;
klist = &sc->play.klist;
klist = &sc->mix_klist;
klist_insert(klist, kn);
klist_remove(&sc->rec.klist, kn);
klist_remove(&sc->play.klist, kn);
knote_locked(&buf->klist, 0);
klist_init_mutex(&buf->klist, &audio_lock);
klist_free(&buf->klist);
klist_free(&buf->klist);
struct klist klist; /* list of knotes */
static struct klist hotplug_klist; /* [M] */
struct klist *klist;
klist = &sc->inbuf.klist;
klist = &sc->outbuf.klist;
klist_insert(klist, kn);
klist_remove(&sc->inbuf.klist, kn);
klist_remove(&sc->outbuf.klist, kn);
klist_init_mutex(&sc->inbuf.klist, &audio_lock);
klist_init_mutex(&sc->outbuf.klist, &audio_lock);
klist_invalidate(&sc->inbuf.klist);
klist_invalidate(&sc->outbuf.klist);
klist_free(&sc->inbuf.klist);
klist_free(&sc->outbuf.klist);
knote_locked(&buf->klist, 0);
struct klist klist; /* to record & wakeup poll(2) */
struct klist note;
struct klist *klist;
klist = &sce->rsel.si_note;
klist = &sce->rsel.si_note;
klist_insert_locked(klist, kn);
struct klist *klist;
klist = &sc->sc_rsel.si_note;
klist_insert_locked(klist, kn);
struct klist sc_rklist; /* [m] read selector */
struct klist sc_klist; /* [s] */
struct klist ws_klist; /* [m] list of knotes */
int knote_acquire(struct knote *kn, struct klist *, int);
knote_acquire(struct knote *kn, struct klist *klist, int ls)
if (klist != NULL) {
klist_unlock(klist, ls);
knote(struct klist *list, long hint)
knote_locked(struct klist *list, long hint)
klist_init(struct klist *klist, const struct klistops *ops, void *arg)
SLIST_INIT(&klist->kl_list);
klist->kl_ops = ops;
klist->kl_arg = arg;
klist_free(struct klist *klist)
KASSERT(SLIST_EMPTY(&klist->kl_list));
klist_insert(struct klist *klist, struct knote *kn)
ls = klist_lock(klist);
SLIST_INSERT_HEAD(&klist->kl_list, kn, kn_selnext);
klist_unlock(klist, ls);
klist_insert_locked(struct klist *klist, struct knote *kn)
KLIST_ASSERT_LOCKED(klist);
SLIST_INSERT_HEAD(&klist->kl_list, kn, kn_selnext);
klist_remove(struct klist *klist, struct knote *kn)
ls = klist_lock(klist);
SLIST_REMOVE(&klist->kl_list, kn, knote, kn_selnext);
klist_unlock(klist, ls);
klist_remove_locked(struct klist *klist, struct knote *kn)
KLIST_ASSERT_LOCKED(klist);
SLIST_REMOVE(&klist->kl_list, kn, knote, kn_selnext);
klist_invalidate(struct klist *list)
klist_lock(struct klist *list)
klist_unlock(struct klist *list, int ls)
klist_init_mutex(struct klist *klist, struct mutex *mtx)
klist_init(klist, &mutex_klistops, mtx);
klist_init_rwlock(struct klist *klist, struct rwlock *rwl)
klist_init(klist, &rwlock_klistops, rwl);
static int klist_lock(struct klist *);
static void klist_unlock(struct klist *, int);
struct klist *klist;
klist = &logsoftc.sc_klist;
klist_insert(klist, kn);
struct klist sc_klist; /* [Q] process waiting on kevent call */
struct klist *klist;
klist = &tp->t_rsel.si_note;
klist = &tp->t_wsel.si_note;
klist = &tp->t_rsel.si_note;
klist_insert_locked(klist, kn);
struct klist *klist;
klist = &pti->pt_selr.si_note;
klist = &pti->pt_selw.si_note;
klist = &pti->pt_selr.si_note;
klist_insert_locked(klist, kn);
struct klist *klist;
klist = &fd->fd_rklist;
klist_insert(klist, kn);
struct klist fd_rklist; /* [l] */
struct klist *klist = &fd->fd_rklist;
klist_remove(klist, kn);
struct klist *klist;
klist = &d->bd_klist;
klist_insert(klist, kn);
struct klist bd_klist; /* list of knotes */
struct klist pxd_rklist; /* [m] */
struct klist pxd_wklist; /* [m] */
struct klist *klist;
klist = &sc->sc_rklist;
klist = &sc->sc_wklist;
klist_insert(klist, kn);
struct klist *klist;
klist = &pxd->pxd_rklist;
klist = &pxd->pxd_wklist;
klist_insert(klist, kn);
struct klist sc_rklist; /* [m] */
struct klist sc_wklist; /* [m] */
struct klist *klist;
klist = &sc->sc_rklist;
klist = &sc->sc_wklist;
klist_insert(klist, kn);
struct klist sc_rklist; /* knotes for read */
struct klist sc_wklist; /* knotes for write (unused) */
extern void knote(struct klist *list, long hint);
extern void knote_locked(struct klist *list, long hint);
extern void klist_init(struct klist *, const struct klistops *, void *);
extern void klist_init_mutex(struct klist *, struct mutex *);
extern void klist_init_rwlock(struct klist *, struct rwlock *);
extern void klist_free(struct klist *);
extern void klist_insert(struct klist *, struct knote *);
extern void klist_insert_locked(struct klist *, struct knote *);
extern void klist_remove(struct klist *, struct knote *);
extern void klist_remove_locked(struct klist *, struct knote *);
extern void klist_invalidate(struct klist *);
klist_empty(struct klist *klist)
return (SLIST_EMPTY(&klist->kl_list));
struct klist kq_klist; /* [L] knotes of other kqs */
struct klist pipe_klist; /* [p] list of knotes */
struct klist ps_klist; /* [Q,m] knotes attached to process */
struct klist si_note; /* kernel note list */
struct klist sb_klist; /* [m] list of knotes */
struct klist v_klist; /* identity of poller(s) */
static int *klist; /* will be overlaid on file[0] after class */
klist = xcalloc(slen[0] + 2, sizeof(*klist));
i = stone(class, slen[0], member, klist, flags);
unravel(klist[i]);
free(klist);
static int *klist; /* will be overlaid on file[0] after class */
klist = xcalloc(slen[0] + 2, sizeof(*klist));
i = stone(class, slen[0], member, klist, flags);
unravel(klist[i]);
free(klist);
static int *klist; /* will be overlaid on file[0] after class */
klist = xcalloc(slen[0] + 2, sizeof(*klist));
i = stone(class, slen[0], member, klist, flags);
unravel(klist[i]);
free(klist);