Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
129bc8f7
K
Kernel
项目概览
openeuler
/
Kernel
大约 1 年 前同步成功
通知
5
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
129bc8f7
编写于
7月 11, 2005
作者:
R
Ralf Baechle
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Setup_frame is now returning a success value.
Signed-off-by:
N
Ralf Baechle
<
ralf@linux-mips.org
>
上级
b490ff42
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
32 addition
and
25 deletion
+32
-25
arch/mips/kernel/process.c
arch/mips/kernel/process.c
+5
-5
arch/mips/kernel/signal.c
arch/mips/kernel/signal.c
+15
-11
arch/mips/kernel/signal32.c
arch/mips/kernel/signal32.c
+9
-7
arch/mips/kernel/signal_n32.c
arch/mips/kernel/signal_n32.c
+3
-2
未找到文件。
arch/mips/kernel/process.c
浏览文件 @
129bc8f7
...
...
@@ -62,9 +62,9 @@ extern int do_signal32(sigset_t *oldset, struct pt_regs *regs);
/*
* Native o32 and N64 ABI without DSP ASE
*/
extern
void
setup_frame
(
struct
k_sigaction
*
ka
,
struct
pt_regs
*
regs
,
extern
int
setup_frame
(
struct
k_sigaction
*
ka
,
struct
pt_regs
*
regs
,
int
signr
,
sigset_t
*
set
);
extern
void
setup_rt_frame
(
struct
k_sigaction
*
ka
,
struct
pt_regs
*
regs
,
extern
int
setup_rt_frame
(
struct
k_sigaction
*
ka
,
struct
pt_regs
*
regs
,
int
signr
,
sigset_t
*
set
,
siginfo_t
*
info
);
struct
mips_abi
mips_abi
=
{
...
...
@@ -79,9 +79,9 @@ struct mips_abi mips_abi = {
/*
* o32 compatibility on 64-bit kernels, without DSP ASE
*/
extern
void
setup_frame_32
(
struct
k_sigaction
*
ka
,
struct
pt_regs
*
regs
,
extern
int
setup_frame_32
(
struct
k_sigaction
*
ka
,
struct
pt_regs
*
regs
,
int
signr
,
sigset_t
*
set
);
extern
void
setup_rt_frame_32
(
struct
k_sigaction
*
ka
,
struct
pt_regs
*
regs
,
extern
int
setup_rt_frame_32
(
struct
k_sigaction
*
ka
,
struct
pt_regs
*
regs
,
int
signr
,
sigset_t
*
set
,
siginfo_t
*
info
);
struct
mips_abi
mips_abi_32
=
{
...
...
@@ -95,7 +95,7 @@ struct mips_abi mips_abi_32 = {
/*
* N32 on 64-bit kernels, without DSP ASE
*/
extern
void
setup_rt_frame_n32
(
struct
k_sigaction
*
ka
,
struct
pt_regs
*
regs
,
extern
int
setup_rt_frame_n32
(
struct
k_sigaction
*
ka
,
struct
pt_regs
*
regs
,
int
signr
,
sigset_t
*
set
,
siginfo_t
*
info
);
struct
mips_abi
mips_abi_n32
=
{
...
...
arch/mips/kernel/signal.c
浏览文件 @
129bc8f7
...
...
@@ -278,7 +278,7 @@ _sys_rt_sigreturn(nabi_no_regargs struct pt_regs regs)
}
#ifdef CONFIG_TRAD_SIGNALS
void
setup_frame
(
struct
k_sigaction
*
ka
,
struct
pt_regs
*
regs
,
int
setup_frame
(
struct
k_sigaction
*
ka
,
struct
pt_regs
*
regs
,
int
signr
,
sigset_t
*
set
)
{
struct
sigframe
*
frame
;
...
...
@@ -317,14 +317,15 @@ void setup_frame(struct k_sigaction * ka, struct pt_regs *regs,
current
->
comm
,
current
->
pid
,
frame
,
regs
->
cp0_epc
,
frame
->
regs
[
31
]);
#endif
return
;
return
1
;
give_sigsegv:
force_sigsegv
(
signr
,
current
);
return
0
;
}
#endif
void
setup_rt_frame
(
struct
k_sigaction
*
ka
,
struct
pt_regs
*
regs
,
int
setup_rt_frame
(
struct
k_sigaction
*
ka
,
struct
pt_regs
*
regs
,
int
signr
,
sigset_t
*
set
,
siginfo_t
*
info
)
{
struct
rt_sigframe
*
frame
;
...
...
@@ -376,18 +377,21 @@ void setup_rt_frame(struct k_sigaction * ka, struct pt_regs *regs,
current
->
comm
,
current
->
pid
,
frame
,
regs
->
cp0_epc
,
regs
->
regs
[
31
]);
#endif
return
;
return
1
;
give_sigsegv:
force_sigsegv
(
signr
,
current
);
return
0
;
}
extern
void
setup_rt_frame_n32
(
struct
k_sigaction
*
ka
,
struct
pt_regs
*
regs
,
int
signr
,
sigset_t
*
set
,
siginfo_t
*
info
);
static
inline
void
handle_signal
(
unsigned
long
sig
,
siginfo_t
*
info
,
static
inline
int
handle_signal
(
unsigned
long
sig
,
siginfo_t
*
info
,
struct
k_sigaction
*
ka
,
sigset_t
*
oldset
,
struct
pt_regs
*
regs
)
{
int
ret
;
switch
(
regs
->
regs
[
0
])
{
case
ERESTART_RESTARTBLOCK
:
case
ERESTARTNOHAND
:
...
...
@@ -407,9 +411,9 @@ static inline void handle_signal(unsigned long sig, siginfo_t *info,
regs
->
regs
[
0
]
=
0
;
/* Don't deal with this again. */
if
(
sig_uses_siginfo
(
ka
))
current
->
thread
.
abi
->
setup_rt_frame
(
ka
,
regs
,
sig
,
oldset
,
info
);
ret
=
current
->
thread
.
abi
->
setup_rt_frame
(
ka
,
regs
,
sig
,
oldset
,
info
);
else
current
->
thread
.
abi
->
setup_frame
(
ka
,
regs
,
sig
,
oldset
);
ret
=
current
->
thread
.
abi
->
setup_frame
(
ka
,
regs
,
sig
,
oldset
);
spin_lock_irq
(
&
current
->
sighand
->
siglock
);
sigorsets
(
&
current
->
blocked
,
&
current
->
blocked
,
&
ka
->
sa
.
sa_mask
);
...
...
@@ -417,6 +421,8 @@ static inline void handle_signal(unsigned long sig, siginfo_t *info,
sigaddset
(
&
current
->
blocked
,
sig
);
recalc_sigpending
();
spin_unlock_irq
(
&
current
->
sighand
->
siglock
);
return
ret
;
}
int
do_signal
(
sigset_t
*
oldset
,
struct
pt_regs
*
regs
)
...
...
@@ -440,10 +446,8 @@ int do_signal(sigset_t *oldset, struct pt_regs *regs)
oldset
=
&
current
->
blocked
;
signr
=
get_signal_to_deliver
(
&
info
,
&
ka
,
regs
,
NULL
);
if
(
signr
>
0
)
{
handle_signal
(
signr
,
&
info
,
&
ka
,
oldset
,
regs
);
return
1
;
}
if
(
signr
>
0
)
return
handle_signal
(
signr
,
&
info
,
&
ka
,
oldset
,
regs
);
no_signal:
/*
...
...
arch/mips/kernel/signal32.c
浏览文件 @
129bc8f7
...
...
@@ -769,9 +769,11 @@ void setup_rt_frame_32(struct k_sigaction * ka, struct pt_regs *regs, int signr,
force_sigsegv
(
signr
,
current
);
}
static
inline
void
handle_signal
(
unsigned
long
sig
,
siginfo_t
*
info
,
static
inline
int
handle_signal
(
unsigned
long
sig
,
siginfo_t
*
info
,
struct
k_sigaction
*
ka
,
sigset_t
*
oldset
,
struct
pt_regs
*
regs
)
{
int
ret
;
switch
(
regs
->
regs
[
0
])
{
case
ERESTART_RESTARTBLOCK
:
case
ERESTARTNOHAND
:
...
...
@@ -791,9 +793,9 @@ static inline void handle_signal(unsigned long sig, siginfo_t *info,
regs
->
regs
[
0
]
=
0
;
/* Don't deal with this again. */
if
(
ka
->
sa
.
sa_flags
&
SA_SIGINFO
)
current
->
thread
.
abi
->
setup_rt_frame
(
ka
,
regs
,
sig
,
oldset
,
info
);
ret
=
current
->
thread
.
abi
->
setup_rt_frame
(
ka
,
regs
,
sig
,
oldset
,
info
);
else
current
->
thread
.
abi
->
setup_frame
(
ka
,
regs
,
sig
,
oldset
);
ret
=
current
->
thread
.
abi
->
setup_frame
(
ka
,
regs
,
sig
,
oldset
);
spin_lock_irq
(
&
current
->
sighand
->
siglock
);
sigorsets
(
&
current
->
blocked
,
&
current
->
blocked
,
&
ka
->
sa
.
sa_mask
);
...
...
@@ -801,6 +803,8 @@ static inline void handle_signal(unsigned long sig, siginfo_t *info,
sigaddset
(
&
current
->
blocked
,
sig
);
recalc_sigpending
();
spin_unlock_irq
(
&
current
->
sighand
->
siglock
);
return
ret
;
}
int
do_signal32
(
sigset_t
*
oldset
,
struct
pt_regs
*
regs
)
...
...
@@ -824,10 +828,8 @@ int do_signal32(sigset_t *oldset, struct pt_regs *regs)
oldset
=
&
current
->
blocked
;
signr
=
get_signal_to_deliver
(
&
info
,
&
ka
,
regs
,
NULL
);
if
(
signr
>
0
)
{
handle_signal
(
signr
,
&
info
,
&
ka
,
oldset
,
regs
);
return
1
;
}
if
(
signr
>
0
)
return
handle_signal
(
signr
,
&
info
,
&
ka
,
oldset
,
regs
);
no_signal:
/*
...
...
arch/mips/kernel/signal_n32.c
浏览文件 @
129bc8f7
...
...
@@ -130,7 +130,7 @@ _sysn32_rt_sigreturn(nabi_no_regargs struct pt_regs regs)
force_sig
(
SIGSEGV
,
current
);
}
void
setup_rt_frame_n32
(
struct
k_sigaction
*
ka
,
int
setup_rt_frame_n32
(
struct
k_sigaction
*
ka
,
struct
pt_regs
*
regs
,
int
signr
,
sigset_t
*
set
,
siginfo_t
*
info
)
{
struct
rt_sigframe_n32
*
frame
;
...
...
@@ -184,8 +184,9 @@ void setup_rt_frame_n32(struct k_sigaction * ka,
current
->
comm
,
current
->
pid
,
frame
,
regs
->
cp0_epc
,
regs
->
regs
[
31
]);
#endif
return
;
return
1
;
give_sigsegv:
force_sigsegv
(
signr
,
current
);
return
0
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录