|
|
|
From f5ce5e24f9cf18a37ef6aedb149891d07767b045 Mon Sep 17 00:00:00 2001
|
|
|
|
From: Hannes Reinecke <hare@suse.de>
|
|
|
|
Date: Wed, 4 Mar 2015 16:32:16 +0100
|
|
|
|
Subject: [PATCH] Remove the cap on epoll events
|
|
|
|
|
|
|
|
Currently the code will silently blank out events if there are more
|
|
|
|
then 512 epoll events, causing them never to be handled at all. This
|
|
|
|
patch removes the cap on the number of events for epoll_wait, thereby
|
|
|
|
avoiding this issue.
|
|
|
|
|
|
|
|
(cherry picked from commit 1c724e9e0ec5bc4bf791a3d7b1cf5b955cdb98b2)
|
|
|
|
---
|
|
|
|
src/libsystemd/sd-event/sd-event.c | 3 +--
|
|
|
|
1 file changed, 1 insertion(+), 2 deletions(-)
|
|
|
|
|
|
|
|
diff --git a/src/libsystemd/sd-event/sd-event.c b/src/libsystemd/sd-event/sd-event.c
|
|
|
|
index 25089a0335..c6350be9f4 100644
|
|
|
|
--- a/src/libsystemd/sd-event/sd-event.c
|
|
|
|
+++ b/src/libsystemd/sd-event/sd-event.c
|
|
|
|
@@ -37,7 +37,6 @@
|
|
|
|
|
|
|
|
#include "sd-event.h"
|
|
|
|
|
|
|
|
-#define EPOLL_QUEUE_MAX 512U
|
|
|
|
#define DEFAULT_ACCURACY_USEC (250 * USEC_PER_MSEC)
|
|
|
|
|
|
|
|
typedef enum EventSourceType {
|
|
|
|
@@ -2367,7 +2366,7 @@ _public_ int sd_event_wait(sd_event *e, uint64_t timeout) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
- ev_queue_max = CLAMP(e->n_sources, 1U, EPOLL_QUEUE_MAX);
|
|
|
|
+ ev_queue_max = MAX(e->n_sources, 1u);
|
|
|
|
ev_queue = newa(struct epoll_event, ev_queue_max);
|
|
|
|
|
|
|
|
m = epoll_wait(e->epoll_fd, ev_queue, ev_queue_max,
|