mirror of
https://github.com/cuberite/libevent.git
synced 2025-09-15 15:25:09 -04:00
Prefer epoll_create1 on Linuxen that have it
This commit is contained in:
parent
33fca629a6
commit
bac906c761
@ -310,6 +310,7 @@ AC_CHECK_FUNCS([ \
|
||||
arc4random_buf \
|
||||
clock_gettime \
|
||||
eventfd \
|
||||
epoll_create1 \
|
||||
fcntl \
|
||||
getegid \
|
||||
geteuid \
|
||||
|
23
epoll.c
23
epoll.c
@ -108,19 +108,24 @@ const struct eventop epollops = {
|
||||
static void *
|
||||
epoll_init(struct event_base *base)
|
||||
{
|
||||
int epfd;
|
||||
int epfd = -1;
|
||||
struct epollop *epollop;
|
||||
|
||||
/* Initialize the kernel queue. (The size field is ignored since
|
||||
* 2.6.8.) */
|
||||
if ((epfd = epoll_create(32000)) == -1) {
|
||||
if (errno != ENOSYS)
|
||||
event_warn("epoll_create");
|
||||
return (NULL);
|
||||
#ifdef _EVENT_HAVE_EPOLL_CREATE1
|
||||
/* First, try the shiny new epoll_create1 interface, if we have it. */
|
||||
epfd = epoll_create1(EPOLL_CLOEXEC);
|
||||
#endif
|
||||
if (epfd == -1) {
|
||||
/* Initialize the kernel queue using the old interface. (The
|
||||
size field is ignored since 2.6.8.) */
|
||||
if ((epfd = epoll_create(32000)) == -1) {
|
||||
if (errno != ENOSYS)
|
||||
event_warn("epoll_create");
|
||||
return (NULL);
|
||||
}
|
||||
evutil_make_socket_closeonexec(epfd);
|
||||
}
|
||||
|
||||
evutil_make_socket_closeonexec(epfd);
|
||||
|
||||
if (!(epollop = mm_calloc(1, sizeof(struct epollop)))) {
|
||||
close(epfd);
|
||||
return (NULL);
|
||||
|
Loading…
x
Reference in New Issue
Block a user