Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
rcore-os
RCore Tutorial V3
提交
a6b278fe
R
RCore Tutorial V3
项目概览
rcore-os
/
RCore Tutorial V3
上一次同步 1 年多
通知
15
Star
793
Fork
260
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
4
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
RCore Tutorial V3
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
4
Issue
4
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a6b278fe
编写于
4月 22, 2022
作者:
L
liusm18
1
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix coding style & add one more test
上级
ae1a5067
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
46 addition
and
4 deletion
+46
-4
os/src/task/mod.rs
os/src/task/mod.rs
+0
-2
user/src/bin/sig_tests.rs
user/src/bin/sig_tests.rs
+46
-2
未找到文件。
os/src/task/mod.rs
浏览文件 @
a6b278fe
...
...
@@ -9,7 +9,6 @@ mod action;
mod
task
;
use
crate
::
fs
::{
open_file
,
OpenFlags
};
use
crate
::
mm
::
translated_refmut
;
use
alloc
::
sync
::
Arc
;
pub
use
context
::
TaskContext
;
use
lazy_static
::
*
;
...
...
@@ -127,7 +126,6 @@ fn call_kernel_signal_handler(signal: SignalFlags) {
}
fn
call_user_signal_handler
(
sig
:
usize
,
signal
:
SignalFlags
)
{
let
token
=
current_user_token
();
let
task
=
current_task
()
.unwrap
();
let
mut
task_inner
=
task
.inner_exclusive_access
();
...
...
user/src/bin/sig_tests.rs
浏览文件 @
a6b278fe
...
...
@@ -11,6 +11,17 @@ fn func() {
sigreturn
();
}
fn
func2
()
{
loop
{
print!
(
""
);
}
}
fn
func3
()
{
println!
(
"interrupt"
);
sigreturn
();
}
fn
user_sig_test_failsignum
()
{
let
mut
new
=
SignalAction
::
default
();
let
old
=
SignalAction
::
default
();
...
...
@@ -113,6 +124,38 @@ fn kernel_sig_test_failignorekill() {
}
}
fn
final_sig_test
()
{
let
mut
new
=
SignalAction
::
default
();
let
old
=
SignalAction
::
default
();
new
.handler
=
func2
as
usize
;
let
mut
new2
=
SignalAction
::
default
();
let
old2
=
SignalAction
::
default
();
new2
.handler
=
func3
as
usize
;
let
pid
=
fork
();
if
pid
==
0
{
if
sigaction
(
10
,
&
new
,
&
old
)
<
0
{
panic!
(
"Sigaction failed!"
);
}
if
sigaction
(
14
,
&
new2
,
&
old2
)
<
0
{
panic!
(
"Sigaction failed!"
);
}
if
kill
(
getpid
()
as
usize
,
1
<<
10
)
<
0
{
println!
(
"Kill failed!"
);
exit
(
-
1
);
}
}
else
{
sleep
(
1000
);
if
kill
(
pid
as
usize
,
1
<<
14
)
<
0
{
println!
(
"Kill failed!"
);
exit
(
-
1
);
}
sleep
(
1000
);
kill
(
pid
as
usize
,
SignalFlags
::
SIGKILL
.bits
());
}
}
fn
run
(
f
:
fn
())
->
bool
{
let
pid
=
fork
();
...
...
@@ -133,14 +176,15 @@ fn run(f: fn()) -> bool {
#[no_mangle]
pub
fn
main
()
->
i32
{
let
tests
:
[(
fn
(),
&
str
);
7
]
=
[
let
tests
:
[(
fn
(),
&
str
);
8
]
=
[
(
user_sig_test_failsignum
,
"user_sig_test_failsignum"
),
(
user_sig_test_kill
,
"user_sig_test_kill"
),
(
user_sig_test_multiprocsignals
,
"user_sig_test_multiprocsignals"
),
(
user_sig_test_restore
,
"user_sig_test_restore"
),
(
kernel_sig_test_ignore
,
"kernel_sig_test_ignore"
),
(
kernel_sig_test_stop_cont
,
"kernel_sig_test_stop_cont"
),
(
kernel_sig_test_failignorekill
,
"kernel_sig_test_failignorekill"
)
(
kernel_sig_test_failignorekill
,
"kernel_sig_test_failignorekill"
),
(
final_sig_test
,
"final_sig_test"
)
];
let
mut
fail_num
=
0
;
for
test
in
tests
{
...
...
Miykael_xxm
🚴
@xiongjiamu
mentioned in commit
ac156ea9
·
4月 25, 2022
mentioned in commit
ac156ea9
mentioned in commit ac156ea980596150b26230317a9368b5b2939b3b
开关提交列表
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录