Skip to content

Commit 23f441e

Browse files
committed
feat: use latest polyhal and fmt code
1 parent fe410e0 commit 23f441e

22 files changed

+60
-56
lines changed

Cargo.lock

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

byteos.yaml

+6
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,9 @@ bin:
3030
build_std: "core,alloc"
3131
configs:
3232
driver: "kramdisk"
33+
loongarch64-2k1000:
34+
target: "loongarch64-unknown-none"
35+
build_std: "core,alloc"
36+
configs:
37+
driver: "kramdisk"
38+
board: "2k1000"

kernel/build.rs

+5-1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ fn main() {
4444

4545
fn gen_linker_script(platform: &str) -> Result<()> {
4646
let arch = env::var("CARGO_CFG_TARGET_ARCH").expect("can't find target");
47+
let board = env::var("CARGO_CFG_BOARD").unwrap_or("qemu".to_string());
4748
let fname = format!("linker_{}_{}.lds", arch, platform);
4849
let (output_arch, kernel_base) = if arch == "x86_64" {
4950
("i386:x86-64", "0xffffff8000200000")
@@ -54,7 +55,10 @@ fn gen_linker_script(platform: &str) -> Result<()> {
5455
("aarch64", "0xffffff8040080000")
5556
// ("aarch64", "0xffff000040080000")
5657
} else if arch.contains("loongarch64") {
57-
("loongarch64", "0x9000000090000000")
58+
match board.as_str() {
59+
"2k1000" => ("loongarch64", "0x9000000098000000"),
60+
_ => ("loongarch64", "0x9000000090000000"),
61+
}
5862
} else {
5963
(arch.as_str(), "0")
6064
};

kernel/src/main.rs

+13-17
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,12 @@ mod user;
3131

3232
use core::sync::atomic::{AtomicBool, Ordering};
3333

34-
use polyhal::addr::{PhysPage, VirtPage};
35-
use polyhal::{
36-
disable_irq, enable_irq, get_mem_areas, PageAlloc, TrapFrame, TrapFrameArgs, TrapType,
37-
VIRT_ADDR_START,
38-
};
3934
use devices::{self, get_int_device};
4035
use executor::current_task;
4136
use frame_allocator::{self, frame_alloc_persist, frame_unalloc};
42-
use hal;
37+
use polyhal::addr::{PhysPage, VirtPage};
38+
use polyhal::irq::IRQ;
39+
use polyhal::{get_mem_areas, PageAlloc, TrapFrame, TrapFrameArgs, TrapType, VIRT_ADDR_START};
4340
use tasks::UserTask;
4441
use user::user_cow_int;
4542
use vfscore::OpenFlags;
@@ -139,9 +136,12 @@ fn kernel_interrupt(cx_ref: &mut TrapFrame, trap_type: TrapType) {
139136
#[polyhal::arch_entry]
140137
fn main(hart_id: usize) {
141138
static BOOT_CORE_FLAGS: AtomicBool = AtomicBool::new(false);
142-
disable_irq();
139+
IRQ::int_disable();
143140
// Ensure this is the first core
144-
if BOOT_CORE_FLAGS.compare_exchange(false, true, Ordering::Acquire, Ordering::Relaxed).is_ok() {
141+
if BOOT_CORE_FLAGS
142+
.compare_exchange(false, true, Ordering::Acquire, Ordering::Relaxed)
143+
.is_ok()
144+
{
145145
extern "C" {
146146
fn start();
147147
fn end();
@@ -157,6 +157,7 @@ fn main(hart_id: usize) {
157157

158158
polyhal::init(&PageAllocImpl);
159159
get_mem_areas().into_iter().for_each(|(start, size)| {
160+
info!("memory area: {:#x} - {:#x}", start, start + size);
160161
frame_allocator::add_frame_map(start, start + size);
161162
});
162163

@@ -175,12 +176,11 @@ fn main(hart_id: usize) {
175176
}
176177
}
177178

178-
// initialize interrupt
179-
hal::interrupt::init();
180-
181179
// get devices and init
182180
devices::regist_devices_irq();
183181

182+
polyhal::instruction::Instruction::ebreak();
183+
184184
// initialize filesystem
185185
fs::init();
186186
{
@@ -204,7 +204,7 @@ fn main(hart_id: usize) {
204204
}
205205

206206
// enable interrupts
207-
enable_irq();
207+
IRQ::int_enable();
208208

209209
// cache task with task templates
210210
// crate::syscall::cache_task_template("/bin/busybox").expect("can't cache task");
@@ -228,11 +228,7 @@ fn main(hart_id: usize) {
228228
} else {
229229
println!("run kernel @ hart {}", hart_id);
230230

231-
// initialize interrupt
232-
hal::interrupt::init();
233-
234-
// enable_irq();
235-
enable_irq();
231+
IRQ::int_enable();
236232
// loop { arch::wfi() }
237233
tasks::run_tasks();
238234
info!("shutdown ap core");

kernel/src/socket.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
use core::{cmp, net::SocketAddrV4};
22

33
use alloc::{sync::Arc, vec::Vec};
4-
use polyhal::debug::DebugConsole;
54
use fs::INodeInterface;
65
use lose_net_stack::net_trait::SocketInterface;
6+
use polyhal::debug::DebugConsole;
77
use sync::Mutex;
88
use vfscore::{Metadata, PollEvent, VfsResult};
99

kernel/src/syscall/consts.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44
use core::fmt::{Debug, Display};
55
use core::marker::PhantomData;
66

7-
use polyhal::addr::VirtAddr;
8-
use polyhal::pagetable::MappingFlags;
9-
use polyhal::TrapFrame;
107
use bitflags::bitflags;
118
use cfg_if::cfg_if;
129
use fs::VfsError;
1310
use hal::TimeVal;
1411
use num_derive::FromPrimitive;
12+
use polyhal::addr::VirtAddr;
13+
use polyhal::pagetable::MappingFlags;
14+
use polyhal::TrapFrame;
1515
use signal::SigProcMask;
1616

1717
#[repr(i32)]

kernel/src/syscall/fd.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ use num_traits::FromPrimitive;
55
use vfscore::FileType;
66

77
use alloc::sync::Arc;
8-
use polyhal::addr::VirtAddr;
98
use bit_field::BitArray;
109
use executor::yield_now;
1110
use fs::pipe::create_pipe;
1211
use fs::{OpenFlags, PollEvent, PollFd, SeekFrom, Stat, StatFS, StatMode, TimeSpec, UTIME_NOW};
1312
use log::debug;
13+
use polyhal::addr::VirtAddr;
1414

1515
use crate::epoll::{EpollEvent, EpollFile};
1616
use crate::syscall::consts::{from_vfs, FcntlCmd, IoVec, AT_CWD};

kernel/src/syscall/mm.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
use core::ops::Add;
22

3+
use frame_allocator::ceil_div;
4+
use log::debug;
35
use polyhal::addr::{VirtAddr, VirtPage};
46
use polyhal::PAGE_SIZE;
57
use polyhal::USER_VADDR_END;
6-
use frame_allocator::ceil_div;
7-
use log::debug;
88

99
use crate::syscall::consts::from_vfs;
1010
use crate::syscall::consts::MSyncFlags;

kernel/src/syscall/shm.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ use core::ops::Add;
22

33
use crate::tasks::{MapedSharedMemory, SharedMemory, SHARED_MEMORY};
44
use alloc::{sync::Arc, vec::Vec};
5-
use polyhal::addr::{VirtAddr, VirtPage};
6-
use polyhal::{pagetable::MappingFlags, PAGE_SIZE};
75
use frame_allocator::{ceil_div, frame_alloc_much, FrameTracker};
86
use log::debug;
7+
use polyhal::addr::{VirtAddr, VirtPage};
8+
use polyhal::{pagetable::MappingFlags, PAGE_SIZE};
99

1010
use crate::user::UserTaskContainer;
1111

kernel/src/syscall/sys.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,8 @@ impl UserTaskContainer {
149149
#[cfg(target_arch = "x86_64")]
150150
pub async fn sys_arch_prctl(&self, code: usize, addr: usize) -> SysResult {
151151
use crate::syscall::consts::{ArchPrctlCode, LinuxError};
152-
use arch::TrapFrameArgs;
153152
use num_traits::FromPrimitive;
153+
use polyhal::TrapFrameArgs;
154154

155155
let arch_prctl_code = FromPrimitive::from_usize(code).ok_or(LinuxError::EINVAL)?;
156156
debug!(

kernel/src/syscall/task.rs

+1-6
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,6 @@ use alloc::{
1616
vec::Vec,
1717
{boxed::Box, sync::Arc},
1818
};
19-
use polyhal::{
20-
addr::VirtPage,
21-
pagetable::MappingFlags,
22-
time::Time,
23-
{TrapFrameArgs, PAGE_SIZE},
24-
};
2519
use async_recursion::async_recursion;
2620
use core::cmp;
2721
use executor::{select, thread, tid2task, yield_now, AsyncTask};
@@ -31,6 +25,7 @@ use fs::TimeSpec;
3125
use hal::{current_nsec, TimeVal};
3226
use log::{debug, warn};
3327
use num_traits::FromPrimitive;
28+
use polyhal::{addr::VirtPage, pagetable::MappingFlags, time::Time, TrapFrameArgs, PAGE_SIZE};
3429
use signal::SignalFlags;
3530
use sync::Mutex;
3631
use vfscore::OpenFlags;

kernel/src/syscall/time.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ use core::{
55
task::{Context, Poll},
66
};
77

8-
use polyhal::time::Time;
98
use executor::select;
109
use fs::TimeSpec;
1110
pub use hal::current_nsec;
1211
use hal::{ITimerVal, TimeVal};
1312
use log::{debug, warn};
13+
use polyhal::time::Time;
1414

1515
use crate::{
1616
tasks::{WaitHandleAbleSignal, TMS},

kernel/src/tasks/async_ops.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
use core::{cmp, future::Future, pin::Pin, task::Poll};
22

33
use alloc::{sync::Arc, vec::Vec};
4-
use polyhal::time::Time;
54
use executor::AsyncTask;
5+
use polyhal::time::Time;
66
use sync::Mutex;
77

88
use crate::syscall::consts::LinuxError;

kernel/src/tasks/elf.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
use alloc::{collections::BTreeMap, string::String, sync::Arc, vec::Vec};
2-
use polyhal::addr::VirtPage;
3-
use polyhal::{TrapFrame, TrapFrameArgs, PAGE_SIZE};
42
use executor::AsyncTask;
53
use log::warn;
4+
use polyhal::addr::VirtPage;
5+
use polyhal::{TrapFrame, TrapFrameArgs, PAGE_SIZE};
66
use xmas_elf::{
77
program::Type,
88
sections::SectionData,

kernel/src/tasks/initproc.rs

+4-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ use alloc::{
44
string::{String, ToString},
55
vec::Vec,
66
};
7-
use polyhal::{debug::DebugConsole, hart_id, shutdown};
87
use executor::{current_task, release_task, task::TaskType, tid2task, yield_now, TASK_MAP};
98
use frame_allocator::get_free_pages;
109
use fs::{
@@ -13,6 +12,7 @@ use fs::{
1312
};
1413
use log::debug;
1514
use logging::get_char;
15+
use polyhal::{debug::DebugConsole, hart_id, shutdown};
1616
use vfscore::INodeInterface;
1717

1818
use crate::tasks::add_user_task;
@@ -284,6 +284,9 @@ pub async fn initproc() {
284284

285285
// command("busybox echo run libctest_testcode.sh").await;
286286
command("busybox sh libctest_testcode.sh").await;
287+
// command("busybox echo Hello World!").await;
288+
// command("busybox sh").await;
289+
// command("hello").await;
287290
// command("ls").await;
288291

289292
// simple_shell().await;

kernel/src/tasks/memset.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
use alloc::{sync::Arc, vec::Vec};
2-
use polyhal::addr::VirtPage;
3-
use polyhal::{pagetable::PageTable, PAGE_SIZE};
42
use core::{
53
cmp::min,
64
fmt::Debug,
75
ops::{Deref, DerefMut},
86
};
97
use frame_allocator::FrameTracker;
108
use fs::File;
9+
use polyhal::addr::VirtPage;
10+
use polyhal::{pagetable::PageTable, PAGE_SIZE};
1111

1212
/// Memory set for storing the memory and its map relation.
1313
#[derive(Debug)]

kernel/src/tasks/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
use alloc::string::String;
22
use alloc::sync::Weak;
33
use alloc::{sync::Arc, vec::Vec};
4-
use polyhal::get_cpu_num;
54
use devices::get_net_device;
65
use executor::{current_task, thread, yield_now, AsyncTask, TaskId, DEFAULT_EXECUTOR};
76
use hal::{ITimerVal, TimeVal};
7+
use polyhal::get_cpu_num;
88

99
use crate::syscall::{exec_with_process, NET_SERVER};
1010
use crate::user::entry::user_entry;

kernel/src/tasks/task.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@ use alloc::{
55
sync::{Arc, Weak},
66
vec::Vec,
77
};
8+
use executor::{release_task, task::TaskType, task_id_alloc, AsyncTask, TaskId};
9+
use frame_allocator::{ceil_div, frame_alloc_much};
10+
use fs::File;
11+
use log::debug;
812
use polyhal::{
913
addr::{PhysPage, VirtAddr, VirtPage},
1014
pagetable::{MappingFlags, MappingSize, PageTableWrapper},
1115
{TrapFrame, TrapFrameArgs, PAGE_SIZE},
1216
};
13-
use executor::{release_task, task::TaskType, task_id_alloc, AsyncTask, TaskId};
14-
use frame_allocator::{ceil_div, frame_alloc_much};
15-
use fs::File;
16-
use log::debug;
1717
use signal::{SigAction, SigProcMask, SignalFlags, REAL_TIME_SIGNAL_NUM};
1818
use sync::{Mutex, MutexGuard, RwLock};
1919
use vfscore::OpenFlags;

kernel/src/user/entry.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
use alloc::boxed::Box;
2-
use polyhal::{kernel_page_table, TrapFrame};
32
use async_recursion::async_recursion;
43
use executor::{yield_now, AsyncTask};
54
use futures_lite::future;
65
use hal::TimeVal;
76
use log::debug;
7+
use polyhal::{kernel_page_table, TrapFrame};
88
use signal::SignalFlags;
99

1010
use crate::tasks::{current_user_task, UserTaskControlFlow};

kernel/src/user/mod.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
use ::signal::SignalFlags;
22
use alloc::sync::Arc;
3-
use polyhal::addr::VirtPage;
4-
use polyhal::{pagetable::MappingFlags, run_user_task, time::Time, TrapFrame, TrapFrameArgs};
53
use executor::{AsyncTask, TaskId};
64
use frame_allocator::frame_alloc;
75
use log::{debug, warn};
6+
use polyhal::addr::VirtPage;
7+
use polyhal::{pagetable::MappingFlags, run_user_task, time::Time, TrapFrame, TrapFrameArgs};
88

99
use crate::tasks::{MapTrack, MemType, UserTask};
1010
use crate::{
@@ -24,11 +24,11 @@ pub struct UserTaskContainer {
2424
/// Copy on write.
2525
/// call this function when trigger store/instruction page fault.
2626
/// copy page or remap page.
27-
pub fn user_cow_int(task: Arc<UserTask>, _cx_ref: &mut TrapFrame, addr: usize) {
27+
pub fn user_cow_int(task: Arc<UserTask>, cx_ref: &mut TrapFrame, addr: usize) {
2828
let vpn = VirtPage::from_addr(addr);
2929
warn!(
3030
"store/instruction page fault @ {:#x} vaddr: {:#x} paddr: {:?} task_id: {}",
31-
addr,
31+
cx_ref[TrapFrameArgs::SEPC],
3232
addr,
3333
task.page_table.translate(addr.into()),
3434
task.get_task_id()

kernel/src/user/signal.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
use core::mem::size_of;
22

3-
use polyhal::{TrapFrameArgs, SIG_RETURN_ADDR};
43
use executor::AsyncTask;
54
use log::debug;
5+
use polyhal::{TrapFrameArgs, SIG_RETURN_ADDR};
66
use signal::SignalFlags;
77

88
use crate::syscall::consts::{SignalUserContext, UserRef};

0 commit comments

Comments
 (0)