Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
1c133b4b
cloud-kernel
项目概览
openanolis
/
cloud-kernel
大约 1 年 前同步成功
通知
158
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
1c133b4b
编写于
7月 27, 2008
作者:
D
David S. Miller
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
sparc: Use tracehook routines in syscall_trace().
Signed-off-by:
N
David S. Miller
<
davem@davemloft.net
>
上级
76822586
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
21 addition
and
17 deletion
+21
-17
arch/sparc/kernel/entry.S
arch/sparc/kernel/entry.S
+10
-2
arch/sparc/kernel/ptrace.c
arch/sparc/kernel/ptrace.c
+11
-15
未找到文件。
arch/sparc/kernel/entry.S
浏览文件 @
1c133b4b
...
...
@@ -1196,8 +1196,9 @@ sys_rt_sigreturn:
be
1
f
nop
add
%
sp
,
STACKFRAME_SZ
,
%
o0
call
syscall_trace
nop
mov
1
,
%
o1
1
:
/
*
We
are
returning
to
a
signal
handler
.
*/
...
...
@@ -1287,8 +1288,12 @@ linux_fast_syscall:
mov
%
i3
,
%
o3
linux_syscall_trace
:
add
%
sp
,
STACKFRAME_SZ
,
%
o0
call
syscall_trace
nop
mov
0
,
%
o1
cmp
%
o0
,
0
bne
3
f
mov
-
ENOSYS
,
%
o0
mov
%
i0
,
%
o0
mov
%
i1
,
%
o1
mov
%
i2
,
%
o2
...
...
@@ -1337,6 +1342,7 @@ syscall_is_too_hard:
call
%
l7
mov
%
i5
,
%
o5
3
:
st
%
o0
,
[%
sp
+
STACKFRAME_SZ
+
PT_I0
]
ret_sys_call
:
...
...
@@ -1374,6 +1380,8 @@ ret_sys_call:
st
%
l2
,
[%
sp
+
STACKFRAME_SZ
+
PT_NPC
]
linux_syscall_trace2
:
add
%
sp
,
STACKFRAME_SZ
,
%
o0
mov
1
,
%
o1
call
syscall_trace
add
%
l1
,
0x4
,
%
l2
/*
npc
=
npc
+
4
*/
st
%
l1
,
[%
sp
+
STACKFRAME_SZ
+
PT_PC
]
...
...
arch/sparc/kernel/ptrace.c
浏览文件 @
1c133b4b
...
...
@@ -21,6 +21,7 @@
#include <linux/signal.h>
#include <linux/regset.h>
#include <linux/elf.h>
#include <linux/tracehook.h>
#include <asm/pgtable.h>
#include <asm/system.h>
...
...
@@ -450,21 +451,16 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
return
ret
;
}
asmlinkage
void
syscall_trace
(
void
)
asmlinkage
int
syscall_trace
(
struct
pt_regs
*
regs
,
int
syscall_exit_p
)
{
if
(
!
test_thread_flag
(
TIF_SYSCALL_TRACE
))
return
;
if
(
!
(
current
->
ptrace
&
PT_PTRACED
))
return
;
ptrace_notify
(
SIGTRAP
|
((
current
->
ptrace
&
PT_TRACESYSGOOD
)
?
0x80
:
0
));
/*
* this isn't the same as continuing with a signal, but it will do
* for normal use. strace only continues with a signal if the
* stopping signal is not SIGTRAP. -brl
*/
if
(
current
->
exit_code
)
{
send_sig
(
current
->
exit_code
,
current
,
1
);
current
->
exit_code
=
0
;
int
ret
=
0
;
if
(
test_thread_flag
(
TIF_SYSCALL_TRACE
))
{
if
(
syscall_exit_p
)
tracehook_report_syscall_exit
(
regs
,
0
);
else
ret
=
tracehook_report_syscall_entry
(
regs
);
}
return
ret
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录