summaryrefslogtreecommitdiffstats
path: root/kernel/itimer.c
diff options
context:
space:
mode:
authorRoman Zippel <zippel@linux-m68k.org>2006-03-26 01:38:12 -0800
committerLinus Torvalds <torvalds@g5.osdl.org>2006-03-26 08:57:03 -0800
commit05cfb614ddbf3181540ce09d44d96486f8ba8d6a (patch)
treeaafed98638557a4643141d906fbb2406f0764a94 /kernel/itimer.c
parentdf869b630d9d9131c10cf073fb61646048874b2f (diff)
downloadop-kernel-dev-05cfb614ddbf3181540ce09d44d96486f8ba8d6a.zip
op-kernel-dev-05cfb614ddbf3181540ce09d44d96486f8ba8d6a.tar.gz
[PATCH] hrtimers: remove data field
The nanosleep cleanup allows to remove the data field of hrtimer. The callback function can use container_of() to get it's own data. Since the hrtimer structure is anyway embedded in other structures, this adds no overhead. Signed-off-by: Roman Zippel <zippel@linux-m68k.org> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'kernel/itimer.c')
-rw-r--r--kernel/itimer.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/kernel/itimer.c b/kernel/itimer.c
index af2ec6b..204ed79 100644
--- a/kernel/itimer.c
+++ b/kernel/itimer.c
@@ -128,17 +128,16 @@ asmlinkage long sys_getitimer(int which, struct itimerval __user *value)
/*
* The timer is automagically restarted, when interval != 0
*/
-int it_real_fn(void *data)
+int it_real_fn(struct hrtimer *timer)
{
- struct task_struct *tsk = (struct task_struct *) data;
+ struct signal_struct *sig =
+ container_of(timer, struct signal_struct, real_timer);
- send_group_sig_info(SIGALRM, SEND_SIG_PRIV, tsk);
-
- if (tsk->signal->it_real_incr.tv64 != 0) {
- hrtimer_forward(&tsk->signal->real_timer,
- tsk->signal->real_timer.base->softirq_time,
- tsk->signal->it_real_incr);
+ send_group_sig_info(SIGALRM, SEND_SIG_PRIV, sig->tsk);
+ if (sig->it_real_incr.tv64 != 0) {
+ hrtimer_forward(timer, timer->base->softirq_time,
+ sig->it_real_incr);
return HRTIMER_RESTART;
}
return HRTIMER_NORESTART;
OpenPOWER on IntegriCloud