From: vonnyfly <lifeng1519@xxxxxxxxx> There are some exceptions when checking features in Makefile. In my debian, timerfd.h path is not '/usr/include/sys/timerfd.h'. $ find /usr/include -name "timerfd.h" | head -n1 /usr/include/x86_64-linux-gnu/sys/timerfd.h In my raspberrypi, the path is also not here. So, it will not enable timerfd, even though it supports actually. When I enable it after fix. I have seen error logs. "Failed to write to pipe". >From the code, we could know in add_work, it calls work_timer_schedule_evt. work_timer_schedule_evt will call write(timer_fd[1], ...), then it will print error log, because timer_fd[1] == -1. When enable timerfd support, makefile check incorrectly. work_timer_schedule_evt should check support of timerfd. Signed-off-by: vonnyfly <lifeng1519@xxxxxxxxx> --- usr/Makefile | 2 +- usr/work.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/usr/Makefile b/usr/Makefile index 1fae7e7..d4e3eaf 100644 --- a/usr/Makefile +++ b/usr/Makefile @@ -5,7 +5,7 @@ ifneq ($(shell test -e /usr/include/linux/signalfd.h && echo 1),) CFLAGS += -DUSE_SIGNALFD endif -ifneq ($(shell test -e /usr/include/sys/timerfd.h && echo 1),) +ifneq ($(shell test -n $(shell find /usr/include -name "timerfd.h" | head -n1) && echo 1),) CFLAGS += -DUSE_TIMERFD endif diff --git a/usr/work.c b/usr/work.c index 6b9ec12..d760c22 100644 --- a/usr/work.c +++ b/usr/work.c @@ -59,7 +59,7 @@ static void work_timer_schedule_evt(void) unsigned int n = 0; int err; - if (timer_pending) + if (timer_pending || timer_fd[1] < 0) return; timer_pending = 1; -- 2.8.1 -- To unsubscribe from this list: send the line "unsubscribe stgt" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html