diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2009-05-13 16:55:10 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-05-18 22:15:56 -0700 |
commit | 690cc3ffe33ac4a2857583c22d4c6244ae11684d (patch) | |
tree | 47da7801ef7539260a1a64b41f43ab8131e4f551 | |
parent | 69e3c75f4d541a6eb151b3ef91f34033cb3ad6e1 (diff) | |
download | op-kernel-dev-690cc3ffe33ac4a2857583c22d4c6244ae11684d.zip op-kernel-dev-690cc3ffe33ac4a2857583c22d4c6244ae11684d.tar.gz |
syscall: Implement a convinience function restart_syscall
Currently when we have a signal pending we have the functionality
to restart that the current system call. There are other cases
such as nasty lock ordering issues where it makes sense to have
a simple fix that uses try lock and restarts the system call.
Buying time to figure out how to rework the locking strategy.
Signed-off-by: Eric W. Biederman <ebiederm@aristanetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | include/linux/sched.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/include/linux/sched.h b/include/linux/sched.h index b4c38bc..d853f6b 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -2178,6 +2178,12 @@ static inline int test_tsk_need_resched(struct task_struct *tsk) return unlikely(test_tsk_thread_flag(tsk,TIF_NEED_RESCHED)); } +static inline int restart_syscall(void) +{ + set_tsk_thread_flag(current, TIF_SIGPENDING); + return -ERESTARTNOINTR; +} + static inline int signal_pending(struct task_struct *p) { return unlikely(test_tsk_thread_flag(p,TIF_SIGPENDING)); |