projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
sata_inic162x: kill double region requests
[powerpc.git]
/
kernel
/
itimer.c
diff --git
a/kernel/itimer.c
b/kernel/itimer.c
index
680e6b7
..
307c6a6
100644
(file)
--- a/
kernel/itimer.c
+++ b/
kernel/itimer.c
@@
-128,18
+128,13
@@
asmlinkage long sys_getitimer(int which, struct itimerval __user *value)
/*
* The timer is automagically restarted, when interval != 0
*/
/*
* The timer is automagically restarted, when interval != 0
*/
-
int it_real_fn(void *data
)
+
enum hrtimer_restart 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);
+ send_group_sig_info(SIGALRM, SEND_SIG_PRIV,
sig->
tsk);
- if (tsk->signal->it_real_incr.tv64 != 0) {
- hrtimer_forward(&tsk->signal->real_timer,
- tsk->signal->it_real_incr);
-
- return HRTIMER_RESTART;
- }
return HRTIMER_NORESTART;
}
return HRTIMER_NORESTART;
}
@@
-231,11
+226,14
@@
again:
spin_unlock_irq(&tsk->sighand->siglock);
goto again;
}
spin_unlock_irq(&tsk->sighand->siglock);
goto again;
}
- tsk->signal->it_real_incr =
- timeval_to_ktime(value->it_interval);
expires = timeval_to_ktime(value->it_value);
expires = timeval_to_ktime(value->it_value);
- if (expires.tv64 != 0)
- hrtimer_start(timer, expires, HRTIMER_REL);
+ if (expires.tv64 != 0) {
+ tsk->signal->it_real_incr =
+ timeval_to_ktime(value->it_interval);
+ hrtimer_start(timer, expires, HRTIMER_MODE_REL);
+ } else
+ tsk->signal->it_real_incr.tv64 = 0;
+
spin_unlock_irq(&tsk->sighand->siglock);
break;
case ITIMER_VIRTUAL:
spin_unlock_irq(&tsk->sighand->siglock);
break;
case ITIMER_VIRTUAL: