Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
rcore-os
RCore Tutorial V3
提交
0c9cb6f7
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,体验更适合开发者的 AI 搜索 >>
提交
0c9cb6f7
编写于
1月 06, 2021
作者:
Y
Yifan Wu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Wrap syscalls in user_lib && change xstate to exit_code
上级
0b33404a
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
19 addition
and
14 deletion
+19
-14
os/src/syscall/process.rs
os/src/syscall/process.rs
+2
-2
user/src/bin/03sleep.rs
user/src/bin/03sleep.rs
+4
-4
user/src/console.rs
user/src/console.rs
+4
-2
user/src/lib.rs
user/src/lib.rs
+7
-2
user/src/syscall.rs
user/src/syscall.rs
+2
-4
未找到文件。
os/src/syscall/process.rs
浏览文件 @
0c9cb6f7
...
...
@@ -4,8 +4,8 @@ use crate::task::{
};
use
crate
::
timer
::
get_time_ms
;
pub
fn
sys_exit
(
xstat
e
:
i32
)
->
!
{
println!
(
"[kernel] Application exited with code {}"
,
xstat
e
);
pub
fn
sys_exit
(
exit_cod
e
:
i32
)
->
!
{
println!
(
"[kernel] Application exited with code {}"
,
exit_cod
e
);
exit_current_and_run_next
();
panic!
(
"Unreachable in sys_exit!"
);
}
...
...
user/src/bin/03sleep.rs
浏览文件 @
0c9cb6f7
...
...
@@ -4,14 +4,14 @@
#[macro_use]
extern
crate
user_lib
;
use
user_lib
::{
sys_get_time
,
sys_yield
};
use
user_lib
::{
get_time
,
yield_
};
#[no_mangle]
fn
main
()
->
i32
{
let
current_timer
=
sys_
get_time
();
let
current_timer
=
get_time
();
let
wait_for
=
current_timer
+
3000
;
while
sys_
get_time
()
<
wait_for
{
sys_yield
();
while
get_time
()
<
wait_for
{
yield_
();
}
println!
(
"Test sleep OK!"
);
0
...
...
user/src/console.rs
浏览文件 @
0c9cb6f7
use
core
::
fmt
::{
self
,
Write
};
use
crate
::
syscall
::{
STDOUT
,
sys_write
}
;
use
super
::
write
;
struct
Stdout
;
const
STDOUT
:
usize
=
1
;
impl
Write
for
Stdout
{
fn
write_str
(
&
mut
self
,
s
:
&
str
)
->
fmt
::
Result
{
sys_
write
(
STDOUT
,
s
.as_bytes
());
write
(
STDOUT
,
s
.as_bytes
());
Ok
(())
}
}
...
...
user/src/lib.rs
浏览文件 @
0c9cb6f7
...
...
@@ -12,7 +12,7 @@ mod lang_items;
#[link_section
=
".text.entry"
]
pub
extern
"C"
fn
_
start
()
->
!
{
clear_bss
();
syscall
::
sys_
exit
(
main
());
exit
(
main
());
panic!
(
"unreachable after sys_exit!"
);
}
...
...
@@ -32,4 +32,9 @@ fn clear_bss() {
});
}
pub
use
syscall
::
*
;
\ No newline at end of file
use
syscall
::
*
;
pub
fn
write
(
fd
:
usize
,
buf
:
&
[
u8
])
->
isize
{
sys_write
(
fd
,
buf
)
}
pub
fn
exit
(
exit_code
:
i32
)
->
isize
{
sys_exit
(
exit_code
)
}
pub
fn
yield_
()
->
isize
{
sys_yield
()
}
pub
fn
get_time
()
->
isize
{
sys_get_time
()
}
\ No newline at end of file
user/src/syscall.rs
浏览文件 @
0c9cb6f7
pub
const
STDOUT
:
usize
=
1
;
const
SYSCALL_WRITE
:
usize
=
64
;
const
SYSCALL_EXIT
:
usize
=
93
;
const
SYSCALL_YIELD
:
usize
=
124
;
...
...
@@ -22,8 +20,8 @@ pub fn sys_write(fd: usize, buffer: &[u8]) -> isize {
syscall
(
SYSCALL_WRITE
,
[
fd
,
buffer
.as_ptr
()
as
usize
,
buffer
.len
()])
}
pub
fn
sys_exit
(
xstat
e
:
i32
)
->
isize
{
syscall
(
SYSCALL_EXIT
,
[
xstat
e
as
usize
,
0
,
0
])
pub
fn
sys_exit
(
exit_cod
e
:
i32
)
->
isize
{
syscall
(
SYSCALL_EXIT
,
[
exit_cod
e
as
usize
,
0
,
0
])
}
pub
fn
sys_yield
()
->
isize
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录