Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
5a157d5b
Commit
5a157d5b
authored
Jul 27, 2008
by
David S. Miller
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
sparc: Create and use TIF_NOTIFY_RESUME.
Signed-off-by:
David S. Miller
<
davem@davemloft.net
>
parent
1c133b4b
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
22 additions
and
4 deletions
+22
-4
arch/sparc/include/asm/thread_info_32.h
arch/sparc/include/asm/thread_info_32.h
+6
-1
arch/sparc/kernel/rtrap.S
arch/sparc/kernel/rtrap.S
+3
-2
arch/sparc/kernel/signal.c
arch/sparc/kernel/signal.c
+13
-1
No files found.
arch/sparc/include/asm/thread_info_32.h
View file @
5a157d5b
...
...
@@ -130,7 +130,7 @@ BTFIXUPDEF_CALL(void, free_thread_info, struct thread_info *)
* thread information flag bit numbers
*/
#define TIF_SYSCALL_TRACE 0
/* syscall trace active */
/* flag bit 1 is available
*/
#define TIF_NOTIFY_RESUME 1
/* callback before returning to user
*/
#define TIF_SIGPENDING 2
/* signal pending */
#define TIF_NEED_RESCHED 3
/* rescheduling necessary */
#define TIF_RESTORE_SIGMASK 4
/* restore signal mask in do_signal() */
...
...
@@ -142,12 +142,17 @@ BTFIXUPDEF_CALL(void, free_thread_info, struct thread_info *)
/* as above, but as bit values */
#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
#define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME)
#define _TIF_SIGPENDING (1<<TIF_SIGPENDING)
#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)
#define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK)
#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_RESTORE_SIGMASK)
#endif
/* __KERNEL__ */
#endif
/* _ASM_THREAD_INFO_H */
arch/sparc/kernel/rtrap.S
View file @
5a157d5b
...
...
@@ -69,12 +69,13 @@ ret_trap_lockless_ipi:
ld
[%
curptr
+
TI_FLAGS
],
%
g2
signal_p
:
andcc
%
g2
,
(
_TIF_SIGPENDING
|
_TIF_RESTORE_SIGMASK
)
,
%
g0
andcc
%
g2
,
_TIF_DO_NOTIFY_RESUME_MASK
,
%
g0
bz
,
a
ret_trap_continue
ld
[%
sp
+
STACKFRAME_SZ
+
PT_PSR
],
%
t_psr
mov
%
g2
,
%
o2
mov
%
l5
,
%
o1
call
do_
signal
call
do_
notify_resume
add
%
sp
,
STACKFRAME_SZ
,
%
o0
!
pt_regs
ptr
/
*
Fall
through
.
*/
...
...
arch/sparc/kernel/signal.c
View file @
5a157d5b
...
...
@@ -18,6 +18,7 @@
#include <linux/smp.h>
#include <linux/binfmts.h>
/* do_coredum */
#include <linux/bitops.h>
#include <linux/tracehook.h>
#include <asm/uaccess.h>
#include <asm/ptrace.h>
...
...
@@ -513,7 +514,7 @@ static inline void syscall_restart(unsigned long orig_i0, struct pt_regs *regs,
* want to handle. Thus you cannot kill init even with a SIGKILL even by
* mistake.
*/
asmlinkage
void
do_signal
(
struct
pt_regs
*
regs
,
unsigned
long
orig_i0
)
static
void
do_signal
(
struct
pt_regs
*
regs
,
unsigned
long
orig_i0
)
{
struct
k_sigaction
ka
;
int
restart_syscall
;
...
...
@@ -579,6 +580,17 @@ asmlinkage 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
|
_TIF_RESTORE_SIGMASK
))
do_signal
(
regs
,
orig_i0
);
if
(
thread_info_flags
&
_TIF_NOTIFY_RESUME
)
{
clear_thread_flag
(
TIF_NOTIFY_RESUME
);
tracehook_notify_resume
(
regs
);
}
}
asmlinkage
int
do_sys_sigstack
(
struct
sigstack
__user
*
ssptr
,
struct
sigstack
__user
*
ossptr
,
unsigned
long
sp
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment