Such events are legal and should be interpreted as EPOLLERR | EPOLLHUP.
Register a disabled kqueue event in that case as we do not support EPOLLHUP yet.
Required for Linux Steam client.
PR/240590
Differential D22516
Linux epoll: Register events with zero event mask. Authored by wulf on Nov 23 2019, 12:13 PM. Tags None Referenced Files
Subscribers
Details
Such events are legal and should be interpreted as EPOLLERR | EPOLLHUP. Required for Linux Steam client. PR/240590 /* Sample testcase */
#include <sys/epoll.h>
#include <assert.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int
main(int argc, char *argv[])
{
struct epoll_event event;
int epfd;
epfd = epoll_create1(EPOLL_CLOEXEC);
assert(epfd);
event.events = 0;
if (epoll_ctl(epfd, EPOLL_CTL_ADD, STDIN_FILENO, &event) != 0) {
perror("EPOLL_CTL_ADD failed");
exit(EXIT_FAILURE);
}
if (epoll_ctl(epfd, EPOLL_CTL_MOD, STDIN_FILENO, &event) != 0) {
perror("EPOLL_CTL_MOD failed");
exit(EXIT_FAILURE);
}
if (epoll_ctl(epfd, EPOLL_CTL_DEL, STDIN_FILENO, &event) != 0) {
perror("EPOLL_CTL_DEL failed");
exit(EXIT_FAILURE);
}
printf("ok\n");
return (EXIT_SUCCESS);
}
Diff Detail
|