mirror of https://gitee.com/openkylin/linux.git
sparc: add support for TIF_NOTIFY_SIGNAL
Wire up TIF_NOTIFY_SIGNAL handling for sparc. Cc: sparclinux@vger.kernel.org Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
24a31b81e3
commit
f50a7052f5
|
@ -104,6 +104,7 @@ register struct thread_info *current_thread_info_reg asm("g6");
|
|||
#define TIF_SIGPENDING 2 /* signal pending */
|
||||
#define TIF_NEED_RESCHED 3 /* rescheduling necessary */
|
||||
#define TIF_RESTORE_SIGMASK 4 /* restore signal mask in do_signal() */
|
||||
#define TIF_NOTIFY_SIGNAL 5 /* signal notifications exist */
|
||||
#define TIF_USEDFPU 8 /* FPU was used by this task
|
||||
* this quantum (SMP) */
|
||||
#define TIF_POLLING_NRFLAG 9 /* true if poll_idle() is polling
|
||||
|
@ -115,11 +116,12 @@ register struct thread_info *current_thread_info_reg asm("g6");
|
|||
#define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME)
|
||||
#define _TIF_SIGPENDING (1<<TIF_SIGPENDING)
|
||||
#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)
|
||||
#define _TIF_NOTIFY_SIGNAL (1<<TIF_NOTIFY_SIGNAL)
|
||||
#define _TIF_USEDFPU (1<<TIF_USEDFPU)
|
||||
#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)
|
||||
|
||||
#define _TIF_DO_NOTIFY_RESUME_MASK (_TIF_NOTIFY_RESUME | \
|
||||
_TIF_SIGPENDING)
|
||||
_TIF_SIGPENDING | _TIF_NOTIFY_SIGNAL)
|
||||
|
||||
#define is_32bit_task() (1)
|
||||
|
||||
|
|
|
@ -180,7 +180,7 @@ extern struct thread_info *current_thread_info(void);
|
|||
#define TIF_NOTIFY_RESUME 1 /* callback before returning to user */
|
||||
#define TIF_SIGPENDING 2 /* signal pending */
|
||||
#define TIF_NEED_RESCHED 3 /* rescheduling necessary */
|
||||
/* flag bit 4 is available */
|
||||
#define TIF_NOTIFY_SIGNAL 4 /* signal notifications exist */
|
||||
#define TIF_UNALIGNED 5 /* allowed to do unaligned accesses */
|
||||
#define TIF_UPROBE 6 /* breakpointed or singlestepped */
|
||||
#define TIF_32BIT 7 /* 32-bit binary */
|
||||
|
@ -200,6 +200,7 @@ extern struct thread_info *current_thread_info(void);
|
|||
#define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME)
|
||||
#define _TIF_SIGPENDING (1<<TIF_SIGPENDING)
|
||||
#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)
|
||||
#define _TIF_NOTIFY_SIGNAL (1<<TIF_NOTIFY_SIGNAL)
|
||||
#define _TIF_UNALIGNED (1<<TIF_UNALIGNED)
|
||||
#define _TIF_UPROBE (1<<TIF_UPROBE)
|
||||
#define _TIF_32BIT (1<<TIF_32BIT)
|
||||
|
@ -213,7 +214,8 @@ extern struct thread_info *current_thread_info(void);
|
|||
_TIF_DO_NOTIFY_RESUME_MASK | \
|
||||
_TIF_NEED_RESCHED)
|
||||
#define _TIF_DO_NOTIFY_RESUME_MASK (_TIF_NOTIFY_RESUME | \
|
||||
_TIF_SIGPENDING | _TIF_UPROBE)
|
||||
_TIF_SIGPENDING | _TIF_UPROBE | \
|
||||
_TIF_NOTIFY_SIGNAL)
|
||||
|
||||
#define is_32bit_task() (test_thread_flag(TIF_32BIT))
|
||||
|
||||
|
|
|
@ -521,7 +521,7 @@ static void do_signal(struct pt_regs *regs, unsigned long orig_i0)
|
|||
void do_notify_resume(struct pt_regs *regs, unsigned long orig_i0,
|
||||
unsigned long thread_info_flags)
|
||||
{
|
||||
if (thread_info_flags & _TIF_SIGPENDING)
|
||||
if (thread_info_flags & (_TIF_SIGPENDING | _TIF_NOTIFY_SIGNAL))
|
||||
do_signal(regs, orig_i0);
|
||||
if (thread_info_flags & _TIF_NOTIFY_RESUME)
|
||||
tracehook_notify_resume(regs);
|
||||
|
|
|
@ -549,7 +549,7 @@ void do_notify_resume(struct pt_regs *regs, unsigned long orig_i0, unsigned long
|
|||
user_exit();
|
||||
if (thread_info_flags & _TIF_UPROBE)
|
||||
uprobe_notify_resume(regs);
|
||||
if (thread_info_flags & _TIF_SIGPENDING)
|
||||
if (thread_info_flags & (_TIF_SIGPENDING | _TIF_NOTIFY_SIGNAL))
|
||||
do_signal(regs, orig_i0);
|
||||
if (thread_info_flags & _TIF_NOTIFY_RESUME)
|
||||
tracehook_notify_resume(regs);
|
||||
|
|
Loading…
Reference in New Issue