dryang / rpms / systemd

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