Messages in this thread Patch in this message | | | From | Jason Low <> | Subject | [PATCH 2/3] timer: Check thread timers only when there are active thread timers | Date | Tue, 25 Aug 2015 20:17:47 -0700 |
| |
The fastpath_timer_check() contains logic to check for if any timers are set by checking if !task_cputime_zero(). Similarly, we can do this before calling check_thread_timers(). In the case where there are only process-wide timers, this will skip all the computations for the per-thread timers when there are no per-thread timers.
Signed-off-by: Jason Low <jason.low2@hp.com> --- kernel/time/posix-cpu-timers.c | 10 ++++++---- 1 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/kernel/time/posix-cpu-timers.c b/kernel/time/posix-cpu-timers.c index 02596ff..535bef5 100644 --- a/kernel/time/posix-cpu-timers.c +++ b/kernel/time/posix-cpu-timers.c @@ -1168,11 +1168,13 @@ void run_posix_cpu_timers(struct task_struct *tsk) if (!lock_task_sighand(tsk, &flags)) return; /* - * Here we take off tsk->signal->cpu_timers[N] and - * tsk->cpu_timers[N] all the timers that are firing, and - * put them on the firing list. + * If there are active per-thread timers, take off + * tsk->signal->cpu_timers[N] and tsk->cpu_timers[N] all the + * timers that are firing, and put them on the firing list. */ - check_thread_timers(tsk, &firing); + if (!task_cputime_zero(&tsk->cputime_expires)) + check_thread_timers(tsk, &firing); + /* * If there are any active process wide timers (POSIX 1.b, itimers, * RLIMIT_CPU) cputimer must be running. -- 1.7.2.5
| |