1 #define _XOPEN_SOURCE 600
10 #define EPOLLRDHUP 0x2000
16 /* Allocate disk space.
17 * Expects fd's offset to be 0; may also reset fd's offset to 0.
18 * Returns 0 on success, and a positive errno otherwise. */
20 rawfalloc(int fd
, int len
)
22 return posix_fallocate(fd
, 0, len
);
29 epfd
= epoll_create(1);
31 twarn("epoll_create");
39 sockwant(Socket
*s
, int rw
)
42 struct epoll_event ev
= {};
44 if (!s
->added
&& !rw
) {
46 } else if (!s
->added
&& rw
) {
63 ev
.events
|= EPOLLRDHUP
| EPOLLPRI
;
66 return epoll_ctl(epfd
, op
, s
->fd
, &ev
);
71 socknext(Socket
**s
, int64 timeout
)
74 struct epoll_event ev
;
76 r
= epoll_wait(epfd
, &ev
, 1, (int)(timeout
/1000000));
77 if (r
== -1 && errno
!= EINTR
) {
84 if (ev
.events
& (EPOLLHUP
|EPOLLRDHUP
)) {
86 } else if (ev
.events
& EPOLLIN
) {
88 } else if (ev
.events
& EPOLLOUT
) {