[RFC PATCH v1 1/9] timer: fix circular header dependency
From: Christophe Leroy <hidden>
Date: 2018-09-24 21:58:07
Also in:
linux-fsdevel, lkml
Subsystem:
filesystems (vfs and infrastructure), posix clocks and timers, the rest, timekeeping, clocksource core, ntp, alarmtimer · Maintainers:
Alexander Viro, Christian Brauner, Anna-Maria Behnsen, Frederic Weisbecker, Thomas Gleixner, Linus Torvalds, John Stultz
When switching powerpc to CONFIG_THREAD_INFO_IN_TASK, include/sched.h
has to be included in asm/smp.h for the following change, in order
to avoid uncomplete definition of task_struct:
-#define raw_smp_processor_id() (current_thread_info()->cpu)
+#define raw_smp_processor_id() (current->cpu)
But this generates the following compilation error, due to circular
header dependency.
CC kernel/time/alarmtimer.o
In file included from ./arch/powerpc/include/asm/smp.h:31,
from ./include/linux/smp.h:64,
from ./include/linux/percpu.h:7,
from ./include/linux/hrtimer.h:22,
from kernel/time/alarmtimer.c:19:
./include/linux/sched.h:558:19: error: field 'dl_timer' has incomplete type
struct hrtimer dl_timer;
^~~~~~~~
./include/linux/sched.h:567:17: error: field 'inactive_timer' has incomplete type
struct hrtimer inactive_timer;
^~~~~~~~~~~~~~
make[1]: *** [kernel/time/alarmtimer.o] Error 1
make: *** [kernel/time/alarmtimer.o] Error 2
CC fs/timerfd.o
In file included from ./arch/powerpc/include/asm/smp.h:31,
from ./include/linux/smp.h:64,
from ./include/linux/percpu.h:7,
from ./include/linux/hrtimer.h:22,
from ./include/linux/alarmtimer.h:6,
from fs/timerfd.c:12:
./include/linux/sched.h:558:19: error: field 'dl_timer' has incomplete type
struct hrtimer dl_timer;
^~~~~~~~
./include/linux/sched.h:567:17: error: field 'inactive_timer' has incomplete type
struct hrtimer inactive_timer;
^~~~~~~~~~~~~~
make[1]: *** [fs/timerfd.o] Error 1
make: *** [fs/timerfd.o] Error 2
This patch fixes it by including linux/hrtimer.h after linux/sched.h
Signed-off-by: Christophe Leroy <redacted>
---
Should it be fixed in powerpc instead ? In that case, how ? Any idea ?
fs/timerfd.c | 2 +-
kernel/time/alarmtimer.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/fs/timerfd.c b/fs/timerfd.c
index d69ad801eb80..0fc01b241382 100644
--- a/fs/timerfd.c
+++ b/fs/timerfd.c@@ -9,12 +9,12 @@ * */ -#include <linux/alarmtimer.h> #include <linux/file.h> #include <linux/poll.h> #include <linux/init.h> #include <linux/fs.h> #include <linux/sched.h> +#include <linux/alarmtimer.h> #include <linux/kernel.h> #include <linux/slab.h> #include <linux/list.h>
diff --git a/kernel/time/alarmtimer.c b/kernel/time/alarmtimer.c
index fa5de5e8de61..5fb75c9b3f06 100644
--- a/kernel/time/alarmtimer.c
+++ b/kernel/time/alarmtimer.c@@ -16,11 +16,11 @@ * published by the Free Software Foundation. */ #include <linux/time.h> -#include <linux/hrtimer.h> #include <linux/timerqueue.h> #include <linux/rtc.h> #include <linux/sched/signal.h> #include <linux/sched/debug.h> +#include <linux/hrtimer.h> #include <linux/alarmtimer.h> #include <linux/mutex.h> #include <linux/platform_device.h>
--
2.13.3