Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
a53bb24e
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,发现更多精彩内容 >>
提交
a53bb24e
编写于
4月 24, 2012
作者:
A
Al Viro
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
xtensa: add handling of TIF_NOTIFY_RESUME
Signed-off-by:
N
Al Viro
<
viro@zeniv.linux.org.uk
>
上级
83140191
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
20 addition
and
6 deletion
+20
-6
arch/xtensa/include/asm/thread_info.h
arch/xtensa/include/asm/thread_info.h
+1
-0
arch/xtensa/kernel/entry.S
arch/xtensa/kernel/entry.S
+3
-2
arch/xtensa/kernel/signal.c
arch/xtensa/kernel/signal.c
+16
-4
未找到文件。
arch/xtensa/include/asm/thread_info.h
浏览文件 @
a53bb24e
...
@@ -131,6 +131,7 @@ static inline struct thread_info *current_thread_info(void)
...
@@ -131,6 +131,7 @@ static inline struct thread_info *current_thread_info(void)
#define TIF_IRET 4
/* return with iret */
#define TIF_IRET 4
/* return with iret */
#define TIF_MEMDIE 5
/* is terminating due to OOM killer */
#define TIF_MEMDIE 5
/* is terminating due to OOM killer */
#define TIF_RESTORE_SIGMASK 6
/* restore signal mask in do_signal() */
#define TIF_RESTORE_SIGMASK 6
/* restore signal mask in do_signal() */
#define TIF_NOTIFY_RESUME 7
/* callback before returning to user */
#define TIF_POLLING_NRFLAG 16
/* true if poll_idle() is polling TIF_NEED_RESCHED */
#define TIF_POLLING_NRFLAG 16
/* true if poll_idle() is polling TIF_NEED_RESCHED */
#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
...
...
arch/xtensa/kernel/entry.S
浏览文件 @
a53bb24e
...
@@ -409,14 +409,15 @@ common_exception_return:
...
@@ -409,14 +409,15 @@ common_exception_return:
l32i
a4
,
a2
,
TI_FLAGS
l32i
a4
,
a2
,
TI_FLAGS
_bbsi
.
l
a4
,
TIF_NEED_RESCHED
,
3
f
_bbsi
.
l
a4
,
TIF_NEED_RESCHED
,
3
f
_bbsi
.
l
a4
,
TIF_NOTIFY_RESUME
,
2
f
_bbci
.
l
a4
,
TIF_SIGPENDING
,
4
f
_bbci
.
l
a4
,
TIF_SIGPENDING
,
4
f
l32i
a4
,
a1
,
PT_DEPC
2
:
l32i
a4
,
a1
,
PT_DEPC
bgeui
a4
,
VALID_DOUBLE_EXCEPTION_ADDRESS
,
4
f
bgeui
a4
,
VALID_DOUBLE_EXCEPTION_ADDRESS
,
4
f
/
*
Call
do_signal
()
*/
/
*
Call
do_signal
()
*/
movi
a4
,
do_
signal
#
int
do_signal
(
struct
pt_regs
*,
sigset_t
*)
movi
a4
,
do_
notify_resume
#
int
do_notify_resume
(
struct
pt_regs
*)
mov
a6
,
a1
mov
a6
,
a1
callx4
a4
callx4
a4
j
1
b
j
1
b
...
...
arch/xtensa/kernel/signal.c
浏览文件 @
a53bb24e
...
@@ -20,6 +20,7 @@
...
@@ -20,6 +20,7 @@
#include <linux/ptrace.h>
#include <linux/ptrace.h>
#include <linux/personality.h>
#include <linux/personality.h>
#include <linux/freezer.h>
#include <linux/freezer.h>
#include <linux/tracehook.h>
#include <asm/ucontext.h>
#include <asm/ucontext.h>
#include <asm/uaccess.h>
#include <asm/uaccess.h>
...
@@ -446,16 +447,13 @@ asmlinkage long xtensa_sigaltstack(const stack_t __user *uss,
...
@@ -446,16 +447,13 @@ asmlinkage long xtensa_sigaltstack(const stack_t __user *uss,
* the kernel can handle, and then we build all the user-level signal handling
* the kernel can handle, and then we build all the user-level signal handling
* stack-frames in one go after that.
* stack-frames in one go after that.
*/
*/
void
do_signal
(
struct
pt_regs
*
regs
)
static
void
do_signal
(
struct
pt_regs
*
regs
)
{
{
siginfo_t
info
;
siginfo_t
info
;
int
signr
;
int
signr
;
struct
k_sigaction
ka
;
struct
k_sigaction
ka
;
sigset_t
oldset
;
sigset_t
oldset
;
if
(
!
user_mode
(
regs
))
return
;
if
(
try_to_freeze
())
if
(
try_to_freeze
())
goto
no_signal
;
goto
no_signal
;
...
@@ -542,3 +540,17 @@ void do_signal(struct pt_regs *regs)
...
@@ -542,3 +540,17 @@ void do_signal(struct pt_regs *regs)
return
;
return
;
}
}
void
do_notify_resume
(
struct
pt_regs
*
regs
)
{
if
(
!
user_mode
(
regs
))
return
;
if
(
test_thread_flag
(
TIF_SIGPENDING
))
do_signal
(
regs
);
if
(
test_and_clear_thread_flag
(
TIF_NOTIFY_RESUME
))
{
tracehook_notify_resume
(
regs
);
if
(
current
->
replacement_session_keyring
)
key_replace_session_keyring
();
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录