Commit 8668010b authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

Try to make epoll waiter work again

parent 5ea15724
......@@ -288,7 +288,11 @@ SES_Wait(struct sess *sp)
CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
pp = sp->sesspool;
CHECK_OBJ_NOTNULL(pp, SESSPOOL_MAGIC);
INIT_OBJ(&sp->waited, WAITED_MAGIC);
/*
* XXX: waiter_epoll prevents us from zeroing the struct because
* XXX: it keeps state across calls.
*/
sp->waited.magic = WAITED_MAGIC;
sp->waited.fd = sp->fd;
sp->waited.ptr = sp;
sp->waited.deadline = sp->t_idle;
......
......@@ -75,18 +75,11 @@ vwe_modadd(struct vwe *vwe, int fd, void *data, short arm)
* XXX: will hang. See #644.
*/
assert(fd >= 0);
if (data == vwe->pipes || data == vwe->timer_pipes) {
struct epoll_event ev = {
EPOLLIN | EPOLLPRI , { data }
};
AZ(epoll_ctl(vwe->epfd, arm, fd, &ev));
} else {
struct waited *sp = (struct waited *)data;
CHECK_OBJ_NOTNULL(sp, WAITED_MAGIC);
sp->ev.data.ptr = data;
sp->ev.events = EPOLLIN | EPOLLPRI | EPOLLONESHOT | EPOLLRDHUP;
AZ(epoll_ctl(vwe->epfd, arm, fd, &sp->ev));
}
assert(data == vwe->pipes || data == vwe->timer_pipes);
struct epoll_event ev = {
EPOLLIN | EPOLLPRI , { data }
};
AZ(epoll_ctl(vwe->epfd, arm, fd, &ev));
}
static void
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment