8 static void handle(Socket
*s
, int events
);
14 static struct timespec ivalts
;
18 sockinit(Handle f
, void *x
, int64 ns
)
23 ivalts
.tv_sec
= ns
/ 1000000000;
24 ivalts
.tv_nsec
= ns
% 1000000000;
34 sockwant(Socket
*s
, int rw
)
36 struct kevent ev
= {};
37 struct timespec ts
= {};
39 if (!s
->added
&& !rw
) {
50 ev
.filter
= EVFILT_READ
;
53 ev
.filter
= EVFILT_WRITE
;
58 return kevent(kq
, &ev
, 1, NULL
, 0, &ts
);
66 int64 e
, t
= nanoseconds();
70 r
= kevent(kq
, NULL
, 0, evs
, n
, &ivalts
);
71 if (r
== -1 && errno
!= EINTR
) {
84 handle(evs
[i
].udata
, evs
[i
].filter
);
92 handle(Socket
*s
, int filt
)