summaryrefslogtreecommitdiffstats
path: root/sys/sys/event.h
diff options
context:
space:
mode:
authormpi <mpi@openbsd.org>2020-10-11 07:11:59 +0000
committermpi <mpi@openbsd.org>2020-10-11 07:11:59 +0000
commit0688167753d93f2cd2ffef9e76c8ed27cabd5b85 (patch)
tree08b75bfff92fd7d2ecc747cbb6aed228d50713ad /sys/sys/event.h
parentStop exporting `wt_hwqueue' now that drivers don't advertise it. (diff)
downloadwireguard-openbsd-0688167753d93f2cd2ffef9e76c8ed27cabd5b85.tar.xz
wireguard-openbsd-0688167753d93f2cd2ffef9e76c8ed27cabd5b85.zip
Refactor kqueue_scan() to use a context: a "kqueue_scan_state struct".
The struct keeps track of the end point of an event queue scan by persisting the end marker. This will be needed when kqueue_scan() is called repeatedly to complete a scan in a piecewise fashion. Extracted from a previous diff from visa@. ok visa@, anton@
Diffstat (limited to 'sys/sys/event.h')
-rw-r--r--sys/sys/event.h13
1 files changed, 12 insertions, 1 deletions
diff --git a/sys/sys/event.h b/sys/sys/event.h
index fefbfccad11..a9ecbe6cf78 100644
--- a/sys/sys/event.h
+++ b/sys/sys/event.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: event.h,v 1.45 2020/08/23 07:05:29 mpi Exp $ */
+/* $OpenBSD: event.h,v 1.46 2020/10/11 07:11:59 mpi Exp $ */
/*-
* Copyright (c) 1999,2000,2001 Jonathan Lemon <jlemon@FreeBSD.org>
@@ -200,7 +200,14 @@ struct knote {
#define kn_fp kn_ptr.p_fp
};
+struct kqueue_scan_state {
+ struct kqueue *kqs_kq; /* kqueue of this scan */
+ struct knote kqs_start; /* start marker */
+ struct knote kqs_end; /* end marker */
+};
+
struct proc;
+struct timespec;
extern const struct filterops sig_filtops;
extern const struct filterops dead_filtops;
@@ -212,6 +219,10 @@ extern void knote_fdclose(struct proc *p, int fd);
extern void knote_processexit(struct proc *);
extern int kqueue_register(struct kqueue *kq,
struct kevent *kev, struct proc *p);
+extern int kqueue_scan(struct kqueue_scan_state *, int, struct kevent *,
+ struct timespec *, struct kevent *, struct proc *, int *);
+extern void kqueue_scan_setup(struct kqueue_scan_state *, struct kqueue *);
+extern void kqueue_scan_finish(struct kqueue_scan_state *);
extern int filt_seltrue(struct knote *kn, long hint);
extern int seltrue_kqfilter(dev_t, struct knote *);
extern void klist_insert(struct klist *, struct knote *);