Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
rcore-os
RCore Tutorial V3
比较版本
e0e201a131c1a6418edecec6768de04b52f42c29...d56c5d1229bd1addf9a61deab438105b44e34ac9
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 搜索 >>
源分支
d56c5d1229bd1addf9a61deab438105b44e34ac9
选择Git版本
...
目标分支
e0e201a131c1a6418edecec6768de04b52f42c29
选择Git版本
比较
Commits (2)
https://gitcode.net/rcore-os/rCore-Tutorial-v3/-/commit/cd2e2307d230341ad9e0c692aebe7b0c0610b055
explicitly UART.init() in rust_main
2023-01-03T09:32:36+08:00
Yu Chen
yuchen@mail.tsinghua.edu.cn
https://gitcode.net/rcore-os/rCore-Tutorial-v3/-/commit/d56c5d1229bd1addf9a61deab438105b44e34ac9
update move_rect Fn
2023-01-03T18:34:45+08:00
Yu Chen
yuchen@mail.tsinghua.edu.cn
隐藏空白更改
内联
并排
Showing
4 changed file
with
18 addition
and
1 deletion
+18
-1
os/src/drivers/chardev/mod.rs
os/src/drivers/chardev/mod.rs
+1
-0
os/src/drivers/chardev/ns16550a.rs
os/src/drivers/chardev/ns16550a.rs
+7
-1
os/src/gui/paint.rs
os/src/gui/paint.rs
+7
-0
os/src/main.rs
os/src/main.rs
+3
-0
未找到文件。
os/src/drivers/chardev/mod.rs
浏览文件 @
d56c5d12
...
...
@@ -6,6 +6,7 @@ use lazy_static::*;
pub
use
ns16550a
::
NS16550a
;
pub
trait
CharDevice
{
fn
init
(
&
self
);
fn
read
(
&
self
)
->
u8
;
fn
write
(
&
self
,
ch
:
u8
);
fn
handle_irq
(
&
self
);
...
...
os/src/drivers/chardev/ns16550a.rs
浏览文件 @
d56c5d12
...
...
@@ -135,7 +135,7 @@ impl<const BASE_ADDR: usize> NS16550a<BASE_ADDR> {
ns16550a
:
NS16550aRaw
::
new
(
BASE_ADDR
),
read_buffer
:
VecDeque
::
new
(),
};
inner
.ns16550a
.init
();
//
inner.ns16550a.init();
Self
{
inner
:
unsafe
{
UPIntrFreeCell
::
new
(
inner
)
},
condvar
:
Condvar
::
new
(),
...
...
@@ -144,6 +144,12 @@ impl<const BASE_ADDR: usize> NS16550a<BASE_ADDR> {
}
impl
<
const
BASE_ADDR
:
usize
>
CharDevice
for
NS16550a
<
BASE_ADDR
>
{
fn
init
(
&
self
){
let
mut
inner
=
self
.inner
.exclusive_access
();
inner
.ns16550a
.init
();
drop
(
inner
);
}
fn
read
(
&
self
)
->
u8
{
loop
{
let
mut
inner
=
self
.inner
.exclusive_access
();
...
...
os/src/gui/paint.rs
浏览文件 @
d56c5d12
...
...
@@ -28,7 +28,14 @@ impl DrawingBoard {
.draw
(
&
mut
self
.graphics
)
.ok
();
}
fn
unpaint
(
&
mut
self
)
{
Rectangle
::
with_center
(
self
.latest_pos
,
Size
::
new
(
RECT_SIZE
,
RECT_SIZE
))
.into_styled
(
PrimitiveStyle
::
with_stroke
(
Rgb888
::
BLACK
,
1
))
.draw
(
&
mut
self
.graphics
)
.ok
();
}
pub
fn
move_rect
(
&
mut
self
,
dx
:
i32
,
dy
:
i32
)
{
self
.unpaint
();
self
.latest_pos.x
+=
dx
;
self
.latest_pos.y
+=
dy
;
self
.paint
();
...
...
os/src/main.rs
浏览文件 @
d56c5d12
...
...
@@ -28,6 +28,8 @@ mod task;
mod
timer
;
mod
trap
;
use
crate
::
drivers
::
chardev
::
CharDevice
;
use
crate
::
drivers
::
chardev
::
UART
;
//use syscall::create_desktop; //for test
core
::
arch
::
global_asm!
(
include_str!
(
"entry.asm"
));
...
...
@@ -55,6 +57,7 @@ lazy_static! {
pub
fn
rust_main
()
->
!
{
clear_bss
();
mm
::
init
();
UART
.init
();
println!
(
"KERN: init gpu"
);
let
_
gpu
=
GPU_DEVICE
.clone
();
println!
(
"KERN: init keyboard"
);
...
...