X-Git-Url: https://bbs.cooldavid.org/git/?a=blobdiff_plain;f=include%2Flinux%2Fsched.h;h=3ff5c8519abdeeb601d2376d784273e546e05eb3;hb=b8ed374e202e23caaf9bd77dcadc9de6447faaa8;hp=393ce94e54b77155227f5df48cf7e81e6b9ec09f;hpb=5ef45079dd9c8f2e9c7aa788dc3121835ae52863;p=net-next-2.6.git diff --git a/include/linux/sched.h b/include/linux/sched.h index 393ce94e54b..3ff5c8519ab 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -2236,9 +2236,16 @@ static inline void task_unlock(struct task_struct *p) spin_unlock(&p->alloc_lock); } -extern struct sighand_struct *lock_task_sighand(struct task_struct *tsk, +extern struct sighand_struct *__lock_task_sighand(struct task_struct *tsk, unsigned long *flags); +#define lock_task_sighand(tsk, flags) \ +({ struct sighand_struct *__ss; \ + __cond_lock(&(tsk)->sighand->siglock, \ + (__ss = __lock_task_sighand(tsk, flags))); \ + __ss; \ +}) \ + static inline void unlock_task_sighand(struct task_struct *tsk, unsigned long *flags) {