From 9a0f63b33eb1533060deeb6bc1a3ef687e0115a5 Mon Sep 17 00:00:00 2001 From: wyt8 <2253457010@qq.com> Date: Sun, 9 Nov 2025 18:58:47 +0800 Subject: [PATCH] Modify the import of modules in kernel to remove dependencies of lib.rs --- kernel/src/events/io_events.rs | 3 ++- kernel/src/fs/cgroupfs/inode.rs | 1 - kernel/src/fs/cgroupfs/systree_node.rs | 2 +- kernel/src/fs/configfs/inode.rs | 2 +- kernel/src/fs/mod.rs | 3 ++- kernel/src/fs/procfs/pid/task/environ.rs | 2 +- kernel/src/fs/procfs/pid/task/mem.rs | 2 +- kernel/src/fs/procfs/pid/task/mod.rs | 3 +-- kernel/src/fs/registry.rs | 2 +- kernel/src/fs/sysfs/inode.rs | 1 - kernel/src/fs/sysfs/kernel.rs | 4 ++-- kernel/src/fs/sysfs/test.rs | 2 +- kernel/src/fs/utils/file_creation_mask.rs | 8 ++++---- kernel/src/fs/utils/systree_inode.rs | 3 +-- kernel/src/init.rs | 2 +- kernel/src/lib.rs | 4 ---- kernel/src/net/iface/poll.rs | 2 +- kernel/src/net/socket/util/datagram_common.rs | 2 +- kernel/src/syscall/clock_gettime.rs | 4 ++-- kernel/src/syscall/timer_create.rs | 2 +- kernel/src/thread/task.rs | 2 +- kernel/src/time/mod.rs | 4 ++-- 22 files changed, 27 insertions(+), 33 deletions(-) diff --git a/kernel/src/events/io_events.rs b/kernel/src/events/io_events.rs index 029bddafd..5e849aca3 100644 --- a/kernel/src/events/io_events.rs +++ b/kernel/src/events/io_events.rs @@ -1,8 +1,9 @@ // SPDX-License-Identifier: MPL-2.0 use super::{Events, EventsFilter}; +use crate::prelude::*; -crate::bitflags! { +bitflags! { pub struct IoEvents: u32 { const IN = 0x0001; const PRI = 0x0002; diff --git a/kernel/src/fs/cgroupfs/inode.rs b/kernel/src/fs/cgroupfs/inode.rs index 7fbfb9428..51f8a3c74 100644 --- a/kernel/src/fs/cgroupfs/inode.rs +++ b/kernel/src/fs/cgroupfs/inode.rs @@ -15,7 +15,6 @@ use crate::{ }, }, prelude::*, - Result, }; /// An inode abstraction used in the cgroup file system. diff --git a/kernel/src/fs/cgroupfs/systree_node.rs b/kernel/src/fs/cgroupfs/systree_node.rs index 45e4f56c1..953a6306b 100644 --- a/kernel/src/fs/cgroupfs/systree_node.rs +++ b/kernel/src/fs/cgroupfs/systree_node.rs @@ -351,7 +351,7 @@ impl CgroupNode { /// This will succeed only if the cgroup node is empty and is alive. /// Here, a cgroup node is considered empty if it has no child nodes and no /// processes bound to it. - pub(super) fn mark_as_dead(&self) -> crate::Result<()> { + pub(super) fn mark_as_dead(&self) -> crate::prelude::Result<()> { let mut inner = self.inner.write(); let Some(inner_ref) = inner.as_ref() else { return_errno_with_message!(Errno::ENOENT, "the cgroup node is already dead"); diff --git a/kernel/src/fs/configfs/inode.rs b/kernel/src/fs/configfs/inode.rs index 3b7abe4d6..85df8cdbf 100644 --- a/kernel/src/fs/configfs/inode.rs +++ b/kernel/src/fs/configfs/inode.rs @@ -12,7 +12,7 @@ use crate::{ FileSystem, Inode, InodeMode, Metadata, }, }, - Result, + prelude::*, }; /// An inode abstraction used in the `ConfigFs`. diff --git a/kernel/src/fs/mod.rs b/kernel/src/fs/mod.rs index 495015dd9..d11bde91b 100644 --- a/kernel/src/fs/mod.rs +++ b/kernel/src/fs/mod.rs @@ -35,6 +35,7 @@ use crate::{ utils::{mkmod, AccessMode, OpenArgs}, }, prelude::*, + thread::kernel_thread::ThreadOptions, }; fn start_block_device(device_name: &str) -> Result> { @@ -47,7 +48,7 @@ fn start_block_device(device_name: &str) -> Result> { virtio_block_device.handle_requests(); } }; - crate::ThreadOptions::new(task_fn).spawn(); + ThreadOptions::new(task_fn).spawn(); Ok(device) } else { return_errno_with_message!(Errno::ENOENT, "Device does not exist") diff --git a/kernel/src/fs/procfs/pid/task/environ.rs b/kernel/src/fs/procfs/pid/task/environ.rs index 7fb29dc56..a5a78df28 100644 --- a/kernel/src/fs/procfs/pid/task/environ.rs +++ b/kernel/src/fs/procfs/pid/task/environ.rs @@ -7,7 +7,7 @@ use crate::{ utils::{mkmod, Inode}, }, prelude::*, - Process, + process::Process, }; /// Represents the inode at `/proc/[pid]/task/[tid]/environ` (and also `/proc/[pid]/environ`). diff --git a/kernel/src/fs/procfs/pid/task/mem.rs b/kernel/src/fs/procfs/pid/task/mem.rs index 8e857c4a8..95c7b5ba7 100644 --- a/kernel/src/fs/procfs/pid/task/mem.rs +++ b/kernel/src/fs/procfs/pid/task/mem.rs @@ -7,7 +7,7 @@ use crate::{ utils::{mkmod, Inode}, }, prelude::*, - Process, + process::Process, }; /// Represents the inode at `/proc/[pid]/task/[tid]/mem` (and also `/proc/[pid]/mem`). diff --git a/kernel/src/fs/procfs/pid/task/mod.rs b/kernel/src/fs/procfs/pid/task/mod.rs index a1940c6a1..683e7e405 100644 --- a/kernel/src/fs/procfs/pid/task/mod.rs +++ b/kernel/src/fs/procfs/pid/task/mod.rs @@ -22,9 +22,8 @@ use crate::{ utils::{mkmod, DirEntryVecExt, Inode}, }, prelude::*, - process::{posix_thread::AsPosixThread, task_set::TidEvent}, + process::{posix_thread::AsPosixThread, task_set::TidEvent, Process}, thread::{AsThread, Thread, Tid}, - Process, }; mod cgroup; diff --git a/kernel/src/fs/registry.rs b/kernel/src/fs/registry.rs index 6b95a121d..0c09139c8 100644 --- a/kernel/src/fs/registry.rs +++ b/kernel/src/fs/registry.rs @@ -127,7 +127,7 @@ impl FsRegistry { } /// Registers a file system control interface. - fn register(&self, new_type: &'static dyn FsType) -> crate::Result<()> { + fn register(&self, new_type: &'static dyn FsType) -> Result<()> { let mut fs_table = self.fs_table.lock(); if fs_table.contains_key(new_type.name()) { return_errno_with_message!(Errno::EEXIST, "the file system type already exists"); diff --git a/kernel/src/fs/sysfs/inode.rs b/kernel/src/fs/sysfs/inode.rs index 89a0b5cfb..b2a2a83ed 100644 --- a/kernel/src/fs/sysfs/inode.rs +++ b/kernel/src/fs/sysfs/inode.rs @@ -11,7 +11,6 @@ use crate::{ FileSystem, Inode, InodeMode, InodeType, Metadata, }, prelude::*, - Result, }; /// An inode abstraction used in the sysfs file system. diff --git a/kernel/src/fs/sysfs/kernel.rs b/kernel/src/fs/sysfs/kernel.rs index 5a68f36c9..5f1259c7b 100644 --- a/kernel/src/fs/sysfs/kernel.rs +++ b/kernel/src/fs/sysfs/kernel.rs @@ -11,13 +11,13 @@ use ostd::mm::{VmReader, VmWriter}; use spin::Once; /// Registers a new kernel `SysNode`. -pub(super) fn register(config_obj: Arc) -> crate::Result<()> { +pub(super) fn register(config_obj: Arc) -> crate::prelude::Result<()> { KERNEL_SYS_NODE_ROOT.get().unwrap().add_child(config_obj)?; Ok(()) } /// Unregisters a kernel `SysNode`. -pub(super) fn unregister(name: &str) -> crate::Result<()> { +pub(super) fn unregister(name: &str) -> crate::prelude::Result<()> { let _ = KERNEL_SYS_NODE_ROOT.get().unwrap().remove_child(name)?; Ok(()) } diff --git a/kernel/src/fs/sysfs/test.rs b/kernel/src/fs/sysfs/test.rs index 4f556ac59..76b56b17d 100644 --- a/kernel/src/fs/sysfs/test.rs +++ b/kernel/src/fs/sysfs/test.rs @@ -28,8 +28,8 @@ use crate::{ sysfs::{self, fs::SysFs}, utils::{mkmod, DirentVisitor, FileSystem, InodeType}, }, + prelude::*, time::clocks::init_for_ktest as time_init_for_ktest, - Result, }; // --- Mock SysTree Components --- diff --git a/kernel/src/fs/utils/file_creation_mask.rs b/kernel/src/fs/utils/file_creation_mask.rs index 4f4f944bc..90d3b4948 100644 --- a/kernel/src/fs/utils/file_creation_mask.rs +++ b/kernel/src/fs/utils/file_creation_mask.rs @@ -4,7 +4,7 @@ use core::sync::atomic::AtomicU16; use atomic_integer_wrapper::define_atomic_version_of_integer_like_type; -use crate::error::Error; +use crate::prelude::*; /// A mask for the file mode of a newly-created file or directory. /// @@ -28,12 +28,12 @@ impl Default for FileCreationMask { } impl TryFrom for FileCreationMask { - type Error = crate::Error; + type Error = Error; - fn try_from(value: u16) -> Result { + fn try_from(value: u16) -> Result { if value & !Self::MASK != 0 { Err(Error::with_message( - crate::Errno::EINVAL, + Errno::EINVAL, "Invalid FileCreationMask.", )) } else { diff --git a/kernel/src/fs/utils/systree_inode.rs b/kernel/src/fs/utils/systree_inode.rs index ae5a634b6..81e530124 100644 --- a/kernel/src/fs/utils/systree_inode.rs +++ b/kernel/src/fs/utils/systree_inode.rs @@ -21,11 +21,10 @@ use crate::{ IoctlCmd, Metadata, MknodType, StatusFlags, }, }, - prelude::{VmReader, VmWriter}, + prelude::*, process::{signal::PollHandle, Gid, Uid}, return_errno, return_errno_with_message, time::{clocks::RealTimeCoarseClock, Clock}, - Errno, Error, Result, }; type Ino = u64; diff --git a/kernel/src/init.rs b/kernel/src/init.rs index 206bbece8..41043bd0e 100644 --- a/kernel/src/init.rs +++ b/kernel/src/init.rs @@ -174,7 +174,7 @@ fn print_banner() { println!("{}", logo_ascii_art::get_gradient_color_version()); } -pub(super) fn init_in_first_process(ctx: &Context) { +pub(crate) fn on_first_process_startup(ctx: &Context) { component::init_all(InitStage::Process, component::parse_metadata!()).unwrap(); crate::device::init_in_first_process(ctx).unwrap(); crate::fs::init_in_first_process(ctx); diff --git a/kernel/src/lib.rs b/kernel/src/lib.rs index 14b56f2cf..ae43cf8de 100644 --- a/kernel/src/lib.rs +++ b/kernel/src/lib.rs @@ -60,10 +60,6 @@ mod util; mod vdso; mod vm; -use crate::{ - init::init_in_first_process, prelude::*, process::Process, thread::kernel_thread::ThreadOptions, -}; - #[ostd::main] #[controlled] fn main() { diff --git a/kernel/src/net/iface/poll.rs b/kernel/src/net/iface/poll.rs index 648b8f4c3..8c9534a38 100644 --- a/kernel/src/net/iface/poll.rs +++ b/kernel/src/net/iface/poll.rs @@ -10,7 +10,7 @@ use super::{iter_all_ifaces, Iface}; use crate::{ sched::{Nice, SchedPolicy}, thread::kernel_thread::ThreadOptions, - WaitTimeout, + time::wait::WaitTimeout, }; pub fn init_in_first_kthread() { diff --git a/kernel/src/net/socket/util/datagram_common.rs b/kernel/src/net/socket/util/datagram_common.rs index ef0085bf3..5425432a1 100644 --- a/kernel/src/net/socket/util/datagram_common.rs +++ b/kernel/src/net/socket/util/datagram_common.rs @@ -5,10 +5,10 @@ use ostd::sync::RwMutex; use super::SendRecvFlags; use crate::{ events::IoEvents, + prelude::*, process::signal::Pollee, return_errno_with_message, util::{MultiRead, MultiWrite}, - Errno, Error, Result, }; pub trait Unbound { diff --git a/kernel/src/syscall/clock_gettime.rs b/kernel/src/syscall/clock_gettime.rs index 08859482e..a0a9e5d96 100644 --- a/kernel/src/syscall/clock_gettime.rs +++ b/kernel/src/syscall/clock_gettime.rs @@ -73,7 +73,7 @@ pub enum DynamicClockIdInfo { } impl TryFrom for DynamicClockIdInfo { - type Error = crate::Error; + type Error = Error; fn try_from(value: clockid_t) -> core::prelude::v1::Result { const CPU_CLOCK_TYPE_MASK: i32 = 0b11; @@ -129,7 +129,7 @@ pub fn read_clock(clockid: clockid_t, ctx: &Context) -> Result { match dynamic_clockid_info { DynamicClockIdInfo::Pid(pid, clock_type) => { let process = process_table::get_process(pid) - .ok_or_else(|| crate::Error::with_message(Errno::EINVAL, "invalid clock ID"))?; + .ok_or_else(|| Error::with_message(Errno::EINVAL, "invalid clock ID"))?; match clock_type { DynamicClockType::Profiling => Ok(process.prof_clock().read_time()), DynamicClockType::Virtual => Ok(process.prof_clock().user_clock().read_time()), diff --git a/kernel/src/syscall/timer_create.rs b/kernel/src/syscall/timer_create.rs index b82b7d96c..13d7a7fe9 100644 --- a/kernel/src/syscall/timer_create.rs +++ b/kernel/src/syscall/timer_create.rs @@ -144,7 +144,7 @@ where match dynamic_clockid_info { DynamicClockIdInfo::Pid(pid, clock_type) => { let process = process_table::get_process(pid) - .ok_or_else(|| crate::Error::with_message(Errno::EINVAL, "invalid clock id"))?; + .ok_or_else(|| Error::with_message(Errno::EINVAL, "invalid clock id"))?; let process_timer_manager = process.timer_manager(); match clock_type { DynamicClockType::Profiling => process_timer_manager.create_prof_timer(func), diff --git a/kernel/src/thread/task.rs b/kernel/src/thread/task.rs index ea49fce5e..3f889e0fc 100644 --- a/kernel/src/thread/task.rs +++ b/kernel/src/thread/task.rs @@ -72,7 +72,7 @@ pub fn create_new_user_task( let has_kernel_event_fn = || ctx.has_pending(); if is_init_process { - crate::init_in_first_process(&ctx); + crate::init::on_first_process_startup(&ctx); } while !current_thread.is_exited() { diff --git a/kernel/src/time/mod.rs b/kernel/src/time/mod.rs index ca80a743b..5dc084fdf 100644 --- a/kernel/src/time/mod.rs +++ b/kernel/src/time/mod.rs @@ -63,7 +63,7 @@ impl From for timespec_t { } impl TryFrom for Duration { - type Error = crate::Error; + type Error = Error; fn try_from(value: timespec_t) -> Result { if value.sec < 0 || value.nsec < 0 { @@ -112,7 +112,7 @@ impl From for timeval_t { } impl TryFrom for Duration { - type Error = crate::Error; + type Error = Error; fn try_from(timeval: timeval_t) -> Result { if timeval.sec < 0 || timeval.usec < 0 {