Răsfoiți Sursa

chore: 将工具链更新到2024-07-23 (#864)

* chore: 将工具链更新到2024-07-23
LoGin 7 luni în urmă
părinte
comite
bd70d2d1f4
100 a modificat fișierele cu 135 adăugiri și 90 ștergeri
  1. 12 9
      .github/workflows/cache-toolchain.yml
  2. 1 1
      build-scripts/Makefile
  3. 0 2
      build-scripts/kernel_build/src/lib.rs
  4. 5 0
      kernel/.cargo/config.toml
  5. 6 4
      kernel/Cargo.toml
  6. 3 3
      kernel/Makefile
  7. 1 0
      kernel/crates/bitmap/src/lib.rs
  8. 9 0
      kernel/crates/bitmap/src/static_bitmap.rs
  9. 0 5
      kernel/crates/bitmap/src/traits.rs
  10. 0 0
      kernel/crates/intertrait/.gitignore
  11. 1 1
      kernel/crates/intertrait/Cargo.toml
  12. 0 0
      kernel/crates/intertrait/LICENSE-MIT
  13. 1 1
      kernel/crates/intertrait/README.md
  14. 1 1
      kernel/crates/intertrait/macros/Cargo.toml
  15. 0 0
      kernel/crates/intertrait/macros/LICENSE-APACHE
  16. 0 0
      kernel/crates/intertrait/macros/LICENSE-MIT
  17. 0 0
      kernel/crates/intertrait/macros/src/args.rs
  18. 0 0
      kernel/crates/intertrait/macros/src/gen_caster.rs
  19. 0 0
      kernel/crates/intertrait/macros/src/item_impl.rs
  20. 0 0
      kernel/crates/intertrait/macros/src/item_type.rs
  21. 0 0
      kernel/crates/intertrait/macros/src/lib.rs
  22. 0 0
      kernel/crates/intertrait/src/cast.rs
  23. 0 0
      kernel/crates/intertrait/src/cast/cast_arc.rs
  24. 0 0
      kernel/crates/intertrait/src/cast/cast_box.rs
  25. 0 0
      kernel/crates/intertrait/src/cast/cast_mut.rs
  26. 0 0
      kernel/crates/intertrait/src/cast/cast_rc.rs
  27. 0 0
      kernel/crates/intertrait/src/cast/cast_ref.rs
  28. 0 0
      kernel/crates/intertrait/src/hasher.rs
  29. 0 0
      kernel/crates/intertrait/src/lib.rs
  30. 0 0
      kernel/crates/intertrait/tests/castable_to.rs
  31. 0 0
      kernel/crates/intertrait/tests/on-enum.rs
  32. 0 0
      kernel/crates/intertrait/tests/on-struct.rs
  33. 0 0
      kernel/crates/intertrait/tests/on-trait-impl-assoc-type1.rs
  34. 0 0
      kernel/crates/intertrait/tests/on-trait-impl-assoc-type2.rs
  35. 0 0
      kernel/crates/intertrait/tests/on-trait-impl-assoc-type3.rs
  36. 0 0
      kernel/crates/intertrait/tests/on-trait-impl.rs
  37. 0 0
      kernel/crates/intertrait/tests/on-type-multi-traits.rs
  38. 0 0
      kernel/crates/intertrait/tests/run.rs
  39. 0 0
      kernel/crates/intertrait/tests/ui/duplicate-flags.rs
  40. 0 0
      kernel/crates/intertrait/tests/ui/duplicate-flags.stderr
  41. 0 0
      kernel/crates/intertrait/tests/ui/on-generic-type.rs
  42. 0 0
      kernel/crates/intertrait/tests/ui/on-generic-type.stderr
  43. 0 0
      kernel/crates/intertrait/tests/ui/on-type-impl.rs
  44. 0 0
      kernel/crates/intertrait/tests/ui/on-type-impl.stderr
  45. 0 0
      kernel/crates/intertrait/tests/ui/unknown-flag.rs
  46. 0 0
      kernel/crates/intertrait/tests/ui/unknown-flag.stderr
  47. 6 0
      kernel/crates/klog_types/src/lib.rs
  48. 5 3
      kernel/crates/rust-slabmalloc/src/pages.rs
  49. 1 1
      kernel/crates/unified-init/Cargo.toml
  50. 1 1
      kernel/crates/unified-init/macros/Cargo.toml
  51. 1 1
      kernel/rust-toolchain.toml
  52. 2 2
      kernel/src/Makefile
  53. 1 0
      kernel/src/arch/io.rs
  54. 1 0
      kernel/src/arch/x86_64/driver/apic/apic_timer.rs
  55. 1 0
      kernel/src/arch/x86_64/driver/apic/lapic_vector.rs
  56. 2 0
      kernel/src/arch/x86_64/init/mod.rs
  57. 1 0
      kernel/src/arch/x86_64/interrupt/entry.rs
  58. 1 0
      kernel/src/arch/x86_64/interrupt/msi.rs
  59. 1 0
      kernel/src/arch/x86_64/ipc/signal.rs
  60. 4 2
      kernel/src/arch/x86_64/kvm/vmx/vcpu.rs
  61. 2 2
      kernel/src/arch/x86_64/kvm/vmx/vmx_asm_wrapper.rs
  62. 1 0
      kernel/src/arch/x86_64/mod.rs
  63. 1 2
      kernel/src/arch/x86_64/process/kthread.rs
  64. 1 0
      kernel/src/arch/x86_64/process/table.rs
  65. 1 0
      kernel/src/arch/x86_64/smp/mod.rs
  66. 1 1
      kernel/src/arch/x86_64/x86_64-unknown-none.json
  67. 2 0
      kernel/src/driver/acpi/bus.rs
  68. 1 2
      kernel/src/driver/base/device/bus.rs
  69. 3 4
      kernel/src/driver/base/device/dd.rs
  70. 4 4
      kernel/src/driver/base/device/driver.rs
  71. 4 8
      kernel/src/driver/base/device/mod.rs
  72. 1 0
      kernel/src/driver/base/platform/platform_device.rs
  73. 1 0
      kernel/src/driver/base/platform/platform_driver.rs
  74. 2 0
      kernel/src/driver/block/cache/cached_block_device.rs
  75. 2 3
      kernel/src/driver/disk/ahci/ahcidisk.rs
  76. 4 0
      kernel/src/driver/disk/ahci/hba.rs
  77. 1 2
      kernel/src/driver/firmware/efi/init.rs
  78. 1 0
      kernel/src/driver/input/ps2_dev/ps2_device.rs
  79. 1 0
      kernel/src/driver/input/ps2_mouse/ps_mouse_device.rs
  80. 6 4
      kernel/src/driver/input/serio/i8042/mod.rs
  81. 1 0
      kernel/src/driver/input/serio/serio_device.rs
  82. 1 0
      kernel/src/driver/input/serio/serio_driver.rs
  83. 2 1
      kernel/src/driver/net/e1000e/e1000e.rs
  84. 0 1
      kernel/src/driver/net/loopback.rs
  85. 1 1
      kernel/src/driver/net/mod.rs
  86. 1 2
      kernel/src/driver/open_firmware/fdt.rs
  87. 1 0
      kernel/src/driver/pci/driver.rs
  88. 1 0
      kernel/src/driver/rtc/mod.rs
  89. 2 0
      kernel/src/driver/serial/mod.rs
  90. 1 0
      kernel/src/driver/serial/serial8250/mod.rs
  91. 2 0
      kernel/src/driver/serial/serial8250/serial8250_pio.rs
  92. 1 0
      kernel/src/driver/tty/console.rs
  93. 0 12
      kernel/src/driver/tty/tty_core.rs
  94. 2 2
      kernel/src/driver/tty/tty_ldisc/ntty.rs
  95. 1 1
      kernel/src/driver/tty/virtual_terminal/virtual_console.rs
  96. 1 1
      kernel/src/driver/video/fbdev/base/fbcon/mod.rs
  97. 3 0
      kernel/src/driver/video/fbdev/base/mod.rs
  98. 1 0
      kernel/src/driver/virtio/mod.rs
  99. 3 0
      kernel/src/exception/irqchip.rs
  100. 2 0
      kernel/src/exception/irqdomain.rs

+ 12 - 9
.github/workflows/cache-toolchain.yml

@@ -51,17 +51,17 @@ jobs:
 
             cargo install cargo-binutils
             rustup toolchain install nightly-x86_64-unknown-linux-gnu
-            rustup toolchain install nightly-2023-01-21-x86_64-unknown-linux-gnu
+            rustup toolchain install nightly-2024-07-23-x86_64-unknown-linux-gnu
             rustup toolchain install nightly-2023-08-15-x86_64-unknown-linux-gnu
-            rustup component add rust-src --toolchain nightly-2023-01-21-x86_64-unknown-linux-gnu
+            rustup component add rust-src --toolchain nightly-2024-07-23-x86_64-unknown-linux-gnu
             rustup component add rust-src --toolchain nightly-2023-08-15-x86_64-unknown-linux-gnu
-            rustup target add x86_64-unknown-none --toolchain nightly-2023-01-21-x86_64-unknown-linux-gnu
+            rustup target add x86_64-unknown-none --toolchain nightly-2024-07-23-x86_64-unknown-linux-gnu
             rustup target add x86_64-unknown-none --toolchain nightly-2023-08-15-x86_64-unknown-linux-gnu
 
-            rustup toolchain install nightly-2023-01-21-riscv64gc-unknown-linux-gnu --force-non-host
+            rustup toolchain install nightly-2024-07-23-riscv64gc-unknown-linux-gnu --force-non-host
             rustup toolchain install nightly-2023-08-15-riscv64gc-unknown-linux-gnu --force-non-host
-            rustup target add riscv64gc-unknown-none-elf --toolchain nightly-2023-01-21-riscv64gc-unknown-linux-gnu
-            rustup target add riscv64imac-unknown-none-elf --toolchain nightly-2023-01-21-riscv64gc-unknown-linux-gnu
+            rustup target add riscv64gc-unknown-none-elf --toolchain nightly-2024-07-23-riscv64gc-unknown-linux-gnu
+            rustup target add riscv64imac-unknown-none-elf --toolchain nightly-2024-07-23-riscv64gc-unknown-linux-gnu
             rustup target add riscv64gc-unknown-none-elf --toolchain nightly-2023-08-15-riscv64gc-unknown-linux-gnu
             rustup target add riscv64imac-unknown-none-elf --toolchain nightly-2023-08-15-riscv64gc-unknown-linux-gnu
                 
@@ -71,12 +71,12 @@ jobs:
 
             rustup component add rustfmt
             rustup component add rustfmt --toolchain nightly-x86_64-unknown-linux-gnu
-            rustup component add rustfmt --toolchain nightly-2023-01-21-x86_64-unknown-linux-gnu
+            rustup component add rustfmt --toolchain nightly-2024-07-23-x86_64-unknown-linux-gnu
             rustup component add rustfmt --toolchain nightly-2023-08-15-x86_64-unknown-linux-gnu
-            rustup component add rustfmt --toolchain nightly-2023-01-21-riscv64gc-unknown-linux-gnu
+            rustup component add rustfmt --toolchain nightly-2024-07-23-riscv64gc-unknown-linux-gnu
             rustup component add rustfmt --toolchain nightly-2023-08-15-riscv64gc-unknown-linux-gnu
 
-            rustup default nightly
+            rustup default nightly-2024-07-23
 
             cargo install dadk --version 0.1.11
           
@@ -86,6 +86,9 @@ jobs:
             rustup toolchain install ${userapp_musl_toolchain}
             rustup component add --toolchain ${userapp_musl_toolchain} rust-src
             rustup target add --toolchain ${userapp_musl_toolchain} x86_64-unknown-linux-musl
+
+            rustup target add x86_64-unknown-linux-musl --toolchain nightly-2024-07-23-x86_64-unknown-linux-gnu
+            rustup component add rust-src --toolchain nightly-2024-07-23-x86_64-unknown-linux-gnu
            
 
 

+ 1 - 1
build-scripts/Makefile

@@ -5,4 +5,4 @@ fmt:
 clean:
 	@cargo clean
 check:
-	@cargo +nightly-2023-08-15 check --workspace $(CARGO_ZBUILD) --message-format=json
+	@cargo +nightly-2024-07-23 check --workspace $(CARGO_ZBUILD) --message-format=json

+ 0 - 2
build-scripts/kernel_build/src/lib.rs

@@ -1,5 +1,3 @@
-#![feature(cfg_target_abi)]
-
 #[macro_use]
 extern crate lazy_static;
 extern crate cc;

+ 5 - 0
kernel/.cargo/config.toml

@@ -5,4 +5,9 @@
 [target.'cfg(target_os = "none")']
 runner = "bootimage runner"
 
+[build]
+# '-Zlinker-features=-lld' 禁用rustlld(20240723),因为它与linkme0.3版本冲突
+rustflags = ["-Zlinker-features=-lld"]
+rustdocflags = ["-Zlinker-features=-lld"]
+
 [env]

+ 6 - 4
kernel/Cargo.toml

@@ -12,16 +12,18 @@ crate-type = ["staticlib"]
 [workspace]
 members = [ 
     "crates/*",
-    "src/libs/intertrait"
 ]
 
 [features]
-default = ["backtrace", "kvm"]
+default = ["backtrace", "kvm", "fatfs", "fatfs-secure"]
 # 内核栈回溯
 backtrace = []
 # kvm
 kvm = []
 
+fatfs = []
+fatfs-secure = ["fatfs"]
+
 
 # 运行时依赖项
 [dependencies]
@@ -37,10 +39,10 @@ driver_base_macros = { "path" = "crates/driver_base_macros" }
 elf = { version = "=0.7.2", default-features = false }
 hashbrown = "=0.13.2"
 ida = { path = "src/libs/ida" }
-intertrait = { path = "src/libs/intertrait" }
+intertrait = { path = "crates/intertrait" }
 kdepends = { path = "crates/kdepends" }
 klog_types = { path = "crates/klog_types" }
-linkme = "=0.2"
+linkme = "=0.3.27"
 num = { version = "=0.4.0", default-features = false }
 num-derive = "=0.3"
 num-traits = { git = "https://git.mirrors.dragonos.org.cn/DragonOS-Community/num-traits.git", rev="1597c1c", default-features = false }

+ 3 - 3
kernel/Makefile

@@ -36,12 +36,12 @@ check: ECHO
 # @echo "Checking kernel... ARCH=$(ARCH)"
 # @exit 1
 ifeq ($(ARCH), x86_64)
-	@cargo +nightly-2023-08-15 check --workspace $(CARGO_ZBUILD) --message-format=json --target ./src/$(TARGET_JSON)
+	@cargo +nightly-2024-07-23 check --workspace $(CARGO_ZBUILD) --message-format=json --target ./src/$(TARGET_JSON)
 else ifeq ($(ARCH), riscv64)
-	@cargo +nightly-2023-08-15 check --workspace $(CARGO_ZBUILD) --message-format=json --target $(TARGET_JSON)
+	@cargo +nightly-2024-07-23 check --workspace $(CARGO_ZBUILD) --message-format=json --target $(TARGET_JSON)
 endif
 
 test:
 # 测试内核库
-	@cargo +nightly-2023-08-15 test --workspace --exclude dragonos_kernel
+	@cargo +nightly-2024-07-23 test --workspace --exclude dragonos_kernel
 

+ 1 - 0
kernel/crates/bitmap/src/lib.rs

@@ -2,6 +2,7 @@
 #![feature(core_intrinsics)]
 #![allow(incomplete_features)] // for const generics
 #![feature(generic_const_exprs)]
+#![allow(internal_features)]
 #![allow(clippy::needless_return)]
 
 #[macro_use]

+ 9 - 0
kernel/crates/bitmap/src/static_bitmap.rs

@@ -14,6 +14,15 @@ where
     core: BitMapCore<usize>,
 }
 
+impl<const N: usize> Default for StaticBitmap<N>
+where
+    [(); (N + usize::BITS as usize - 1) / (usize::BITS as usize)]:,
+{
+    fn default() -> Self {
+        Self::new()
+    }
+}
+
 impl<const N: usize> StaticBitmap<N>
 where
     [(); (N + usize::BITS as usize - 1) / (usize::BITS as usize)]:,

+ 0 - 5
kernel/crates/bitmap/src/traits.rs

@@ -182,11 +182,6 @@ macro_rules! bitops_for {
                 }
             }
 
-            #[cfg(feature = "std")]
-            fn to_hex(bits: &Self) -> String {
-                format!("{:x}", bits)
-            }
-
             #[inline]
             fn bit_size() -> usize {
                 <$target>::BITS as usize

+ 0 - 0
kernel/src/libs/intertrait/.gitignore → kernel/crates/intertrait/.gitignore


+ 1 - 1
kernel/src/libs/intertrait/Cargo.toml → kernel/crates/intertrait/Cargo.toml

@@ -14,7 +14,7 @@ include = ["src/**/*", "Cargo.toml", "LICENSE-*", "README.md"]
 
 
 [dependencies]
-linkme = "0.2"
+linkme = "=0.3.27"
 hashbrown = "0.13.2"
 intertrait-macros = { version = "=0.2.2", path = "macros" }
 

+ 0 - 0
kernel/src/libs/intertrait/LICENSE-MIT → kernel/crates/intertrait/LICENSE-MIT


+ 1 - 1
kernel/src/libs/intertrait/README.md → kernel/crates/intertrait/README.md

@@ -23,7 +23,7 @@ Add the following two dependencies to your `Cargo.toml`:
 ```toml
 [dependencies]
 intertrait = "0.2"
-linkme = "0.2"
+linkme = "=0.3.27"
 ```
 
 The `linkme` dependency is required due to the use of `linkme` macro in the output of `intertrait` macros.

+ 1 - 1
kernel/src/libs/intertrait/macros/Cargo.toml → kernel/crates/intertrait/macros/Cargo.toml

@@ -20,4 +20,4 @@ uuid = { version = "0.8", features = ["v4"] }
 
 [dev-dependencies]
 intertrait = { version = "=0.2.2", path = ".." }
-linkme = "0.2"
+linkme = "=0.3.27"

+ 0 - 0
kernel/src/libs/intertrait/macros/LICENSE-APACHE → kernel/crates/intertrait/macros/LICENSE-APACHE


+ 0 - 0
kernel/src/libs/intertrait/macros/LICENSE-MIT → kernel/crates/intertrait/macros/LICENSE-MIT


+ 0 - 0
kernel/src/libs/intertrait/macros/src/args.rs → kernel/crates/intertrait/macros/src/args.rs


+ 0 - 0
kernel/src/libs/intertrait/macros/src/gen_caster.rs → kernel/crates/intertrait/macros/src/gen_caster.rs


+ 0 - 0
kernel/src/libs/intertrait/macros/src/item_impl.rs → kernel/crates/intertrait/macros/src/item_impl.rs


+ 0 - 0
kernel/src/libs/intertrait/macros/src/item_type.rs → kernel/crates/intertrait/macros/src/item_type.rs


+ 0 - 0
kernel/src/libs/intertrait/macros/src/lib.rs → kernel/crates/intertrait/macros/src/lib.rs


+ 0 - 0
kernel/src/libs/intertrait/src/cast.rs → kernel/crates/intertrait/src/cast.rs


+ 0 - 0
kernel/src/libs/intertrait/src/cast/cast_arc.rs → kernel/crates/intertrait/src/cast/cast_arc.rs


+ 0 - 0
kernel/src/libs/intertrait/src/cast/cast_box.rs → kernel/crates/intertrait/src/cast/cast_box.rs


+ 0 - 0
kernel/src/libs/intertrait/src/cast/cast_mut.rs → kernel/crates/intertrait/src/cast/cast_mut.rs


+ 0 - 0
kernel/src/libs/intertrait/src/cast/cast_rc.rs → kernel/crates/intertrait/src/cast/cast_rc.rs


+ 0 - 0
kernel/src/libs/intertrait/src/cast/cast_ref.rs → kernel/crates/intertrait/src/cast/cast_ref.rs


+ 0 - 0
kernel/src/libs/intertrait/src/hasher.rs → kernel/crates/intertrait/src/hasher.rs


+ 0 - 0
kernel/src/libs/intertrait/src/lib.rs → kernel/crates/intertrait/src/lib.rs


+ 0 - 0
kernel/src/libs/intertrait/tests/castable_to.rs → kernel/crates/intertrait/tests/castable_to.rs


+ 0 - 0
kernel/src/libs/intertrait/tests/on-enum.rs → kernel/crates/intertrait/tests/on-enum.rs


+ 0 - 0
kernel/src/libs/intertrait/tests/on-struct.rs → kernel/crates/intertrait/tests/on-struct.rs


+ 0 - 0
kernel/src/libs/intertrait/tests/on-trait-impl-assoc-type1.rs → kernel/crates/intertrait/tests/on-trait-impl-assoc-type1.rs


+ 0 - 0
kernel/src/libs/intertrait/tests/on-trait-impl-assoc-type2.rs → kernel/crates/intertrait/tests/on-trait-impl-assoc-type2.rs


+ 0 - 0
kernel/src/libs/intertrait/tests/on-trait-impl-assoc-type3.rs → kernel/crates/intertrait/tests/on-trait-impl-assoc-type3.rs


+ 0 - 0
kernel/src/libs/intertrait/tests/on-trait-impl.rs → kernel/crates/intertrait/tests/on-trait-impl.rs


+ 0 - 0
kernel/src/libs/intertrait/tests/on-type-multi-traits.rs → kernel/crates/intertrait/tests/on-type-multi-traits.rs


+ 0 - 0
kernel/src/libs/intertrait/tests/run.rs → kernel/crates/intertrait/tests/run.rs


+ 0 - 0
kernel/src/libs/intertrait/tests/ui/duplicate-flags.rs → kernel/crates/intertrait/tests/ui/duplicate-flags.rs


+ 0 - 0
kernel/src/libs/intertrait/tests/ui/duplicate-flags.stderr → kernel/crates/intertrait/tests/ui/duplicate-flags.stderr


+ 0 - 0
kernel/src/libs/intertrait/tests/ui/on-generic-type.rs → kernel/crates/intertrait/tests/ui/on-generic-type.rs


+ 0 - 0
kernel/src/libs/intertrait/tests/ui/on-generic-type.stderr → kernel/crates/intertrait/tests/ui/on-generic-type.stderr


+ 0 - 0
kernel/src/libs/intertrait/tests/ui/on-type-impl.rs → kernel/crates/intertrait/tests/ui/on-type-impl.rs


+ 0 - 0
kernel/src/libs/intertrait/tests/ui/on-type-impl.stderr → kernel/crates/intertrait/tests/ui/on-type-impl.stderr


+ 0 - 0
kernel/src/libs/intertrait/tests/ui/unknown-flag.rs → kernel/crates/intertrait/tests/ui/unknown-flag.rs


+ 0 - 0
kernel/src/libs/intertrait/tests/ui/unknown-flag.stderr → kernel/crates/intertrait/tests/ui/unknown-flag.stderr


+ 6 - 0
kernel/crates/klog_types/src/lib.rs

@@ -175,6 +175,12 @@ impl MMLogCycle {
     }
 }
 
+impl Default for MMLogCycle {
+    fn default() -> Self {
+        Self::new()
+    }
+}
+
 impl kdepends::thingbuf::Recycle<AllocatorLog> for MMLogCycle {
     fn new_element(&self) -> AllocatorLog {
         AllocatorLog::zeroed()

+ 5 - 3
kernel/crates/rust-slabmalloc/src/pages.rs

@@ -38,7 +38,7 @@ impl Bitfield for [AtomicU64] {
     fn initialize(&mut self, for_size: usize, capacity: usize) {
         // Set everything to allocated
         for bitmap in self.iter_mut() {
-            *bitmap = AtomicU64::new(u64::max_value());
+            *bitmap = AtomicU64::new(u64::MAX);
         }
 
         // Mark actual slots as free
@@ -64,7 +64,7 @@ impl Bitfield for [AtomicU64] {
 
         for (base_idx, b) in self.iter().enumerate() {
             let bitval = b.load(Ordering::Relaxed);
-            if bitval == u64::max_value() {
+            if bitval == u64::MAX {
                 continue;
             } else {
                 let negated = !bitval;
@@ -125,7 +125,7 @@ impl Bitfield for [AtomicU64] {
     #[inline(always)]
     fn is_full(&self) -> bool {
         self.iter()
-            .filter(|&x| x.load(Ordering::Relaxed) != u64::max_value())
+            .filter(|&x| x.load(Ordering::Relaxed) != u64::MAX)
             .count()
             == 0
     }
@@ -410,6 +410,7 @@ impl<'a, T: AllocablePage> PageList<'a, T> {
     }
 
     /// Removes `slab_page` from the list.
+    #[allow(clippy::manual_inspect)]
     pub(crate) fn pop<'b>(&'b mut self) -> Option<&'a mut T> {
         match self.head {
             None => None,
@@ -453,6 +454,7 @@ impl<'a, P: AllocablePage + 'a> Iterator for ObjectPageIterMut<'a, P> {
     type Item = &'a mut P;
 
     #[inline]
+    #[allow(clippy::manual_inspect)]
     fn next(&mut self) -> Option<&'a mut P> {
         unsafe {
             self.head.resolve_mut().map(|next| {

+ 1 - 1
kernel/crates/unified-init/Cargo.toml

@@ -10,5 +10,5 @@ path = "src/main.rs"
 
 [dependencies]
 unified-init-macros = { path = "macros" }
-linkme = "0.2"
+linkme = "=0.3.27"
 system_error = { path = "../system_error" }

+ 1 - 1
kernel/crates/unified-init/macros/Cargo.toml

@@ -16,5 +16,5 @@ uuid = { version = "0.8", features = ["v4"] }
 
 [dev-dependencies]
 unified-init = { path = ".." }
-linkme = "0.2"
+linkme = "=0.3.27"
 system_error = { path = "../../system_error" }

+ 1 - 1
kernel/rust-toolchain.toml

@@ -1,3 +1,3 @@
 [toolchain]
-channel = "nightly-2023-08-15"
+channel = "nightly-2024-07-23"
 components = ["rust-src", "clippy"]

+ 2 - 2
kernel/src/Makefile

@@ -21,7 +21,7 @@ ifeq ($(ARCH), x86_64)
 endif
 endif
 
-RUSTFLAGS = $(RUSTFLAGS_UNWIND)
+RUSTFLAGS += $(RUSTFLAGS_UNWIND)
 
 CFLAGS = $(GLOBAL_CFLAGS) -fno-pie $(CFLAGS_UNWIND) -I $(shell pwd) -I $(shell pwd)/include
 
@@ -40,7 +40,7 @@ kernel_subdirs := common driver debug syscall libs
 
 
 kernel_rust:
-	RUSTFLAGS="$(RUSTFLAGS)" cargo +nightly-2023-08-15 $(CARGO_ZBUILD) build --release --target $(TARGET_JSON)
+	RUSTFLAGS="$(RUSTFLAGS)" cargo +nightly-2024-07-23 $(CARGO_ZBUILD) build --release --target $(TARGET_JSON)
 
 
 all: kernel

+ 1 - 0
kernel/src/arch/io.rs

@@ -1,4 +1,5 @@
 /// 每个架构都需要实现的IO接口
+#[allow(unused)]
 pub trait PortIOArch {
     unsafe fn in8(port: u16) -> u8;
     unsafe fn in16(port: u16) -> u16;

+ 1 - 0
kernel/src/arch/x86_64/driver/apic/apic_timer.rs

@@ -156,6 +156,7 @@ impl LocalApicTimerIntrController {
         local_apic_timer.start_current();
     }
 
+    #[allow(dead_code)]
     pub(super) fn disable(&self) {
         let cpu_id = smp_get_processor_id();
         let local_apic_timer = local_apic_timer_instance_mut(cpu_id);

+ 1 - 0
kernel/src/arch/x86_64/driver/apic/lapic_vector.rs

@@ -179,6 +179,7 @@ bitflags! {
     }
 }
 
+#[allow(dead_code)]
 pub(super) fn irq_msi_compose_msg(cfg: &HardwareIrqConfig, msg: &mut MsiMsg, dmar: bool) {
     *msg = MsiMsg::new_zeroed();
 

+ 2 - 0
kernel/src/arch/x86_64/init/mod.rs

@@ -35,6 +35,7 @@ extern "C" {
 }
 
 #[no_mangle]
+#[allow(static_mut_refs)]
 unsafe extern "C" fn kernel_main(
     mb2_info: u64,
     mb2_magic: u64,
@@ -66,6 +67,7 @@ unsafe extern "C" fn kernel_main(
 
 /// 在内存管理初始化之前的架构相关的早期初始化
 #[inline(never)]
+#[allow(static_mut_refs)]
 pub fn early_setup_arch() -> Result<(), SystemError> {
     let stack_start = unsafe { *(head_stack_start as *const u64) } as usize;
     debug!("head_stack_start={:#x}\n", stack_start);

+ 1 - 0
kernel/src/arch/x86_64/interrupt/entry.rs

@@ -564,6 +564,7 @@ pub unsafe fn set_system_trap_gate(irq: u32, ist: u8, vaddr: VirtAddr) {
     set_gate(idt_entry, 0xEF, ist, vaddr);
 }
 
+#[allow(static_mut_refs)]
 unsafe fn get_idt_entry(irq: u32) -> &'static mut [u64] {
     assert!(irq < 256);
     let mut idt_vaddr =

+ 1 - 0
kernel/src/arch/x86_64/interrupt/msi.rs

@@ -26,6 +26,7 @@ pub struct X86MsiDataNormal {
 }
 
 #[derive(Debug)]
+#[allow(dead_code)]
 pub struct X86MsiDataDmar {
     pub dmar_subhandle: u32,
 }

+ 1 - 0
kernel/src/arch/x86_64/ipc/signal.rs

@@ -396,6 +396,7 @@ impl SigContext {
     }
 }
 /// @brief 信号处理备用栈的信息
+#[allow(dead_code)]
 #[derive(Debug, Clone, Copy)]
 pub struct SigStack {
     pub sp: *mut c_void,

+ 4 - 2
kernel/src/arch/x86_64/kvm/vmx/vcpu.rs

@@ -42,6 +42,7 @@ pub struct MSRBitmap {
     pub data: [u8; PAGE_SIZE],
 }
 
+#[allow(dead_code)]
 #[derive(Debug)]
 pub struct VcpuData {
     /// The virtual and physical address of the Vmxon naturally aligned 4-KByte region of memory
@@ -73,6 +74,7 @@ pub enum VcpuState {
     Act = 2,
 }
 
+#[allow(dead_code)]
 #[derive(Debug)]
 pub struct VmxVcpu {
     pub vcpu_id: u32,
@@ -318,13 +320,13 @@ impl VmxVcpu {
         )?;
         vmx_vmwrite(
             VmcsFields::HOST_GDTR_BASE as u32,
-            pseudo_descriptpr.base.to_bits() as u64,
+            pseudo_descriptpr.base as usize as u64,
         )?;
         vmx_vmwrite(VmcsFields::HOST_IDTR_BASE as u32, unsafe {
             let mut pseudo_descriptpr: x86::dtables::DescriptorTablePointer<u64> =
                 Default::default();
             x86::dtables::sidt(&mut pseudo_descriptpr);
-            pseudo_descriptpr.base.to_bits() as u64
+            pseudo_descriptpr.base as usize as u64
         })?;
 
         // fast entry into the kernel

+ 2 - 2
kernel/src/arch/x86_64/kvm/vmx/vmx_asm_wrapper.rs

@@ -64,10 +64,10 @@ pub fn vmx_vmlaunch() -> Result<(), SystemError> {
             "push    rsi",
             "push    rdi",
             "vmwrite {0:r}, rsp",
-            "lea rax, 1f[rip]",
+            "lea rax, 2f[rip]",
             "vmwrite {1:r}, rax",
             "vmlaunch",
-            "1:",
+            "2:",
             "pop    rdi",
             "pop    rsi",
             "pop    rdx",

+ 1 - 0
kernel/src/arch/x86_64/mod.rs

@@ -30,6 +30,7 @@ pub use interrupt::X86_64InterruptArch as CurrentIrqArch;
 pub use crate::arch::asm::pio::X86_64PortIOArch as CurrentPortIOArch;
 pub use kvm::X86_64KVMArch as KVMArch;
 
+#[allow(unused_imports)]
 pub use crate::arch::ipc::signal::X86_64SignalArch as CurrentSignalArch;
 pub use crate::arch::time::X86_64TimeArch as CurrentTimeArch;
 

+ 1 - 2
kernel/src/arch/x86_64/process/kthread.rs

@@ -42,9 +42,8 @@ impl KernelThreadMechanism {
         frame.rip = kernel_thread_bootstrap_stage1 as usize as u64;
 
         // fork失败的话,子线程不会执行。否则将导致内存安全问题。
-        let pid = ProcessManager::fork(&frame, clone_flags).map_err(|e| {
+        let pid = ProcessManager::fork(&frame, clone_flags).inspect_err(|_e| {
             unsafe { KernelThreadCreateInfo::parse_unsafe_arc_ptr(create_info) };
-            e
         })?;
 
         ProcessManager::find(pid)

+ 1 - 0
kernel/src/arch/x86_64/process/table.rs

@@ -59,6 +59,7 @@ impl TSSManager {
         x86::task::load_tr(selector);
     }
 
+    #[allow(static_mut_refs)]
     unsafe fn set_tss_descriptor(index: u16, vaddr: VirtAddr) {
         const LIMIT: u64 = 103;
         let gdt_vaddr = VirtAddr::new(&GDT_Table as *const _ as usize);

+ 1 - 0
kernel/src/arch/x86_64/smp/mod.rs

@@ -259,6 +259,7 @@ impl X86_64SMPArch {
 }
 
 impl SmpCpuManager {
+    #[allow(static_mut_refs)]
     pub fn arch_init(_boot_cpu: ProcessorId) {
         assert!(smp_get_processor_id().data() == 0);
         // 写入APU_START_CR3,这个值会在AP处理器启动时设置到CR3寄存器

+ 1 - 1
kernel/src/arch/x86_64/x86_64-unknown-none.json

@@ -1,6 +1,6 @@
 {
   "llvm-target": "x86_64-unknown-none",
-  "data-layout": "e-m:e-i64:64-f80:128-n8:16:32:64-S128",
+  "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128",
   "arch": "x86_64",
   "target-endian": "little",
   "target-pointer-width": "64",

+ 2 - 0
kernel/src/driver/acpi/bus.rs

@@ -111,6 +111,7 @@ impl Bus for AcpiBus {
 ///
 ///
 /// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/include/acpi/acpi_bus.h#364
+#[allow(unused)]
 pub trait AcpiDevice: Device {}
 
 /// Acpi驱动应当实现的trait
@@ -120,4 +121,5 @@ pub trait AcpiDevice: Device {}
 /// todo: 仿照linux的acpi_driver去设计这个trait
 ///
 /// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/include/acpi/acpi_bus.h#163
+#[allow(unused)]
 pub trait AcpiDriver: Driver {}

+ 1 - 2
kernel/src/driver/base/device/bus.rs

@@ -478,9 +478,8 @@ impl BusManager {
 
         driver_manager()
             .create_attr_file(driver, &DriverAttrBind)
-            .map_err(|e| {
+            .inspect_err(|_e| {
                 driver_manager().remove_attr_file(driver, &DriverAttrUnbind);
-                e
             })?;
 
         return Ok(());

+ 3 - 4
kernel/src/driver/base/device/dd.rs

@@ -142,6 +142,7 @@ impl DeviceManager {
     /// - Ok(true): 匹配成功
     /// - Ok(false): 没有匹配成功
     /// - Err(SystemError): 匹配过程中出现意外错误,没有匹配成功
+    ///
     /// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/dd.c#899
     fn do_device_attach_driver(
         &self,
@@ -484,17 +485,15 @@ impl DriverManager {
 
         sysfs_instance()
             .create_link(Some(&device_kobj), &driver_kobj, "driver".to_string())
-            .map_err(|e| {
+            .inspect_err(|_e| {
                 fail_rm_dev_link();
-                e
             })?;
 
         device_manager()
             .create_file(device, &DeviceAttrCoredump)
-            .map_err(|e| {
+            .inspect_err(|_e| {
                 sysfs_instance().remove_link(&device_kobj, "driver".to_string());
                 fail_rm_dev_link();
-                e
             })?;
 
         return Ok(());

+ 4 - 4
kernel/src/driver/base/device/driver.rs

@@ -213,10 +213,10 @@ impl DriverManager {
 
         bus_manager().add_driver(&driver)?;
 
-        self.add_groups(&driver, driver.groups()).map_err(|e| {
-            bus_manager().remove_driver(&driver);
-            e
-        })?;
+        self.add_groups(&driver, driver.groups())
+            .inspect_err(|_e| {
+                bus_manager().remove_driver(&driver);
+            })?;
 
         // todo: 发送uevent
 

+ 4 - 8
kernel/src/driver/base/device/mod.rs

@@ -646,18 +646,16 @@ impl DeviceManager {
             let parent_kobj = parent.clone() as Arc<dyn KObject>;
             sysfs_instance()
                 .create_link(Some(&dev_kobj), &parent_kobj, "device".to_string())
-                .map_err(|e| {
+                .inspect_err(|_e| {
                     err_remove_subsystem(&dev_kobj);
-                    e
                 })?;
         }
 
         sysfs_instance()
             .create_link(Some(&subsys_kobj), &dev_kobj, dev.name())
-            .map_err(|e| {
+            .inspect_err(|_e| {
                 err_remove_device(&dev_kobj);
                 err_remove_subsystem(&dev_kobj);
-                e
             })?;
 
         return Ok(());
@@ -695,18 +693,16 @@ impl DeviceManager {
         // 添加kobj_type的属性文件
         if let Some(kobj_type) = dev.kobj_type() {
             self.add_groups(dev, kobj_type.attribute_groups().unwrap_or(&[]))
-                .map_err(|e| {
+                .inspect_err(|_e| {
                     err_remove_class_groups(dev);
-                    e
                 })?;
         }
 
         // 添加设备本身的属性文件
         self.add_groups(dev, dev.attribute_groups().unwrap_or(&[]))
-            .map_err(|e| {
+            .inspect_err(|_e| {
                 err_remove_kobj_type_groups(dev);
                 err_remove_class_groups(dev);
-                e
             })?;
 
         return Ok(());

+ 1 - 0
kernel/src/driver/base/platform/platform_device.rs

@@ -64,6 +64,7 @@ pub trait PlatformDevice: Device {
     /// @brief: 判断设备是否初始化
     /// @parameter: None
     /// @return: 如果已经初始化,返回true,否则,返回false
+    #[allow(dead_code)]
     fn is_initialized(&self) -> bool;
 
     /// @brief: 设置设备状态

+ 1 - 0
kernel/src/driver/base/platform/platform_driver.rs

@@ -16,6 +16,7 @@ use super::{platform_bus, platform_device::PlatformDevice};
 ///
 /// 应当在所有实现这个trait的结构体上方,添加 `#[cast_to([sync] PlatformDriver)]`,
 /// 否则运行时将报错“该对象不是PlatformDriver”
+#[allow(dead_code)]
 pub trait PlatformDriver: Driver {
     /// 检测设备是否能绑定到这个驱动
     ///

+ 2 - 0
kernel/src/driver/block/cache/cached_block_device.rs

@@ -16,6 +16,7 @@ static mut CMAPPER: Option<LockedCacheMapper> = None;
 /// 该结构体向外提供BlockCache服务
 pub struct BlockCache;
 
+#[allow(static_mut_refs)]
 unsafe fn mapper() -> Result<&'static mut LockedCacheMapper, BlockCacheError> {
     unsafe {
         match &mut CMAPPER {
@@ -25,6 +26,7 @@ unsafe fn mapper() -> Result<&'static mut LockedCacheMapper, BlockCacheError> {
     };
 }
 
+#[allow(static_mut_refs)]
 unsafe fn space() -> Result<&'static mut LockedCacheSpace, BlockCacheError> {
     unsafe {
         match &mut CSPACE {

+ 2 - 3
kernel/src/driver/disk/ahci/ahcidisk.rs

@@ -195,9 +195,8 @@ impl AhciDisk {
                 return Err(SystemError::EIO);
             }
         }
-
-        if kbuf.is_some() {
-            buf.copy_from_slice(kbuf.as_ref().unwrap());
+        if let Some(kbuf) = &kbuf {
+            buf.copy_from_slice(kbuf);
         }
 
         compiler_fence(Ordering::SeqCst);

+ 4 - 0
kernel/src/driver/disk/ahci/hba.rs

@@ -43,6 +43,7 @@ pub enum HbaPortType {
 
 /// 声明了 HBA 的所有属性
 #[repr(packed)]
+#[allow(dead_code)]
 pub struct HbaPort {
     pub clb: u64,         // 0x00, command list base address, 1K-byte aligned
     pub fb: u64,          // 0x08, FIS base address, 256-byte aligned
@@ -65,6 +66,7 @@ pub struct HbaPort {
 
 /// 全称 HBA Memory Register,是HBA的寄存器在内存中的映射
 #[repr(packed)]
+#[allow(dead_code)]
 pub struct HbaMem {
     pub cap: u32,             // 0x00, Host capability
     pub ghc: u32,             // 0x04, Global host control
@@ -94,6 +96,7 @@ pub struct HbaPrdtEntry {
 /// HAB Command Table
 /// 每个 Port 一个 Table,主机和设备的交互都靠这个数据结构
 #[repr(packed)]
+#[allow(dead_code)]
 pub struct HbaCmdTable {
     // 0x00
     pub cfis: [u8; 64], // Command FIS
@@ -262,6 +265,7 @@ pub enum FisType {
 }
 
 #[repr(packed)]
+#[allow(dead_code)]
 pub struct FisRegH2D {
     // DWORD 0
     pub fis_type: u8, // FIS_TYPE_REG_H2D

+ 1 - 2
kernel/src/driver/firmware/efi/init.rs

@@ -168,9 +168,8 @@ fn uefi_init(system_table: PhysAddr) -> Result<(), SystemError> {
     let st_ptr = st_vaddr.data() as *const uefi_raw::table::system::SystemTable;
     efi_manager()
         .check_system_table_header(unsafe { &st_ptr.as_ref().unwrap().header }, 2)
-        .map_err(|e| {
+        .inspect_err(|_| {
             err_unmap_systable(st_vaddr);
-            e
         })?;
 
     let st_ref = unsafe { st_ptr.as_ref().unwrap() };

+ 1 - 0
kernel/src/driver/input/ps2_dev/ps2_device.rs

@@ -1,4 +1,5 @@
 use crate::driver::{base::device::Device, input::serio::serio_device::SerioDevice};
 
 // todo: https://code.dragonos.org.cn/xref/linux-6.1.9/include/linux/libps2.h#33
+#[allow(unused)]
 pub trait Ps2Device: Device + SerioDevice {}

+ 1 - 0
kernel/src/driver/input/ps2_mouse/ps_mouse_device.rs

@@ -387,6 +387,7 @@ impl Ps2MouseDevice {
         Ok(())
     }
 
+    #[allow(dead_code)]
     fn wait_for_read(&self) -> Result<(), SystemError> {
         let timeout = 100_000;
         for _ in 0..timeout {

+ 6 - 4
kernel/src/driver/input/serio/i8042/mod.rs

@@ -47,14 +47,16 @@ pub fn i8042_init() -> Result<(), SystemError> {
     Ok(())
 }
 
-// TODO: https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/input/serio/i8042.c#441
+/// TODO: https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/input/serio/i8042.c#441
+#[allow(dead_code)]
 pub fn i8042_start(_serio: &Arc<dyn SerioDevice>) -> Result<(), SystemError> {
-    todo!()
+    todo!("i8042_start")
 }
 
-// TODO: https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/input/serio/i8042.c#471
+/// TODO: https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/input/serio/i8042.c#471
+#[allow(dead_code)]
 pub fn i8042_stop(_serio: &Arc<dyn SerioDevice>) -> Result<(), SystemError> {
-    todo!()
+    todo!("i8042_stop")
 }
 
 /// # 函数的功能

+ 1 - 0
kernel/src/driver/input/serio/serio_device.rs

@@ -8,6 +8,7 @@ use super::serio_bus;
 /// 串行设备,实现该trait的设备实例挂载在serio总线上,同时应该实现Device trait
 ///
 /// 参考: https://code.dragonos.org.cn/xref/linux-6.1.9/include/linux/serio.h#20
+#[allow(dead_code)]
 pub trait SerioDevice: Device {
     /// # 函数功能
     ///

+ 1 - 0
kernel/src/driver/input/serio/serio_driver.rs

@@ -11,6 +11,7 @@ use super::{serio_bus, serio_device::SerioDevice};
 /// 实现该trait的设备驱动实例应挂载在serio总线上,同时应该实现Driver trait
 ///
 /// 参考:  https://code.dragonos.org.cn/xref/linux-6.1.9/include/linux/serio.h#67
+#[allow(dead_code)]
 pub trait SerioDriver: Driver {
     // 写入时唤醒设备
     fn write_wakeup(&self, device: &Arc<dyn SerioDevice>) -> Result<(), SystemError>;

+ 2 - 1
kernel/src/driver/net/e1000e/e1000e.rs

@@ -780,7 +780,8 @@ const E1000E_TXD_CMD_EOP: u8 = 1 << 0;
 const E1000E_TXD_CMD_IFCS: u8 = 1 << 1;
 const E1000E_TXD_CMD_RS: u8 = 1 << 3;
 
-// E1000E驱动初始化过程中可能的错误
+/// E1000E驱动初始化过程中可能的错误
+#[allow(dead_code)]
 pub enum E1000EPciError {
     // 获取到错误类型的BAR(IO BAR)
     // An IO BAR was provided rather than a memory BAR.

+ 0 - 1
kernel/src/driver/net/loopback.rs

@@ -15,7 +15,6 @@ use alloc::sync::{Arc, Weak};
 use alloc::vec::Vec;
 use core::cell::UnsafeCell;
 use core::ops::{Deref, DerefMut};
-use log::debug;
 use smoltcp::wire::HardwareAddress;
 use smoltcp::{
     phy::{self},

+ 1 - 1
kernel/src/driver/net/mod.rs

@@ -13,7 +13,7 @@ pub mod e1000e;
 pub mod irq_handle;
 pub mod loopback;
 pub mod virtio_net;
-
+#[allow(dead_code)]
 pub trait NetDevice: Device {
     /// @brief 获取网卡的MAC地址
     fn mac(&self) -> EthernetAddress;

+ 1 - 2
kernel/src/driver/open_firmware/fdt.rs

@@ -468,8 +468,7 @@ fn read_cell(reg_value: &[u8], base_index: usize, cells: usize) -> (u64, usize)
         1 => {
             return (
                 u32::from_be_bytes(reg_value[base_index..base_index + 4].try_into().unwrap())
-                    .try_into()
-                    .unwrap(),
+                    .into(),
                 next_base_index,
             );
         }

+ 1 - 0
kernel/src/driver/pci/driver.rs

@@ -12,6 +12,7 @@ use super::{dev_id::PciDeviceID, device::PciDevice, subsys::pci_bus};
 /// Pci驱动应该实现的trait
 ///
 /// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/include/linux/pci.h#907
+#[allow(dead_code)]
 pub trait PciDriver: Driver {
     /// # 函数的功能
     /// 对设备进行probe操作

+ 1 - 0
kernel/src/driver/rtc/mod.rs

@@ -47,6 +47,7 @@ pub trait RtcDevice: Device {
     fn class_ops(&self) -> &'static dyn RtcClassOps;
 }
 
+#[allow(dead_code)]
 pub trait RtcClassOps: Send + Sync + Debug {
     fn read_time(&self, dev: &Arc<dyn RtcDevice>) -> Result<RtcTime, SystemError>;
     fn set_time(&self, dev: &Arc<dyn RtcDevice>, time: &RtcTime) -> Result<(), SystemError>;

+ 2 - 0
kernel/src/driver/serial/mod.rs

@@ -9,6 +9,7 @@ use self::serial8250::serial8250_manager;
 
 pub mod serial8250;
 
+#[allow(dead_code)]
 pub trait UartDriver: Debug + Send + Sync {
     fn device_number(&self) -> DeviceNumber;
 
@@ -21,6 +22,7 @@ pub trait UartDriver: Debug + Send + Sync {
 /// 串口端口应当实现的trait
 ///
 /// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/include/linux/serial_core.h#428
+#[allow(dead_code)]
 pub trait UartPort {
     fn iobase(&self) -> Option<usize> {
         None

+ 1 - 0
kernel/src/driver/serial/serial8250/mod.rs

@@ -141,6 +141,7 @@ impl Serial8250Manager {
 }
 
 /// 所有的8250串口设备都应该实现的trait
+#[allow(dead_code)]
 trait Serial8250Port: UartPort {
     fn device(&self) -> Option<Arc<Serial8250ISADevices>> {
         None

+ 2 - 0
kernel/src/driver/serial/serial8250/serial8250_pio.rs

@@ -20,6 +20,7 @@ static mut PIO_PORTS: [Option<Serial8250PIOPort>; 8] =
     [None, None, None, None, None, None, None, None];
 
 impl Serial8250Manager {
+    #[allow(static_mut_refs)]
     pub(super) fn bind_pio_ports(
         &self,
         uart_driver: &Arc<Serial8250ISADriver>,
@@ -251,6 +252,7 @@ impl Serial8250PIOPortInner {
         Self { device: None }
     }
 
+    #[allow(dead_code)]
     pub fn device(&self) -> Option<Arc<Serial8250ISADevices>> {
         if let Some(device) = self.device.as_ref() {
             return device.upgrade();

+ 1 - 0
kernel/src/driver/tty/console.rs

@@ -10,6 +10,7 @@ pub trait ConsoleSwitch: Sync + Send {
     fn con_init(&self, vc_data: &mut VirtualConsoleData, init: bool) -> Result<(), SystemError>;
 
     /// 进行释放等系列操作,目前未使用
+    #[allow(dead_code)]
     fn con_deinit(&self) -> Result<(), SystemError>;
 
     /// ## 清空console的一片区域

+ 0 - 12
kernel/src/driver/tty/tty_core.rs

@@ -7,7 +7,6 @@ use alloc::{
     collections::LinkedList,
     string::String,
     sync::{Arc, Weak},
-    vec::Vec,
 };
 use system_error::SystemError;
 
@@ -277,14 +276,6 @@ pub struct TtyContorlInfo {
     pub packet: bool,
 }
 
-#[derive(Debug, Default)]
-pub struct TtyCoreWriteData {
-    /// 写缓冲区
-    pub write_buf: Vec<u8>,
-    /// 写入数量
-    pub write_cnt: usize,
-}
-
 #[derive(Debug, Default)]
 pub struct TtyFlowState {
     /// 表示流控是否被停止
@@ -465,9 +456,6 @@ impl TtyCoreData {
     }
 }
 
-/// TTY 核心接口,不同的tty需要各自实现这个trait
-pub trait TtyCoreFuncs: Debug + Send + Sync {}
-
 impl TtyOperation for TtyCore {
     #[inline]
     fn open(&self, tty: &TtyCoreData) -> Result<(), SystemError> {

+ 2 - 2
kernel/src/driver/tty/tty_ldisc/ntty.rs

@@ -1344,7 +1344,7 @@ impl NTtyData {
                                     tty.write(core, &[8], 1)?;
                                 }
                                 if tty.put_char(tty.core(), b' ').is_err() {
-                                    tty.write(core, &[b' '], 1)?;
+                                    tty.write(core, b" ", 1)?;
                                 }
                                 self.cursor_column -= 1;
                                 space -= 1;
@@ -1357,7 +1357,7 @@ impl NTtyData {
                                 }
 
                                 if tty.put_char(tty.core(), b'^').is_err() {
-                                    tty.write(core, &[b'^'], 1)?;
+                                    tty.write(core, b"^", 1)?;
                                 }
 
                                 if tty.put_char(tty.core(), ch ^ 0o100).is_err() {

+ 1 - 1
kernel/src/driver/tty/virtual_terminal/virtual_console.rs

@@ -132,7 +132,6 @@ pub struct VirtualConsoleData {
     pub utf_char: u32,
     /// 构建utf时需要的参数,表示目前接收了多少个字节的数据来构建utf字符
     pub npar: u32,
-    ///
     pub par: [u32; NPAR],
 
     /// 字符转换表 用于将输入字符映射到特定的字符
@@ -1786,6 +1785,7 @@ impl VirtualConsoleData {
         draw.size = 0;
     }
 
+    #[allow(clippy::manual_rotate)]
     fn build_attr(
         &self,
         color: u8,

+ 1 - 1
kernel/src/driver/video/fbdev/base/fbcon/mod.rs

@@ -341,12 +341,12 @@ impl Attribute for AttrCursorBlink {
 }
 
 #[derive(Debug, Default)]
+#[allow(dead_code)]
 pub struct FrameBufferConsoleData {
     /// 光标闪烁间隔
     pub cursor_blink_jiffies: i64,
     /// 是否刷新光标
     pub cursor_flash: bool,
-    ///
     pub display: FbConsoleDisplay,
     /// 光标状态
     pub cursor_state: FbCursor,

+ 3 - 0
kernel/src/driver/video/fbdev/base/mod.rs

@@ -301,6 +301,7 @@ impl FrameBufferInfoData {
 }
 
 /// 帧缓冲区信息
+#[allow(dead_code)]
 pub trait FrameBufferInfo: FrameBufferOps {
     fn framebuffer_info_data(&self) -> &RwLock<FrameBufferInfoData>;
 
@@ -377,6 +378,7 @@ pub trait FrameBufferInfo: FrameBufferOps {
 /// 帧缓冲区操作
 ///
 /// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/include/linux/fb.h#237
+#[allow(dead_code)]
 pub trait FrameBufferOps {
     fn fb_open(&self, user: bool);
     fn fb_release(&self, user: bool);
@@ -1063,6 +1065,7 @@ pub enum FbAccel {
     // Add other accelerators here
 }
 
+#[allow(dead_code)]
 #[derive(Debug, Copy, Clone)]
 pub struct BootTimeScreenInfo {
     pub origin_x: u8,

+ 1 - 0
kernel/src/driver/virtio/mod.rs

@@ -18,6 +18,7 @@ pub mod virtio_impl;
 /// virtio 设备厂商ID
 pub const VIRTIO_VENDOR_ID: u16 = 0x1af4;
 
+#[allow(dead_code)]
 pub trait VirtIODevice: Device {
     fn handle_irq(&self, _irq: IrqNumber) -> Result<IrqReturn, SystemError>;
 

+ 3 - 0
kernel/src/exception/irqchip.rs

@@ -35,6 +35,7 @@ use super::{
 };
 
 /// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/include/linux/irq.h#506
+#[allow(dead_code)]
 pub trait IrqChip: Sync + Send + Any + Debug {
     fn name(&self) -> &'static str;
     /// start up the interrupt (defaults to ->enable if ENOSYS)
@@ -127,6 +128,7 @@ pub trait IrqChip: Sync + Send + Any + Debug {
     }
 
     /// enable/disable power management wake-on of an interrupt
+    #[allow(dead_code)]
     fn irq_set_wake(&self, _irq_data: &Arc<IrqData>, _on: bool) -> Result<(), SystemError> {
         Err(SystemError::ENOSYS)
     }
@@ -281,6 +283,7 @@ struct InnerIrqChipGeneric {
     chip_types: Vec<IrqChipType>,
 }
 
+#[allow(dead_code)]
 pub trait IrqChipGenericOps: Debug + Send + Sync {
     /// Alternate I/O accessor (defaults to readl if NULL)
     unsafe fn reg_readl(&self, addr: VirtAddr) -> u32;

+ 2 - 0
kernel/src/exception/irqdomain.rs

@@ -644,6 +644,7 @@ pub enum IrqDomainBusToken {
 /// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/include/linux/irqdomain.h#107
 pub trait IrqDomainOps: Debug + Send + Sync {
     /// 匹配一个中断控制器设备节点到一个主机。
+    #[allow(dead_code)]
     fn match_node(
         &self,
         _irq_domain: &Arc<IrqDomain>,
@@ -667,6 +668,7 @@ pub trait IrqDomainOps: Debug + Send + Sync {
     }
 
     /// 删除一个虚拟中断号与一个硬件中断号之间的映射。
+    #[allow(dead_code)]
     fn unmap(&self, irq_domain: &Arc<IrqDomain>, virq: IrqNumber);
 
     fn activate(

Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff