Skip to content

Commit 969ca1b

Browse files
authored
Merge pull request #11 from Rustin-Liu/rustin-patch-ci
ci: add fmt and clippy check
2 parents fea585c + 41cbe01 commit 969ca1b

File tree

21 files changed

+91
-100
lines changed

21 files changed

+91
-100
lines changed

.github/workflows/main.yml

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,26 @@ name: CI
33
on: [push, pull_request]
44

55
jobs:
6+
check:
7+
runs-on: ubuntu-latest
8+
steps:
9+
- uses: actions/checkout@v2
10+
- uses: actions-rs/toolchain@v1
11+
with:
12+
components: rustfmt, clippy
13+
- name: Setup Environment
14+
run: cd os && make env
15+
- name: Check user
16+
run: cd usr/rust/ && cargo fmt -- --check && cargo clippy -- -D warnings
17+
- name: Check os
18+
run: export USER_IMG="../usr/build/riscv64.img" && cd os && cargo fmt -- --check && cargo clippy -- -D warnings
619
build:
720
runs-on: ubuntu-latest
821
steps:
9-
- uses: actions/checkout@v2
10-
- name: Setup Environment
11-
run: cd os && make env
12-
- name: Build user
13-
run: cd usr && make user_img
14-
- name: Build kernel
15-
run: cd os && make build
22+
- uses: actions/checkout@v2
23+
- name: Setup Environment
24+
run: cd os && make env
25+
- name: Build user
26+
run: cd usr && make user_img
27+
- name: Build kernel
28+
run: cd os && make build

os/src/context.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ pub struct Context {
1919
impl Context {
2020
#[naked]
2121
#[inline(never)]
22-
pub unsafe extern "C" fn switch(&mut self, target: &mut Context) {
22+
pub unsafe extern "C" fn switch(&mut self, _target: &mut Context) {
2323
llvm_asm!(include_str!("process/switch.asm") :::: "volatile");
2424
}
2525

@@ -62,7 +62,7 @@ extern "C" {
6262

6363
impl ContextContent {
6464
fn new_kernel_thread(entry: usize, kstack_top: usize, satp: usize) -> ContextContent {
65-
let content = ContextContent {
65+
ContextContent {
6666
ra: __trapret as usize,
6767
satp,
6868
s: [0; 12],
@@ -76,8 +76,7 @@ impl ContextContent {
7676
tf.sstatus.set_sie(false);
7777
tf
7878
},
79-
};
80-
content
79+
}
8180
}
8281

8382
fn new_user_thread(entry: usize, ustack_top: usize, satp: usize) -> Self {

os/src/fs/file.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@ use rcore_fs::vfs::INode;
44

55
#[derive(Copy, Clone, Debug)]
66
pub enum FileDescriptorType {
7-
FD_NONE,
8-
FD_INODE,
9-
FD_DEVICE,
7+
FdNone,
8+
FdInode,
9+
#[allow(dead_code)]
10+
FdDevice,
1011
}
1112

1213
#[derive(Clone)]
@@ -21,7 +22,7 @@ pub struct File {
2122
impl File {
2223
pub fn default() -> Self {
2324
File {
24-
fdtype: FileDescriptorType::FD_NONE,
25+
fdtype: FileDescriptorType::FdNone,
2526
readable: false,
2627
writable: false,
2728
inode: None,
@@ -53,8 +54,9 @@ impl File {
5354
self.offset
5455
}
5556

57+
#[allow(unused_unsafe)]
5658
pub fn open_file(&mut self, path: &'static str, flags: i32) {
57-
self.set_fdtype(FileDescriptorType::FD_INODE);
59+
self.set_fdtype(FileDescriptorType::FdInode);
5860
self.set_readable(true);
5961
if (flags & 1) > 0 {
6062
self.set_readable(false);

os/src/interrupt.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,15 @@ pub fn init() {
3232
}
3333

3434
pub unsafe fn init_external_interrupt() {
35-
let HART0_S_MODE_INTERRUPT_ENABLES: *mut u32 = access_pa_via_va(0x0c00_2080) as *mut u32;
35+
let hart0_s_mode_interrupt_enables: *mut u32 = access_pa_via_va(0x0c00_2080) as *mut u32;
3636
const SERIAL: u32 = 0xa;
37-
HART0_S_MODE_INTERRUPT_ENABLES.write_volatile(1 << SERIAL);
37+
hart0_s_mode_interrupt_enables.write_volatile(1 << SERIAL);
3838
}
3939

4040
pub unsafe fn enable_serial_interrupt() {
41-
let UART16550: *mut u8 = access_pa_via_va(0x10000000) as *mut u8;
42-
UART16550.add(4).write_volatile(0x0B);
43-
UART16550.add(1).write_volatile(0x01);
41+
let uart16550: *mut u8 = access_pa_via_va(0x10000000) as *mut u8;
42+
uart16550.add(4).write_volatile(0x0B);
43+
uart16550.add(1).write_volatile(0x01);
4444
}
4545

4646
#[no_mangle]

os/src/io.rs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,6 @@ macro_rules! println {
3737
($($arg:tt)*) => ($crate::print!("{}\n", format_args!($($arg)*)));
3838
}
3939

40-
pub fn getchar() -> char {
41-
let c = sbi::console_getchar() as u8;
42-
43-
match c {
44-
255 => '\0',
45-
c => c as char,
46-
}
47-
}
4840
// 调用 OpenSBI 接口
4941
pub fn getchar_option() -> Option<char> {
5042
let c = sbi::console_getchar() as isize;

os/src/main.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22
#![no_main]
33

44
#[allow(unused_imports)]
5+
#[allow(clippy::single_component_path_imports)]
56
use os;

os/src/memory/frame_allocator.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ impl SegmentTreeAllocator {
1414
self.n = r - l;
1515
self.m = 1;
1616
while self.m < self.n + 2 {
17-
self.m = self.m << 1;
17+
self.m <<= 1;
1818
}
1919
for i in 1..(self.m << 1) {
2020
self.a[i] = 1;
@@ -35,7 +35,7 @@ impl SegmentTreeAllocator {
3535
let mut p = 1;
3636
while p < self.m {
3737
if self.a[p << 1] == 0 {
38-
p = p << 1;
38+
p <<= 1;
3939
} else {
4040
p = (p << 1) | 1;
4141
}

os/src/memory/memory_set/area.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ impl MemoryArea {
1717
self.handler.map(pt, page, &self.attr);
1818
}
1919
}
20+
21+
#[allow(dead_code)]
2022
fn unmap(&self, pt: &mut PageTableImpl) {
2123
for page in PageRange::new(self.start, self.end) {
2224
self.handler.unmap(pt, page);
@@ -40,8 +42,8 @@ impl MemoryArea {
4042
MemoryArea {
4143
start: start_addr,
4244
end: end_addr,
43-
handler: handler,
44-
attr: attr,
45+
handler,
46+
attr,
4547
}
4648
}
4749

os/src/memory/memory_set/attr.rs

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,13 @@
11
use crate::memory::paging::PageEntry;
22

3-
#[derive(Clone, Debug)]
3+
#[derive(Clone, Default, Debug)]
44
pub struct MemoryAttr {
55
user: bool,
66
readonly: bool,
77
execute: bool,
88
}
99

1010
impl MemoryAttr {
11-
pub fn new() -> Self {
12-
MemoryAttr {
13-
user: false,
14-
readonly: false,
15-
execute: false,
16-
}
17-
}
18-
1911
pub fn set_user(mut self) -> Self {
2012
self.user = true;
2113
self

os/src/memory/memory_set/handler.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,9 @@ impl MemoryHandler for Linear {
4747
let dst = core::slice::from_raw_parts_mut(va as *mut u8, PAGE_SIZE);
4848
if length > 0 {
4949
let src = core::slice::from_raw_parts(src as *const u8, PAGE_SIZE);
50-
for i in 0..length {
51-
dst[i] = src[i];
52-
}
50+
dst[..length].clone_from_slice(&src[..length]);
5351
}
52+
#[allow(clippy::needless_range_loop)]
5453
for i in length..PAGE_SIZE {
5554
dst[i] = 0;
5655
}
@@ -85,10 +84,9 @@ impl MemoryHandler for ByFrame {
8584
let dst = core::slice::from_raw_parts_mut(access_pa_via_va(pa) as *mut u8, PAGE_SIZE);
8685
if length > 0 {
8786
let src = core::slice::from_raw_parts(src as *const u8, PAGE_SIZE);
88-
for i in 0..length {
89-
dst[i] = src[i];
90-
}
87+
dst[..length].clone_from_slice(&src[..length]);
9188
}
89+
#[allow(clippy::needless_range_loop)]
9290
for i in length..PAGE_SIZE {
9391
dst[i] = 0;
9492
}

os/src/memory/memory_set/mod.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,39 +68,39 @@ impl MemorySet {
6868
self.push(
6969
stext as usize,
7070
etext as usize,
71-
MemoryAttr::new().set_readonly().set_execute(),
71+
MemoryAttr::default().set_readonly().set_execute(),
7272
Linear::new(offset),
7373
None,
7474
);
7575
// .rodata R
7676
self.push(
7777
srodata as usize,
7878
erodata as usize,
79-
MemoryAttr::new().set_readonly(),
79+
MemoryAttr::default().set_readonly(),
8080
Linear::new(offset),
8181
None,
8282
);
8383
// .data R|W
8484
self.push(
8585
sdata as usize,
8686
edata as usize,
87-
MemoryAttr::new(),
87+
MemoryAttr::default(),
8888
Linear::new(offset),
8989
None,
9090
);
9191
// .bss R|W
9292
self.push(
9393
sbss as usize,
9494
ebss as usize,
95-
MemoryAttr::new(),
95+
MemoryAttr::default(),
9696
Linear::new(offset),
9797
None,
9898
);
9999
// 物理内存 R|W
100100
self.push(
101101
(end as usize / PAGE_SIZE + 1) * PAGE_SIZE,
102102
access_pa_via_va(PHYSICAL_MEMORY_END),
103-
MemoryAttr::new(),
103+
MemoryAttr::default(),
104104
Linear::new(offset),
105105
None,
106106
);

os/src/memory/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,21 +50,21 @@ pub fn kernel_remap() {
5050
memory_set.push(
5151
bootstack as usize,
5252
bootstacktop as usize,
53-
MemoryAttr::new(),
53+
MemoryAttr::default(),
5454
Linear::new(PHYSICAL_MEMORY_OFFSET),
5555
None,
5656
);
5757
memory_set.push(
5858
access_pa_via_va(0x0c00_2000),
5959
access_pa_via_va(0x0c00_3000),
60-
MemoryAttr::new(),
60+
MemoryAttr::default(),
6161
Linear::new(PHYSICAL_MEMORY_OFFSET),
6262
None,
6363
);
6464
memory_set.push(
6565
access_pa_via_va(0x1000_0000),
6666
access_pa_via_va(0x1000_1000),
67-
MemoryAttr::new(),
67+
MemoryAttr::default(),
6868
Linear::new(PHYSICAL_MEMORY_OFFSET),
6969
None,
7070
);

os/src/memory/paging.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ impl PageTableImpl {
122122

123123
pub fn get_entry(&mut self, va: usize) -> Option<&mut PageEntry> {
124124
let page = Page::of_addr(VirtAddr::new(va));
125-
if let Ok(e) = self.page_table.ref_entry(page.clone()) {
125+
if let Ok(e) = self.page_table.ref_entry(page) {
126126
let e = unsafe { &mut *(e as *mut PageTableEntry) };
127127
self.entry = Some(PageEntry(e, page));
128128
Some(self.entry.as_mut().unwrap())

os/src/process/processor.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ impl Processor {
3434
}
3535
}
3636

37+
#[allow(clippy::mut_from_ref)]
3738
fn inner(&self) -> &mut ProcessorInner {
3839
unsafe { &mut *self.inner.get() }
3940
.as_mut()
@@ -68,14 +69,12 @@ impl Processor {
6869

6970
pub fn tick(&self) {
7071
let inner = self.inner();
71-
if !inner.current.is_none() {
72-
if inner.pool.tick() {
73-
let flags = disable_and_store();
72+
if inner.current.is_some() && inner.pool.tick() {
73+
let flags = disable_and_store();
7474

75-
inner.current.as_mut().unwrap().1.switch_to(&mut inner.idle);
75+
inner.current.as_mut().unwrap().1.switch_to(&mut inner.idle);
7676

77-
restore(flags);
78-
}
77+
restore(flags);
7978
}
8079
}
8180

@@ -100,9 +99,10 @@ impl Processor {
10099
Thread::get_boot_thread().switch_to(&mut self.inner().idle);
101100
}
102101

102+
#[allow(unused_unsafe)]
103103
pub fn yield_now(&self) {
104104
let inner = self.inner();
105-
if !inner.current.is_none() {
105+
if inner.current.is_some() {
106106
unsafe {
107107
let flags = disable_and_store();
108108
let tid = inner.current.as_mut().unwrap().0;
@@ -132,6 +132,7 @@ impl Processor {
132132
self.inner().current.as_mut().unwrap().0 as usize
133133
}
134134

135+
#[allow(clippy::mut_from_ref)]
135136
pub fn current_thread_mut(&self) -> &mut Thread {
136137
self.inner().current.as_mut().unwrap().1.as_mut()
137138
}

os/src/process/scheduler.rs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,9 @@ impl Scheduler for RRScheduler {
7979
let tid = self.current;
8080
if tid != 0 {
8181
self.threads[tid].time -= 1;
82-
if self.threads[tid].time == 0 {
83-
return true;
84-
} else {
85-
return false;
86-
}
82+
return self.threads[tid].time == 0;
8783
}
88-
return true;
84+
true
8985
}
9086

9187
fn exit(&mut self, tid: Tid) {

0 commit comments

Comments
 (0)