Skip to content

Commit 4e73a82

Browse files
committed
Bump Rust version to nightly-2025-02-18(2024 Edition)
1 parent e0bf2de commit 4e73a82

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

82 files changed

+375
-313
lines changed

.github/workflows/doc-and-test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ on: [push]
44

55
env:
66
CARGO_TERM_COLOR: always
7-
rust_toolchain: nightly-2024-01-18
7+
rust_toolchain: nightly-2025-02-18
88

99
jobs:
1010
build-doc:

os/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
name = "os"
33
version = "0.1.0"
44
authors = ["Yifan Wu <[email protected]>"]
5-
edition = "2021"
5+
edition = "2024"
66

77
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
88

os/src/drivers/block/virtio_blk.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use super::BlockDevice;
22
use crate::mm::{
3-
frame_alloc, frame_dealloc, kernel_token, FrameTracker, PageTable, PhysAddr, PhysPageNum,
4-
StepByOne, VirtAddr,
3+
FrameTracker, PageTable, PhysAddr, PhysPageNum, StepByOne, VirtAddr, frame_alloc,
4+
frame_dealloc, kernel_token,
55
};
66
use crate::sync::UPSafeCell;
77
use alloc::vec::Vec;

os/src/fs/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ pub trait File: Send + Sync {
1111
fn write(&self, buf: UserBuffer) -> usize;
1212
}
1313

14-
pub use inode::{list_apps, open_file, OpenFlags};
14+
pub use inode::{OpenFlags, list_apps, open_file};
1515
pub use pipe::make_pipe;
1616
pub use stdio::{Stdin, Stdout};

os/src/lang_items.rs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,28 +11,30 @@ fn panic(info: &PanicInfo) -> ! {
1111
"[kernel] Panicked at {}:{} {}",
1212
location.file(),
1313
location.line(),
14-
info.message().unwrap()
14+
info.message()
1515
);
1616
} else {
17-
error!("[kernel] Panicked: {}", info.message().unwrap());
18-
}
19-
unsafe {
20-
backtrace();
17+
error!("[kernel] Panicked: {}", info.message());
2118
}
19+
backtrace();
2220
shutdown(true)
2321
}
2422

25-
unsafe fn backtrace() {
23+
fn backtrace() {
2624
let mut fp: usize;
2725
let stop = current_kstack_top();
28-
asm!("mv {}, s0", out(reg) fp);
26+
unsafe {
27+
asm!("mv {}, s0", out(reg) fp);
28+
}
2929
println!("---START BACKTRACE---");
3030
for i in 0..10 {
3131
if fp == stop {
3232
break;
3333
}
34-
println!("#{}:ra={:#x}", i, *((fp - 8) as *const usize));
35-
fp = *((fp - 16) as *const usize);
34+
unsafe {
35+
println!("#{}:ra={:#x}", i, *((fp - 8) as *const usize));
36+
fp = *((fp - 16) as *const usize);
37+
}
3638
}
3739
println!("---END BACKTRACE---");
3840
}

os/src/main.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
#![no_std]
22
#![no_main]
3-
#![feature(panic_info_message)]
43
#![feature(alloc_error_handler)]
54

65
extern crate alloc;
@@ -33,17 +32,18 @@ use core::arch::global_asm;
3332
global_asm!(include_str!("entry.asm"));
3433

3534
fn clear_bss() {
36-
extern "C" {
37-
fn sbss();
38-
fn ebss();
35+
unsafe extern "C" {
36+
safe fn sbss();
37+
safe fn ebss();
3938
}
4039
unsafe {
4140
core::slice::from_raw_parts_mut(sbss as usize as *mut u8, ebss as usize - sbss as usize)
4241
.fill(0);
4342
}
4443
}
4544

46-
#[no_mangle]
45+
/// the rust entry-point of os
46+
#[unsafe(no_mangle)]
4747
pub fn rust_main() -> ! {
4848
clear_bss();
4949
logging::init();

os/src/mm/frame_allocator.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,8 @@ lazy_static! {
8888
}
8989

9090
pub fn init_frame_allocator() {
91-
extern "C" {
92-
fn ekernel();
91+
unsafe extern "C" {
92+
safe fn ekernel();
9393
}
9494
FRAME_ALLOCATOR.exclusive_access().init(
9595
PhysAddr::from(ekernel as usize).ceil(),

os/src/mm/heap_allocator.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use crate::config::KERNEL_HEAP_SIZE;
22
use buddy_system_allocator::LockedHeap;
3+
use core::ptr::addr_of_mut;
34

45
#[global_allocator]
56
static HEAP_ALLOCATOR: LockedHeap = LockedHeap::empty();
@@ -15,17 +16,17 @@ pub fn init_heap() {
1516
unsafe {
1617
HEAP_ALLOCATOR
1718
.lock()
18-
.init(HEAP_SPACE.as_ptr() as usize, KERNEL_HEAP_SIZE);
19+
.init(addr_of_mut!(HEAP_SPACE) as usize, KERNEL_HEAP_SIZE);
1920
}
2021
}
2122

2223
#[allow(unused)]
2324
pub fn heap_test() {
2425
use alloc::boxed::Box;
2526
use alloc::vec::Vec;
26-
extern "C" {
27-
fn sbss();
28-
fn ebss();
27+
unsafe extern "C" {
28+
safe fn sbss();
29+
safe fn ebss();
2930
}
3031
let bss_range = sbss as usize..ebss as usize;
3132
let a = Box::new(5);

os/src/mm/memory_set.rs

Lines changed: 33 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use super::{frame_alloc, FrameTracker};
1+
use super::{FrameTracker, frame_alloc};
22
use super::{PTEFlags, PageTable, PageTableEntry};
33
use super::{PhysAddr, PhysPageNum, VirtAddr, VirtPageNum};
44
use super::{StepByOne, VPNRange};
@@ -11,17 +11,17 @@ use core::arch::asm;
1111
use lazy_static::*;
1212
use riscv::register::satp;
1313

14-
extern "C" {
15-
fn stext();
16-
fn etext();
17-
fn srodata();
18-
fn erodata();
19-
fn sdata();
20-
fn edata();
21-
fn sbss_with_stack();
22-
fn ebss();
23-
fn ekernel();
24-
fn strampoline();
14+
unsafe extern "C" {
15+
safe fn stext();
16+
safe fn etext();
17+
safe fn srodata();
18+
safe fn erodata();
19+
safe fn sdata();
20+
safe fn edata();
21+
safe fn sbss_with_stack();
22+
safe fn ebss();
23+
safe fn ekernel();
24+
safe fn strampoline();
2525
}
2626

2727
lazy_static! {
@@ -351,20 +351,26 @@ pub fn remap_test() {
351351
let mid_text: VirtAddr = ((stext as usize + etext as usize) / 2).into();
352352
let mid_rodata: VirtAddr = ((srodata as usize + erodata as usize) / 2).into();
353353
let mid_data: VirtAddr = ((sdata as usize + edata as usize) / 2).into();
354-
assert!(!kernel_space
355-
.page_table
356-
.translate(mid_text.floor())
357-
.unwrap()
358-
.writable(),);
359-
assert!(!kernel_space
360-
.page_table
361-
.translate(mid_rodata.floor())
362-
.unwrap()
363-
.writable(),);
364-
assert!(!kernel_space
365-
.page_table
366-
.translate(mid_data.floor())
367-
.unwrap()
368-
.executable(),);
354+
assert!(
355+
!kernel_space
356+
.page_table
357+
.translate(mid_text.floor())
358+
.unwrap()
359+
.writable(),
360+
);
361+
assert!(
362+
!kernel_space
363+
.page_table
364+
.translate(mid_rodata.floor())
365+
.unwrap()
366+
.writable(),
367+
);
368+
assert!(
369+
!kernel_space
370+
.page_table
371+
.translate(mid_data.floor())
372+
.unwrap()
373+
.executable(),
374+
);
369375
println!("remap_test passed!");
370376
}

os/src/mm/mod.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ mod page_table;
66

77
use address::VPNRange;
88
pub use address::{PhysAddr, PhysPageNum, StepByOne, VirtAddr, VirtPageNum};
9-
pub use frame_allocator::{frame_alloc, frame_dealloc, FrameTracker};
9+
pub use frame_allocator::{FrameTracker, frame_alloc, frame_dealloc};
1010
pub use memory_set::remap_test;
11-
pub use memory_set::{kernel_token, MapPermission, MemorySet, KERNEL_SPACE};
11+
pub use memory_set::{KERNEL_SPACE, MapPermission, MemorySet, kernel_token};
1212
use page_table::PTEFlags;
1313
pub use page_table::{
14-
translated_byte_buffer, translated_ref, translated_refmut, translated_str, PageTable,
15-
PageTableEntry, UserBuffer,
14+
PageTable, PageTableEntry, UserBuffer, translated_byte_buffer, translated_ref,
15+
translated_refmut, translated_str,
1616
};
1717

1818
pub fn init() {

0 commit comments

Comments
 (0)