diff options
author | John Stultz <johnstul@us.ibm.com> | 2009-07-03 08:29:58 -0500 |
---|---|---|
committer | Clark Williams <williams@redhat.com> | 2012-04-10 16:37:02 -0500 |
commit | 93a2dafbe0ceee3519ca4e63a7c42e3ae610a242 (patch) | |
tree | 409bf3bf4d4c0e000cd32724649cdbae5a5f0196 /include | |
parent | 901562c04b983c3f3e89a6ee865eee06a666ed3e (diff) |
posix-timers: thread posix-cpu-timers on -rt
posix-cpu-timer code takes non -rt safe locks in hard irq
context. Move it to a thread.
[ 3.0 fixes from Peter Zijlstra <peterz@infradead.org> ]
Signed-off-by: John Stultz <johnstul@us.ibm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/init_task.h | 7 | ||||
-rw-r--r-- | include/linux/sched.h | 3 |
2 files changed, 10 insertions, 0 deletions
diff --git a/include/linux/init_task.h b/include/linux/init_task.h index 32574eef9394..cfd9f8de4dc2 100644 --- a/include/linux/init_task.h +++ b/include/linux/init_task.h @@ -126,6 +126,12 @@ extern struct cred init_cred; # define INIT_PERF_EVENTS(tsk) #endif +#ifdef CONFIG_PREEMPT_RT_BASE +# define INIT_TIMER_LIST .posix_timer_list = NULL, +#else +# define INIT_TIMER_LIST +#endif + #define INIT_TASK_COMM "swapper" /* @@ -180,6 +186,7 @@ extern struct cred init_cred; .cpu_timers = INIT_CPU_TIMERS(tsk.cpu_timers), \ .pi_lock = __RAW_SPIN_LOCK_UNLOCKED(tsk.pi_lock), \ .timer_slack_ns = 50000, /* 50 usec default slack */ \ + INIT_TIMER_LIST \ .pids = { \ [PIDTYPE_PID] = INIT_PID_LINK(PIDTYPE_PID), \ [PIDTYPE_PGID] = INIT_PID_LINK(PIDTYPE_PGID), \ diff --git a/include/linux/sched.h b/include/linux/sched.h index 30ac0b54afae..9ff731db2fba 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -1355,6 +1355,9 @@ struct task_struct { struct task_cputime cputime_expires; struct list_head cpu_timers[3]; +#ifdef CONFIG_PREEMPT_RT_BASE + struct task_struct *posix_timer_list; +#endif /* process credentials */ const struct cred __rcu *real_cred; /* objective and real subjective task |