[INFO] cloning repository https://github.com/CaoGaorong/os-in-rust
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/CaoGaorong/os-in-rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FCaoGaorong%2Fos-in-rust", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FCaoGaorong%2Fos-in-rust'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 1a447c65ebb957a97a72e7aa9fe3321cde56c5af
[INFO] checking CaoGaorong/os-in-rust against master#292be5c7c05138d753bbd4b30db7a3f1a5c914f7 for pr-148271
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FCaoGaorong%2Fos-in-rust" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] [stderr] Updating files:  24% (67/270)
Updating files:  25% (68/270)
Updating files:  26% (71/270)
Updating files:  27% (73/270)
Updating files:  28% (76/270)
Updating files:  29% (79/270)
Updating files:  30% (81/270)
Updating files:  31% (84/270)
Updating files:  32% (87/270)
Updating files:  33% (90/270)
Updating files:  34% (92/270)
Updating files:  35% (95/270)
Updating files:  36% (98/270)
Updating files:  37% (100/270)
Updating files:  38% (103/270)
Updating files:  39% (106/270)
Updating files:  40% (108/270)
Updating files:  41% (111/270)
Updating files:  42% (114/270)
Updating files:  43% (117/270)
Updating files:  44% (119/270)
Updating files:  45% (122/270)
Updating files:  46% (125/270)
Updating files:  47% (127/270)
Updating files:  48% (130/270)
Updating files:  49% (133/270)
Updating files:  50% (135/270)
Updating files:  51% (138/270)
Updating files:  52% (141/270)
Updating files:  53% (144/270)
Updating files:  54% (146/270)
Updating files:  55% (149/270)
Updating files:  56% (152/270)
Updating files:  57% (154/270)
Updating files:  58% (157/270)
Updating files:  59% (160/270)
Updating files:  60% (162/270)
Updating files:  61% (165/270)
Updating files:  62% (168/270)
Updating files:  63% (171/270)
Updating files:  64% (173/270)
Updating files:  65% (176/270)
Updating files:  66% (179/270)
Updating files:  67% (181/270)
Updating files:  68% (184/270)
Updating files:  69% (187/270)
Updating files:  70% (189/270)
Updating files:  71% (192/270)
Updating files:  72% (195/270)
Updating files:  73% (198/270)
Updating files:  74% (200/270)
Updating files:  75% (203/270)
Updating files:  76% (206/270)
Updating files:  77% (208/270)
Updating files:  78% (211/270)
Updating files:  79% (214/270)
Updating files:  80% (216/270)
Updating files:  81% (219/270)
Updating files:  82% (222/270)
Updating files:  83% (225/270)
Updating files:  84% (227/270)
Updating files:  85% (230/270)
Updating files:  86% (233/270)
Updating files:  87% (235/270)
Updating files:  88% (238/270)
Updating files:  89% (241/270)
Updating files:  90% (243/270)
Updating files:  91% (246/270)
Updating files:  92% (249/270)
Updating files:  93% (252/270)
Updating files:  94% (254/270)
Updating files:  95% (257/270)
Updating files:  96% (260/270)
Updating files:  97% (262/270)
Updating files:  98% (265/270)
Updating files:  99% (268/270)
Updating files: 100% (270/270)
Updating files: 100% (270/270), done.
[INFO] started tweaking git repo https://github.com/CaoGaorong/os-in-rust
[INFO] finished tweaking git repo https://github.com/CaoGaorong/os-in-rust
[INFO] tweaked toml for git repo https://github.com/CaoGaorong/os-in-rust written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/CaoGaorong/os-in-rust on toolchain 292be5c7c05138d753bbd4b30db7a3f1a5c914f7
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+292be5c7c05138d753bbd4b30db7a3f1a5c914f7" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/CaoGaorong/os-in-rust already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+292be5c7c05138d753bbd4b30db7a3f1a5c914f7" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: profiles for the non root package will be ignored, specify profiles at the workspace root:
[INFO] [stderr] package:   /workspace/builds/worker-7-tc1/source/common/Cargo.toml
[INFO] [stderr] workspace: /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] [stderr] warning: profiles for the non root package will be ignored, specify profiles at the workspace root:
[INFO] [stderr] package:   /workspace/builds/worker-7-tc1/source/rrt/Cargo.toml
[INFO] [stderr] workspace: /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded volatile v0.2.7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+292be5c7c05138d753bbd4b30db7a3f1a5c914f7" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 5775269c394d62878db1c1c558bad7ba6322e05953bf3ae38dc4df044f9342ca
[INFO] running `Command { std: "docker" "start" "-a" "5775269c394d62878db1c1c558bad7ba6322e05953bf3ae38dc4df044f9342ca", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5775269c394d62878db1c1c558bad7ba6322e05953bf3ae38dc4df044f9342ca", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5775269c394d62878db1c1c558bad7ba6322e05953bf3ae38dc4df044f9342ca", kill_on_drop: false }`
[INFO] [stdout] 5775269c394d62878db1c1c558bad7ba6322e05953bf3ae38dc4df044f9342ca
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+292be5c7c05138d753bbd4b30db7a3f1a5c914f7" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 912645a032ea02e5928f33be2bbf89a48393daa43b286bebb44d5833a1634e32
[INFO] running `Command { std: "docker" "start" "-a" "912645a032ea02e5928f33be2bbf89a48393daa43b286bebb44d5833a1634e32", kill_on_drop: false }`
[INFO] [stderr] warning: profiles for the non root package will be ignored, specify profiles at the workspace root:
[INFO] [stderr] package:   /opt/rustwide/workdir/common/Cargo.toml
[INFO] [stderr] workspace: /opt/rustwide/workdir/Cargo.toml
[INFO] [stderr] warning: profiles for the non root package will be ignored, specify profiles at the workspace root:
[INFO] [stderr] package:   /opt/rustwide/workdir/rrt/Cargo.toml
[INFO] [stderr] workspace: /opt/rustwide/workdir/Cargo.toml
[INFO] [stderr]     Checking volatile v0.2.7
[INFO] [stderr]    Compiling kernel v0.1.0 (/opt/rustwide/workdir/kernel)
[INFO] [stderr]    Compiling loader v0.1.0 (/opt/rustwide/workdir/loader)
[INFO] [stderr]    Compiling loader2 v0.1.0 (/opt/rustwide/workdir/loader2)
[INFO] [stderr]    Compiling echo v0.1.0 (/opt/rustwide/workdir/echo)
[INFO] [stderr]    Compiling mbr v0.1.0 (/opt/rustwide/workdir/mbr)
[INFO] [stderr]    Compiling grep v0.1.0 (/opt/rustwide/workdir/grep)
[INFO] [stderr]    Compiling user v0.1.0 (/opt/rustwide/workdir/user)
[INFO] [stderr]    Compiling cat v0.1.0 (/opt/rustwide/workdir/cat)
[INFO] [stderr]    Compiling os-in-rust v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Checking spin v0.9.8
[INFO] [stderr]     Checking os_in_rust_common v0.1.0 (/opt/rustwide/workdir/common)
[INFO] [stdout] warning: unused import: `core::arch::asm`
[INFO] [stdout]  --> common/src/dap.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::arch::asm;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `arch::asm`
[INFO] [stdout]  --> common/src/gdt.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::{arch::asm, mem::size_of, ptr::addr_of};
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::arch::asm`
[INFO] [stdout]  --> common/src/reg_cr0.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::arch::asm;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::arch::asm`
[INFO] [stdout]  --> common/src/reg_cr3.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::arch::asm;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `printkln`
[INFO] [stdout]  --> common/src/reg_cr3.rs:7:32
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::{paging::PageTable, printkln};
[INFO] [stdout]   |                                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::arch::asm`
[INFO] [stdout]  --> common/src/selector.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::arch::asm;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::arch::asm`
[INFO] [stdout]  --> common/src/instruction.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::arch::asm;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Error` and `self`
[INFO] [stdout]  --> common/src/utils.rs:1:17
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::fmt::{self, Error};
[INFO] [stdout]   |                 ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::fmt::Write`
[INFO] [stdout]  --> common/src/utils.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use core::fmt::Write;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Add`, `Div`, and `Sub`
[INFO] [stdout]  --> common/src/utils.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use core::ops::{Add, Div, Sub};
[INFO] [stdout]   |                 ^^^  ^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ASSERT`, `MY_PANIC`, and `printkln`
[INFO] [stdout]  --> common/src/utils.rs:4:13
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::{printkln, ASSERT, MY_PANIC};
[INFO] [stdout]   |             ^^^^^^^^  ^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `arch::asm`
[INFO] [stdout]  --> common/src/idt.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::{arch::asm, mem::size_of};
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gdt::DescriptorType`
[INFO] [stdout]  --> common/src/idt.rs:3:24
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::{constants, gdt::DescriptorType, racy_cell::RacyCell, sd::SegmentDPL, selector::SegmentSelector, utils};
[INFO] [stdout]   |                        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `arch::asm`
[INFO] [stdout]  --> common/src/port.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::{arch::asm, marker::PhantomData};
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::printk`
[INFO] [stdout]  --> common/src/port.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::printk;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `idt::InterruptTypeEnum` and `printkln`
[INFO] [stdout]  --> common/src/pic.rs:2:24
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::{constants, idt::InterruptTypeEnum, port::Port, printkln, utils};
[INFO] [stdout]   |                        ^^^^^^^^^^^^^^^^^^^^^^              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `arch::asm` and `mem::size_of`
[INFO] [stdout]  --> common/src/bios_mem.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::{arch::asm, mem::size_of};
[INFO] [stdout]   |            ^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::racy_cell::RacyCell`
[INFO] [stdout]  --> common/src/bios_mem.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::racy_cell::RacyCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MY_PANIC`
[INFO] [stdout]  --> common/src/linked_list.rs:2:31
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::{printkln, ASSERT, MY_PANIC, printk};
[INFO] [stdout]   |                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::arch::asm`
[INFO] [stdout]  --> common/src/reg_eflags.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::arch::asm;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `printkln`
[INFO] [stdout]  --> common/src/domain.rs:3:21
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::{printk, printkln};
[INFO] [stdout]   |                     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::arch::asm`
[INFO] [stdout]  --> common/src/dap.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::arch::asm;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `arch::asm`
[INFO] [stdout]  --> common/src/gdt.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::{arch::asm, mem::size_of, ptr::addr_of};
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::arch::asm`
[INFO] [stdout]  --> common/src/reg_cr0.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::arch::asm;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::arch::asm`
[INFO] [stdout]  --> common/src/reg_cr3.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::arch::asm;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `printkln`
[INFO] [stdout]  --> common/src/reg_cr3.rs:7:32
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::{paging::PageTable, printkln};
[INFO] [stdout]   |                                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::arch::asm`
[INFO] [stdout]  --> common/src/selector.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::arch::asm;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::arch::asm`
[INFO] [stdout]  --> common/src/instruction.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::arch::asm;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Error` and `self`
[INFO] [stdout]  --> common/src/utils.rs:1:17
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::fmt::{self, Error};
[INFO] [stdout]   |                 ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::fmt::Write`
[INFO] [stdout]  --> common/src/utils.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use core::fmt::Write;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Add`, `Div`, and `Sub`
[INFO] [stdout]  --> common/src/utils.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use core::ops::{Add, Div, Sub};
[INFO] [stdout]   |                 ^^^  ^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ASSERT`, `MY_PANIC`, and `printkln`
[INFO] [stdout]  --> common/src/utils.rs:4:13
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::{printkln, ASSERT, MY_PANIC};
[INFO] [stdout]   |             ^^^^^^^^  ^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `arch::asm`
[INFO] [stdout]  --> common/src/idt.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::{arch::asm, mem::size_of};
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gdt::DescriptorType`
[INFO] [stdout]  --> common/src/idt.rs:3:24
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::{constants, gdt::DescriptorType, racy_cell::RacyCell, sd::SegmentDPL, selector::SegmentSelector, utils};
[INFO] [stdout]   |                        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `arch::asm`
[INFO] [stdout]  --> common/src/port.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::{arch::asm, marker::PhantomData};
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::printk`
[INFO] [stdout]  --> common/src/port.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::printk;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `idt::InterruptTypeEnum` and `printkln`
[INFO] [stdout]  --> common/src/pic.rs:2:24
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::{constants, idt::InterruptTypeEnum, port::Port, printkln, utils};
[INFO] [stdout]   |                        ^^^^^^^^^^^^^^^^^^^^^^              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `arch::asm` and `mem::size_of`
[INFO] [stdout]  --> common/src/bios_mem.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::{arch::asm, mem::size_of};
[INFO] [stdout]   |            ^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::racy_cell::RacyCell`
[INFO] [stdout]  --> common/src/bios_mem.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::racy_cell::RacyCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MY_PANIC`
[INFO] [stdout]  --> common/src/linked_list.rs:2:31
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::{printkln, ASSERT, MY_PANIC, printk};
[INFO] [stdout]   |                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::arch::asm`
[INFO] [stdout]  --> common/src/reg_eflags.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::arch::asm;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `printkln`
[INFO] [stdout]  --> common/src/domain.rs:3:21
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::{printk, printkln};
[INFO] [stdout]   |                     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `const_mut_refs` has been stable since 1.83.0 and no longer requires an attribute to enable
[INFO] [stdout]  --> common/src/lib.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | #![feature(const_mut_refs)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(stable_features)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `const_mut_refs` has been stable since 1.83.0 and no longer requires an attribute to enable
[INFO] [stdout]  --> common/src/lib.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | #![feature(const_mut_refs)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(stable_features)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `lba`
[INFO] [stdout]    --> common/src/dap.rs:106:18
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub fn load_disk(lba: u64, num_sec: u16, mem_addr: u32) {
[INFO] [stdout]     |                  ^^^ help: if this is intentional, prefix it with an underscore: `_lba`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_sec`
[INFO] [stdout]    --> common/src/dap.rs:106:28
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub fn load_disk(lba: u64, num_sec: u16, mem_addr: u32) {
[INFO] [stdout]     |                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_sec`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mem_addr`
[INFO] [stdout]    --> common/src/dap.rs:106:42
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub fn load_disk(lba: u64, num_sec: u16, mem_addr: u32) {
[INFO] [stdout]     |                                          ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mem_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]   --> common/src/gdt.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     unsafe { addr_of!(GDT) }
[INFO] [stdout]    |     ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `gdt_addr`
[INFO] [stdout]   --> common/src/gdt.rs:40:26
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub fn load_gdtr_by_addr(gdt_addr: *const GlobalDescriptorTable) {
[INFO] [stdout]    |                          ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_gdt_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reg`
[INFO] [stdout]   --> common/src/reg_cr0.rs:70:15
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub fn set_on(reg: CR0) -> u32 {
[INFO] [stdout]    |               ^^^ help: if this is intentional, prefix it with an underscore: `_reg`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reg`
[INFO] [stdout]   --> common/src/reg_cr0.rs:88:16
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub fn set_off(reg: CR0) -> u32{
[INFO] [stdout]    |                ^^^ help: if this is intentional, prefix it with an underscore: `_reg`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `val`
[INFO] [stdout]   --> common/src/reg_cr0.rs:97:12
[INFO] [stdout]    |
[INFO] [stdout] 97 | fn set_cr0(val: u32) {
[INFO] [stdout]    |            ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vaddr`
[INFO] [stdout]    --> common/src/instruction.rs:119:24
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub fn invalidate_page(vaddr: usize) {
[INFO] [stdout]     |                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_vaddr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `esp`
[INFO] [stdout]    --> common/src/instruction.rs:137:16
[INFO] [stdout]     |
[INFO] [stdout] 137 | pub fn set_esp(esp: u32) {
[INFO] [stdout]     |                ^^^ help: if this is intentional, prefix it with an underscore: `_esp`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `port`
[INFO] [stdout]   --> common/src/port.rs:56:23
[INFO] [stdout]    |
[INFO] [stdout] 56 |     fn read_from_port(port: u16) -> Self {
[INFO] [stdout]    |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_port`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `port`
[INFO] [stdout]   --> common/src/port.rs:70:23
[INFO] [stdout]    |
[INFO] [stdout] 70 |     fn read_from_port(port: u16) -> Self {
[INFO] [stdout]    |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_port`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `port`
[INFO] [stdout]   --> common/src/port.rs:83:22
[INFO] [stdout]    |
[INFO] [stdout] 83 |     fn write_to_port(port: u16, value: Self) {
[INFO] [stdout]    |                      ^^^^ help: if this is intentional, prefix it with an underscore: `_port`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]   --> common/src/port.rs:83:33
[INFO] [stdout]    |
[INFO] [stdout] 83 |     fn write_to_port(port: u16, value: Self) {
[INFO] [stdout]    |                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `port`
[INFO] [stdout]   --> common/src/port.rs:95:22
[INFO] [stdout]    |
[INFO] [stdout] 95 |     fn write_to_port(port: u16, value: Self) {
[INFO] [stdout]    |                      ^^^^ help: if this is intentional, prefix it with an underscore: `_port`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]   --> common/src/port.rs:95:33
[INFO] [stdout]    |
[INFO] [stdout] 95 |     fn write_to_port(port: u16, value: Self) {
[INFO] [stdout]    |                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `port`
[INFO] [stdout]    --> common/src/port.rs:127:19
[INFO] [stdout]     |
[INFO] [stdout] 127 | pub fn read_words(port: u16, word_cnt: u32, buf_addr: u32) {
[INFO] [stdout]     |                   ^^^^ help: if this is intentional, prefix it with an underscore: `_port`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `word_cnt`
[INFO] [stdout]    --> common/src/port.rs:127:30
[INFO] [stdout]     |
[INFO] [stdout] 127 | pub fn read_words(port: u16, word_cnt: u32, buf_addr: u32) {
[INFO] [stdout]     |                              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_word_cnt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `buf_addr`
[INFO] [stdout]    --> common/src/port.rs:127:45
[INFO] [stdout]     |
[INFO] [stdout] 127 | pub fn read_words(port: u16, word_cnt: u32, buf_addr: u32) {
[INFO] [stdout]     |                                             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_buf_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `port`
[INFO] [stdout]    --> common/src/port.rs:147:20
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub fn write_words(port: u16, buf_addr: u32, word_cnt: u32) {
[INFO] [stdout]     |                    ^^^^ help: if this is intentional, prefix it with an underscore: `_port`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `buf_addr`
[INFO] [stdout]    --> common/src/port.rs:147:31
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub fn write_words(port: u16, buf_addr: u32, word_cnt: u32) {
[INFO] [stdout]     |                               ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_buf_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `word_cnt`
[INFO] [stdout]    --> common/src/port.rs:147:46
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub fn write_words(port: u16, buf_addr: u32, word_cnt: u32) {
[INFO] [stdout]     |                                              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_word_cnt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `wait_port`
[INFO] [stdout]   --> common/src/pic.rs:78:13
[INFO] [stdout]    |
[INFO] [stdout] 78 |         let wait_port = Port::<u8>::new(0x80);
[INFO] [stdout]    |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_wait_port`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `primary_mask`
[INFO] [stdout]   --> common/src/pic.rs:82:13
[INFO] [stdout]    |
[INFO] [stdout] 82 |         let primary_mask = self.primary.data_port.read();
[INFO] [stdout]    |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_primary_mask`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `secondary_mask`
[INFO] [stdout]   --> common/src/pic.rs:83:13
[INFO] [stdout]    |
[INFO] [stdout] 83 |         let secondary_mask = self.secondary.data_port.read();
[INFO] [stdout]    |             ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_secondary_mask`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]    --> common/src/bitmap.rs:153:19
[INFO] [stdout]     |
[INFO] [stdout] 153 |     fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
[INFO] [stdout]     |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> common/src/pool.rs:74:19
[INFO] [stdout]    |
[INFO] [stdout] 74 |     fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
[INFO] [stdout]    |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `lba`
[INFO] [stdout]    --> common/src/dap.rs:106:18
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub fn load_disk(lba: u64, num_sec: u16, mem_addr: u32) {
[INFO] [stdout]     |                  ^^^ help: if this is intentional, prefix it with an underscore: `_lba`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_sec`
[INFO] [stdout]    --> common/src/dap.rs:106:28
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub fn load_disk(lba: u64, num_sec: u16, mem_addr: u32) {
[INFO] [stdout]     |                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_sec`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mem_addr`
[INFO] [stdout]    --> common/src/dap.rs:106:42
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub fn load_disk(lba: u64, num_sec: u16, mem_addr: u32) {
[INFO] [stdout]     |                                          ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mem_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]    --> common/src/domain.rs:104:19
[INFO] [stdout]     |
[INFO] [stdout] 104 |     fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
[INFO] [stdout]     |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]   --> common/src/gdt.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     unsafe { addr_of!(GDT) }
[INFO] [stdout]    |     ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `gdt_addr`
[INFO] [stdout]   --> common/src/gdt.rs:40:26
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub fn load_gdtr_by_addr(gdt_addr: *const GlobalDescriptorTable) {
[INFO] [stdout]    |                          ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_gdt_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reg`
[INFO] [stdout]   --> common/src/reg_cr0.rs:70:15
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub fn set_on(reg: CR0) -> u32 {
[INFO] [stdout]    |               ^^^ help: if this is intentional, prefix it with an underscore: `_reg`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reg`
[INFO] [stdout]   --> common/src/reg_cr0.rs:88:16
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub fn set_off(reg: CR0) -> u32{
[INFO] [stdout]    |                ^^^ help: if this is intentional, prefix it with an underscore: `_reg`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `val`
[INFO] [stdout]   --> common/src/reg_cr0.rs:97:12
[INFO] [stdout]    |
[INFO] [stdout] 97 | fn set_cr0(val: u32) {
[INFO] [stdout]    |            ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `PortRead` is more private than the item `Port<T>`
[INFO] [stdout]   --> common/src/port.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl <T:PortRead + PortWrite> Port<T> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ implementation `Port<T>` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but trait `PortRead` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> common/src/port.rs:42:1
[INFO] [stdout]    |
[INFO] [stdout] 42 | trait PortRead {
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_bounds)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `PortWrite` is more private than the item `Port<T>`
[INFO] [stdout]   --> common/src/port.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl <T:PortRead + PortWrite> Port<T> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ implementation `Port<T>` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but trait `PortWrite` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> common/src/port.rs:35:1
[INFO] [stdout]    |
[INFO] [stdout] 35 | trait PortWrite {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `PortRead` is more private than the item `Port<T>`
[INFO] [stdout]   --> common/src/port.rs:19:1
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl <T:PortRead> Port<T> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^ implementation `Port<T>` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but trait `PortRead` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> common/src/port.rs:42:1
[INFO] [stdout]    |
[INFO] [stdout] 42 | trait PortRead {
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `PortWrite` is more private than the item `Port<T>`
[INFO] [stdout]   --> common/src/port.rs:25:1
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl <T:PortWrite> Port<T> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^ implementation `Port<T>` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but trait `PortWrite` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> common/src/port.rs:35:1
[INFO] [stdout]    |
[INFO] [stdout] 35 | trait PortWrite {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Pic` is more private than the item `ChainedPics::primary`
[INFO] [stdout]    --> common/src/pic.rs:47:5
[INFO] [stdout]     |
[INFO] [stdout]  47 |     pub primary: Pic,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^ field `ChainedPics::primary` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `Pic` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> common/src/pic.rs:137:1
[INFO] [stdout]     |
[INFO] [stdout] 137 | struct Pic {
[INFO] [stdout]     | ^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Pic` is more private than the item `ChainedPics::secondary`
[INFO] [stdout]    --> common/src/pic.rs:51:5
[INFO] [stdout]     |
[INFO] [stdout]  51 |     pub secondary: Pic,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^ field `ChainedPics::secondary` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `Pic` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> common/src/pic.rs:137:1
[INFO] [stdout]     |
[INFO] [stdout] 137 | struct Pic {
[INFO] [stdout]     | ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vaddr`
[INFO] [stdout]    --> common/src/instruction.rs:119:24
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub fn invalidate_page(vaddr: usize) {
[INFO] [stdout]     |                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_vaddr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `esp`
[INFO] [stdout]    --> common/src/instruction.rs:137:16
[INFO] [stdout]     |
[INFO] [stdout] 137 | pub fn set_esp(esp: u32) {
[INFO] [stdout]     |                ^^^ help: if this is intentional, prefix it with an underscore: `_esp`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ListNodeTrait` is more private than the item `linked_list_deprecated::LinkedNode`
[INFO] [stdout]   --> common/src/linked_list_deprecated.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct LinkedNode<T: ListNodeTrait> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ struct `linked_list_deprecated::LinkedNode` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but trait `ListNodeTrait` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> common/src/linked_list_deprecated.rs:3:1
[INFO] [stdout]    |
[INFO] [stdout]  3 | trait ListNodeTrait: Copy{}
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ListNodeTrait` is more private than the item `linked_list_deprecated::LinkedNode<T>`
[INFO] [stdout]   --> common/src/linked_list_deprecated.rs:27:1
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl<T: ListNodeTrait> LinkedNode<T> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ implementation `linked_list_deprecated::LinkedNode<T>` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but trait `ListNodeTrait` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> common/src/linked_list_deprecated.rs:3:1
[INFO] [stdout]    |
[INFO] [stdout]  3 | trait ListNodeTrait: Copy{}
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ListNodeTrait` is more private than the item `linked_list_deprecated::LinkedList`
[INFO] [stdout]   --> common/src/linked_list_deprecated.rs:40:1
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct LinkedList<T: ListNodeTrait> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ struct `linked_list_deprecated::LinkedList` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but trait `ListNodeTrait` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> common/src/linked_list_deprecated.rs:3:1
[INFO] [stdout]    |
[INFO] [stdout]  3 | trait ListNodeTrait: Copy{}
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ListNodeTrait` is more private than the item `linked_list_deprecated::LinkedList<T>`
[INFO] [stdout]   --> common/src/linked_list_deprecated.rs:50:1
[INFO] [stdout]    |
[INFO] [stdout] 50 | impl<T: ListNodeTrait> LinkedList<T> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ implementation `linked_list_deprecated::LinkedList<T>` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but trait `ListNodeTrait` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> common/src/linked_list_deprecated.rs:3:1
[INFO] [stdout]    |
[INFO] [stdout]  3 | trait ListNodeTrait: Copy{}
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ListNodeTrait` is more private than the item `linked_list_deprecated::LinkedNodeIterator`
[INFO] [stdout]    --> common/src/linked_list_deprecated.rs:134:1
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub struct LinkedNodeIterator<T: ListNodeTrait> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ struct `linked_list_deprecated::LinkedNodeIterator` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but trait `ListNodeTrait` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> common/src/linked_list_deprecated.rs:3:1
[INFO] [stdout]     |
[INFO] [stdout]   3 | trait ListNodeTrait: Copy{}
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `CounterTrait` is more private than the item `set_frequency`
[INFO] [stdout]    --> common/src/pit.rs:52:1
[INFO] [stdout]     |
[INFO] [stdout]  52 | pub fn set_frequency(counter: &'static dyn CounterTrait, intr_frequency: u16) {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `set_frequency` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but trait `CounterTrait` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> common/src/pit.rs:137:1
[INFO] [stdout]     |
[INFO] [stdout] 137 | trait CounterTrait {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `ErrorFeature` is never constructed
[INFO] [stdout]  --> common/src/disk.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | enum PrimaryCommandRegister {
[INFO] [stdout]   |      ---------------------- variant in this enum
[INFO] [stdout] 8 |     Data = 0x1F0,
[INFO] [stdout] 9 |     ErrorFeature = 0x1F1,
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Identify` and `Write` are never constructed
[INFO] [stdout]   --> common/src/disk.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | enum CommandRegister {
[INFO] [stdout]    |      --------------- variants in this enum
[INFO] [stdout] 43 |     // 识别硬盘命令
[INFO] [stdout] 44 |     Identify = 0xEC,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     Write = 0x30,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `unit` is never read
[INFO] [stdout]   --> common/src/sd.rs:91:5
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct Granularity {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 90 |     value: u8,
[INFO] [stdout] 91 |     unit: u32
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Granularity` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_cr0` is never used
[INFO] [stdout]   --> common/src/reg_cr0.rs:97:4
[INFO] [stdout]    |
[INFO] [stdout] 97 | fn set_cr0(val: u32) {
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> common/src/idt.rs:273:8
[INFO] [stdout]     |
[INFO] [stdout] 272 | impl IDTR {
[INFO] [stdout]     | --------- associated function in this implementation
[INFO] [stdout] 273 |     fn new(idt: *const InterruptDescriptorTable) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `primary` and `secondary` are never used
[INFO] [stdout]    --> common/src/pic.rs:231:8
[INFO] [stdout]     |
[INFO] [stdout] 220 | impl ICW3 {
[INFO] [stdout]     | --------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 231 |     fn primary(connect_idx: u8) -> Self {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     fn secondary(primary_idx: u8) -> Self {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OCW2` is never constructed
[INFO] [stdout]    --> common/src/pic.rs:298:8
[INFO] [stdout]     |
[INFO] [stdout] 298 | struct OCW2 {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> common/src/pic.rs:308:8
[INFO] [stdout]     |
[INFO] [stdout] 301 | impl OCW2 {
[INFO] [stdout]     | --------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 308 |     fn new(rotation: bool, specific_level: bool, end_of_int: bool, config_data: u8) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `empty` is never used
[INFO] [stdout]   --> common/src/bios_mem.rs:26:14
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl AddressRangeDescriptorStructure {
[INFO] [stdout]    | ------------------------------------ associated function in this implementation
[INFO] [stdout] 26 |     const fn empty() -> Self {
[INFO] [stdout]    |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `counter1` and `counter2` are never read
[INFO] [stdout]    --> common/src/pit.rs:116:5
[INFO] [stdout]     |
[INFO] [stdout] 114 | struct CounterEnum {
[INFO] [stdout]     |        ----------- fields in this struct
[INFO] [stdout] 115 |     counter0: Counter,
[INFO] [stdout] 116 |     counter1: Counter,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 117 |     counter2: Counter,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> common/src/gdt.rs:48:14
[INFO] [stdout]    |
[INFO] [stdout] 48 |     unsafe { GDT.set_descriptor(desc_type, descriptor) };
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]    = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> common/src/gdt.rs:55:15
[INFO] [stdout]    |
[INFO] [stdout] 55 |     unsafe { *GDT.get_descriptor(desc_type) }
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> common/src/paging.rs:87:18
[INFO] [stdout]    |
[INFO] [stdout] 87 |      pub fn iter(&self) -> PageTableEntryIterator {
[INFO] [stdout]    |                  ^^^^^     ^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                  |
[INFO] [stdout]    |                  the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 87 |      pub fn iter(&self) -> PageTableEntryIterator<'_> {
[INFO] [stdout]    |                                                  ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `port`
[INFO] [stdout]   --> common/src/port.rs:56:23
[INFO] [stdout]    |
[INFO] [stdout] 56 |     fn read_from_port(port: u16) -> Self {
[INFO] [stdout]    |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_port`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `port`
[INFO] [stdout]   --> common/src/port.rs:70:23
[INFO] [stdout]    |
[INFO] [stdout] 70 |     fn read_from_port(port: u16) -> Self {
[INFO] [stdout]    |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_port`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `port`
[INFO] [stdout]   --> common/src/port.rs:83:22
[INFO] [stdout]    |
[INFO] [stdout] 83 |     fn write_to_port(port: u16, value: Self) {
[INFO] [stdout]    |                      ^^^^ help: if this is intentional, prefix it with an underscore: `_port`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]   --> common/src/port.rs:83:33
[INFO] [stdout]    |
[INFO] [stdout] 83 |     fn write_to_port(port: u16, value: Self) {
[INFO] [stdout]    |                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `port`
[INFO] [stdout]   --> common/src/port.rs:95:22
[INFO] [stdout]    |
[INFO] [stdout] 95 |     fn write_to_port(port: u16, value: Self) {
[INFO] [stdout]    |                      ^^^^ help: if this is intentional, prefix it with an underscore: `_port`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]   --> common/src/port.rs:95:33
[INFO] [stdout]    |
[INFO] [stdout] 95 |     fn write_to_port(port: u16, value: Self) {
[INFO] [stdout]    |                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `port`
[INFO] [stdout]    --> common/src/port.rs:127:19
[INFO] [stdout]     |
[INFO] [stdout] 127 | pub fn read_words(port: u16, word_cnt: u32, buf_addr: u32) {
[INFO] [stdout]     |                   ^^^^ help: if this is intentional, prefix it with an underscore: `_port`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `word_cnt`
[INFO] [stdout]    --> common/src/port.rs:127:30
[INFO] [stdout]     |
[INFO] [stdout] 127 | pub fn read_words(port: u16, word_cnt: u32, buf_addr: u32) {
[INFO] [stdout]     |                              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_word_cnt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `buf_addr`
[INFO] [stdout]    --> common/src/port.rs:127:45
[INFO] [stdout]     |
[INFO] [stdout] 127 | pub fn read_words(port: u16, word_cnt: u32, buf_addr: u32) {
[INFO] [stdout]     |                                             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_buf_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `port`
[INFO] [stdout]    --> common/src/port.rs:147:20
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub fn write_words(port: u16, buf_addr: u32, word_cnt: u32) {
[INFO] [stdout]     |                    ^^^^ help: if this is intentional, prefix it with an underscore: `_port`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `buf_addr`
[INFO] [stdout]    --> common/src/port.rs:147:31
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub fn write_words(port: u16, buf_addr: u32, word_cnt: u32) {
[INFO] [stdout]     |                               ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_buf_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> common/src/pool.rs:187:23
[INFO] [stdout]     |
[INFO] [stdout] 187 |     pub fn iter_valid(&self) -> MemPoolValidBitsIterator {
[INFO] [stdout]     |                       ^^^^^     ^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 187 |     pub fn iter_valid(&self) -> MemPoolValidBitsIterator<'_> {
[INFO] [stdout]     |                                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `word_cnt`
[INFO] [stdout]    --> common/src/port.rs:147:46
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub fn write_words(port: u16, buf_addr: u32, word_cnt: u32) {
[INFO] [stdout]     |                                              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_word_cnt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `wait_port`
[INFO] [stdout]   --> common/src/pic.rs:78:13
[INFO] [stdout]    |
[INFO] [stdout] 78 |         let wait_port = Port::<u8>::new(0x80);
[INFO] [stdout]    |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_wait_port`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `primary_mask`
[INFO] [stdout]   --> common/src/pic.rs:82:13
[INFO] [stdout]    |
[INFO] [stdout] 82 |         let primary_mask = self.primary.data_port.read();
[INFO] [stdout]    |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_primary_mask`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `secondary_mask`
[INFO] [stdout]   --> common/src/pic.rs:83:13
[INFO] [stdout]    |
[INFO] [stdout] 83 |         let secondary_mask = self.secondary.data_port.read();
[INFO] [stdout]    |             ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_secondary_mask`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> common/src/array_deque.rs:88:17
[INFO] [stdout]    |
[INFO] [stdout] 88 |     pub fn iter(&self) -> ArrayDequeIterator<T, N> {
[INFO] [stdout]    |                 ^^^^^     ^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 88 |     pub fn iter(&self) -> ArrayDequeIterator<'_, T, N> {
[INFO] [stdout]    |                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]    --> common/src/bitmap.rs:153:19
[INFO] [stdout]     |
[INFO] [stdout] 153 |     fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
[INFO] [stdout]     |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> common/src/pool.rs:74:19
[INFO] [stdout]    |
[INFO] [stdout] 74 |     fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
[INFO] [stdout]    |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]    --> common/src/domain.rs:104:19
[INFO] [stdout]     |
[INFO] [stdout] 104 |     fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
[INFO] [stdout]     |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `PortRead` is more private than the item `Port<T>`
[INFO] [stdout]   --> common/src/port.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl <T:PortRead + PortWrite> Port<T> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ implementation `Port<T>` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but trait `PortRead` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> common/src/port.rs:42:1
[INFO] [stdout]    |
[INFO] [stdout] 42 | trait PortRead {
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_bounds)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `PortWrite` is more private than the item `Port<T>`
[INFO] [stdout]   --> common/src/port.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl <T:PortRead + PortWrite> Port<T> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ implementation `Port<T>` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but trait `PortWrite` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> common/src/port.rs:35:1
[INFO] [stdout]    |
[INFO] [stdout] 35 | trait PortWrite {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `PortRead` is more private than the item `Port<T>`
[INFO] [stdout]   --> common/src/port.rs:19:1
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl <T:PortRead> Port<T> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^ implementation `Port<T>` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but trait `PortRead` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> common/src/port.rs:42:1
[INFO] [stdout]    |
[INFO] [stdout] 42 | trait PortRead {
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `PortWrite` is more private than the item `Port<T>`
[INFO] [stdout]   --> common/src/port.rs:25:1
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl <T:PortWrite> Port<T> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^ implementation `Port<T>` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but trait `PortWrite` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> common/src/port.rs:35:1
[INFO] [stdout]    |
[INFO] [stdout] 35 | trait PortWrite {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Pic` is more private than the item `ChainedPics::primary`
[INFO] [stdout]    --> common/src/pic.rs:47:5
[INFO] [stdout]     |
[INFO] [stdout]  47 |     pub primary: Pic,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^ field `ChainedPics::primary` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `Pic` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> common/src/pic.rs:137:1
[INFO] [stdout]     |
[INFO] [stdout] 137 | struct Pic {
[INFO] [stdout]     | ^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Pic` is more private than the item `ChainedPics::secondary`
[INFO] [stdout]    --> common/src/pic.rs:51:5
[INFO] [stdout]     |
[INFO] [stdout]  51 |     pub secondary: Pic,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^ field `ChainedPics::secondary` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `Pic` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> common/src/pic.rs:137:1
[INFO] [stdout]     |
[INFO] [stdout] 137 | struct Pic {
[INFO] [stdout]     | ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ListNodeTrait` is more private than the item `linked_list_deprecated::LinkedNode`
[INFO] [stdout]   --> common/src/linked_list_deprecated.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct LinkedNode<T: ListNodeTrait> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ struct `linked_list_deprecated::LinkedNode` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but trait `ListNodeTrait` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> common/src/linked_list_deprecated.rs:3:1
[INFO] [stdout]    |
[INFO] [stdout]  3 | trait ListNodeTrait: Copy{}
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ListNodeTrait` is more private than the item `linked_list_deprecated::LinkedNode<T>`
[INFO] [stdout]   --> common/src/linked_list_deprecated.rs:27:1
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl<T: ListNodeTrait> LinkedNode<T> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ implementation `linked_list_deprecated::LinkedNode<T>` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but trait `ListNodeTrait` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> common/src/linked_list_deprecated.rs:3:1
[INFO] [stdout]    |
[INFO] [stdout]  3 | trait ListNodeTrait: Copy{}
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ListNodeTrait` is more private than the item `linked_list_deprecated::LinkedList`
[INFO] [stdout]   --> common/src/linked_list_deprecated.rs:40:1
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct LinkedList<T: ListNodeTrait> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ struct `linked_list_deprecated::LinkedList` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but trait `ListNodeTrait` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> common/src/linked_list_deprecated.rs:3:1
[INFO] [stdout]    |
[INFO] [stdout]  3 | trait ListNodeTrait: Copy{}
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ListNodeTrait` is more private than the item `linked_list_deprecated::LinkedList<T>`
[INFO] [stdout]   --> common/src/linked_list_deprecated.rs:50:1
[INFO] [stdout]    |
[INFO] [stdout] 50 | impl<T: ListNodeTrait> LinkedList<T> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ implementation `linked_list_deprecated::LinkedList<T>` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but trait `ListNodeTrait` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> common/src/linked_list_deprecated.rs:3:1
[INFO] [stdout]    |
[INFO] [stdout]  3 | trait ListNodeTrait: Copy{}
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ListNodeTrait` is more private than the item `linked_list_deprecated::LinkedNodeIterator`
[INFO] [stdout]    --> common/src/linked_list_deprecated.rs:134:1
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub struct LinkedNodeIterator<T: ListNodeTrait> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ struct `linked_list_deprecated::LinkedNodeIterator` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but trait `ListNodeTrait` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> common/src/linked_list_deprecated.rs:3:1
[INFO] [stdout]     |
[INFO] [stdout]   3 | trait ListNodeTrait: Copy{}
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `CounterTrait` is more private than the item `set_frequency`
[INFO] [stdout]    --> common/src/pit.rs:52:1
[INFO] [stdout]     |
[INFO] [stdout]  52 | pub fn set_frequency(counter: &'static dyn CounterTrait, intr_frequency: u16) {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `set_frequency` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but trait `CounterTrait` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> common/src/pit.rs:137:1
[INFO] [stdout]     |
[INFO] [stdout] 137 | trait CounterTrait {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `ErrorFeature` is never constructed
[INFO] [stdout]  --> common/src/disk.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | enum PrimaryCommandRegister {
[INFO] [stdout]   |      ---------------------- variant in this enum
[INFO] [stdout] 8 |     Data = 0x1F0,
[INFO] [stdout] 9 |     ErrorFeature = 0x1F1,
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Identify` and `Write` are never constructed
[INFO] [stdout]   --> common/src/disk.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | enum CommandRegister {
[INFO] [stdout]    |      --------------- variants in this enum
[INFO] [stdout] 43 |     // 识别硬盘命令
[INFO] [stdout] 44 |     Identify = 0xEC,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     Write = 0x30,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `unit` is never read
[INFO] [stdout]   --> common/src/sd.rs:91:5
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct Granularity {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 90 |     value: u8,
[INFO] [stdout] 91 |     unit: u32
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Granularity` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_cr0` is never used
[INFO] [stdout]   --> common/src/reg_cr0.rs:97:4
[INFO] [stdout]    |
[INFO] [stdout] 97 | fn set_cr0(val: u32) {
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> common/src/idt.rs:273:8
[INFO] [stdout]     |
[INFO] [stdout] 272 | impl IDTR {
[INFO] [stdout]     | --------- associated function in this implementation
[INFO] [stdout] 273 |     fn new(idt: *const InterruptDescriptorTable) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `primary` and `secondary` are never used
[INFO] [stdout]    --> common/src/pic.rs:231:8
[INFO] [stdout]     |
[INFO] [stdout] 220 | impl ICW3 {
[INFO] [stdout]     | --------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 231 |     fn primary(connect_idx: u8) -> Self {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     fn secondary(primary_idx: u8) -> Self {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OCW2` is never constructed
[INFO] [stdout]    --> common/src/pic.rs:298:8
[INFO] [stdout]     |
[INFO] [stdout] 298 | struct OCW2 {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> common/src/pic.rs:308:8
[INFO] [stdout]     |
[INFO] [stdout] 301 | impl OCW2 {
[INFO] [stdout]     | --------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 308 |     fn new(rotation: bool, specific_level: bool, end_of_int: bool, config_data: u8) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `empty` is never used
[INFO] [stdout]   --> common/src/bios_mem.rs:26:14
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl AddressRangeDescriptorStructure {
[INFO] [stdout]    | ------------------------------------ associated function in this implementation
[INFO] [stdout] 26 |     const fn empty() -> Self {
[INFO] [stdout]    |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `counter1` and `counter2` are never read
[INFO] [stdout]    --> common/src/pit.rs:116:5
[INFO] [stdout]     |
[INFO] [stdout] 114 | struct CounterEnum {
[INFO] [stdout]     |        ----------- fields in this struct
[INFO] [stdout] 115 |     counter0: Counter,
[INFO] [stdout] 116 |     counter1: Counter,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 117 |     counter2: Counter,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> common/src/gdt.rs:48:14
[INFO] [stdout]    |
[INFO] [stdout] 48 |     unsafe { GDT.set_descriptor(desc_type, descriptor) };
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]    = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> common/src/gdt.rs:55:15
[INFO] [stdout]    |
[INFO] [stdout] 55 |     unsafe { *GDT.get_descriptor(desc_type) }
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> common/src/paging.rs:87:18
[INFO] [stdout]    |
[INFO] [stdout] 87 |      pub fn iter(&self) -> PageTableEntryIterator {
[INFO] [stdout]    |                  ^^^^^     ^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                  |
[INFO] [stdout]    |                  the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 87 |      pub fn iter(&self) -> PageTableEntryIterator<'_> {
[INFO] [stdout]    |                                                  ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> common/src/pool.rs:187:23
[INFO] [stdout]     |
[INFO] [stdout] 187 |     pub fn iter_valid(&self) -> MemPoolValidBitsIterator {
[INFO] [stdout]     |                       ^^^^^     ^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 187 |     pub fn iter_valid(&self) -> MemPoolValidBitsIterator<'_> {
[INFO] [stdout]     |                                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> common/src/array_deque.rs:88:17
[INFO] [stdout]    |
[INFO] [stdout] 88 |     pub fn iter(&self) -> ArrayDequeIterator<T, N> {
[INFO] [stdout]    |                 ^^^^^     ^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 88 |     pub fn iter(&self) -> ArrayDequeIterator<'_, T, N> {
[INFO] [stdout]    |                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0152]: found duplicate lang item `panic_impl`
[INFO] [stdout]   --> mbr/src/main.rs:24:1
[INFO] [stdout]    |
[INFO] [stdout] 24 | / fn panic(_info: &PanicInfo) -> ! {
[INFO] [stdout] 25 | |     loop {}
[INFO] [stdout] 26 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: the lang item is first defined in crate `std` (which `test` depends on)
[INFO] [stdout]    = note: first definition in `std` loaded from /opt/rustwide/rustup-home/toolchains/292be5c7c05138d753bbd4b30db7a3f1a5c914f7/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-d73d50f7d7b085f5.rlib
[INFO] [stdout]    = note: second definition in the local crate (`mbr`)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: unwinding panics are not supported without std
[INFO] [stdout]   |
[INFO] [stdout]   = help: using nightly cargo, use -Zbuild-std with panic="abort" to avoid unwinding
[INFO] [stdout]   = note: since the core library is usually precompiled with panic="unwind", rebuilding your crate with panic="abort" may not be enough to fix the problem
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `#[inline]` is ignored on externally exported functions
[INFO] [stdout]   --> loader2/src/page_table.rs:88:1
[INFO] [stdout]    |
[INFO] [stdout] 88 | #[inline]
[INFO] [stdout]    | ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: externally exported functions are functions with `#[no_mangle]`, `#[export_name]`, or `#[linkage]`
[INFO] [stdout]    = note: `#[warn(unused_attributes)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0152`.
[INFO] [stdout] 
[INFO] [stdout] error: unwinding panics are not supported without std
[INFO] [stdout]   |
[INFO] [stdout]   = help: using nightly cargo, use -Zbuild-std with panic="abort" to avoid unwinding
[INFO] [stdout]   = note: since the core library is usually precompiled with panic="unwind", rebuilding your crate with panic="abort" may not be enough to fix the problem
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `os_in_rust_common::sd::SegmentDescriptor`
[INFO] [stdout]  --> loader/src/protect_mode.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use os_in_rust_common::sd::SegmentDescriptor;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0152]: found duplicate lang item `panic_impl`
[INFO] [stdout]   --> loader/src/main.rs:43:1
[INFO] [stdout]    |
[INFO] [stdout] 43 | / fn panic(_info: &PanicInfo) -> ! {
[INFO] [stdout] 44 | |     loop {}
[INFO] [stdout] 45 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: the lang item is first defined in crate `std` (which `test` depends on)
[INFO] [stdout]    = note: first definition in `std` loaded from /opt/rustwide/rustup-home/toolchains/292be5c7c05138d753bbd4b30db7a3f1a5c914f7/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-d73d50f7d7b085f5.rlib
[INFO] [stdout]    = note: second definition in the local crate (`loader`)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0152]: found duplicate lang item `panic_impl`
[INFO] [stdout]   --> loader2/src/main.rs:82:1
[INFO] [stdout]    |
[INFO] [stdout] 82 | / fn panic(info: &PanicInfo) -> ! {
[INFO] [stdout] 83 | |     loop {}
[INFO] [stdout] 84 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: the lang item is first defined in crate `std` (which `test` depends on)
[INFO] [stdout]    = note: first definition in `std` loaded from /opt/rustwide/rustup-home/toolchains/292be5c7c05138d753bbd4b30db7a3f1a5c914f7/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-d73d50f7d7b085f5.rlib
[INFO] [stdout]    = note: second definition in the local crate (`loader2`)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `os_in_rust_common::sd::SegmentDescriptor`
[INFO] [stdout]  --> loader/src/protect_mode.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use os_in_rust_common::sd::SegmentDescriptor;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0152`.
[INFO] [stdout] 
[INFO] [stdout] error: unwinding panics are not supported without std
[INFO] [stdout]   |
[INFO] [stdout]   = help: using nightly cargo, use -Zbuild-std with panic="abort" to avoid unwinding
[INFO] [stdout]   = note: since the core library is usually precompiled with panic="unwind", rebuilding your crate with panic="abort" may not be enough to fix the problem
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `mbr` (bin "mbr" test) due to 1 previous error
[INFO] [stdout] For more information about this error, try `rustc --explain E0152`.
[INFO] [stdout] 
[INFO] [stdout] error: cannot use register `bx`: rbx is used internally by LLVM and cannot be used as an operand for inline asm
[INFO] [stdout]   --> loader/src/main.rs:35:13
[INFO] [stdout]    |
[INFO] [stdout] 35 |             in("bx") context as *const _  as u16,
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stderr] error: could not compile `mbr` (bin "mbr") due to 1 previous error
[INFO] [stderr] error: could not compile `loader2` (bin "loader2" test) due to 1 previous error
[INFO] [stderr] error: could not compile `loader` (bin "loader" test) due to 1 previous error; 1 warning emitted
[INFO] [stderr] error: could not compile `loader` (bin "loader") due to 2 previous errors; 1 warning emitted
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]   --> loader2/src/main.rs:82:10
[INFO] [stdout]    |
[INFO] [stdout] 82 | fn panic(info: &PanicInfo) -> ! {
[INFO] [stdout]    |          ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `loader2` (bin "loader2") due to 1 previous error; 2 warnings emitted
[INFO] [stdout] warning: unused imports: `addr_of`, `arch::asm`, and `self`
[INFO] [stdout]  --> kernel/src/interrupt.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | use core::{arch::asm, ptr::{self, addr_of}};
[INFO] [stdout]   |            ^^^^^^^^^        ^^^^  ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ASSERT` and `port::Port`
[INFO] [stdout]  --> kernel/src/interrupt.rs:4:88
[INFO] [stdout]   |
[INFO] [stdout] 4 | use os_in_rust_common::{idt::{self, InterruptStackFrame, InterruptTypeEnum}, pic, pit, port::Port, sd::SegmentDPL, ASSERT, MY_PANIC};
[INFO] [stdout]   |                                                                                        ^^^^^^^^^^                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ChannelIrqNoEnum`, `ScanCodeCombinator`, `StatusRegister`, `pid_allocator::Pid`, `scheduler`, `self`, `self`, and `thread`
[INFO] [stdout]  --> kernel/src/interrupt.rs:6:22
[INFO] [stdout]   |
[INFO] [stdout] 6 | ...::{self, ChannelIrqNoEnum, StatusRegister}, keyboard::{self, ScanCodeCombinator}, pid_allocator::Pid, scheduler, sys_call::{self, HandlerType}, thread};
[INFO] [stdout]   |       ^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^              ^^^^  ^^^^^^^^^^^^^^^^^^   ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^                                 ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `instruction` and `printkln`
[INFO] [stdout]  --> kernel/src/init.rs:1:102
[INFO] [stdout]   |
[INFO] [stdout] 1 | use os_in_rust_common::{bios_mem::{ARDSType, AddressRangeDescriptorStructure}, context::BootContext, instruction, printkln, ASSERT};
[INFO] [stdout]   |                                                                                                      ^^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::arch::asm`
[INFO] [stdout]  --> kernel/src/scheduler.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::arch::asm;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `printkln`
[INFO] [stdout]  --> kernel/src/scheduler.rs:3:38
[INFO] [stdout]   |
[INFO] [stdout] 3 | use os_in_rust_common::{instruction, printkln, ASSERT};
[INFO] [stdout]   |                                      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `console_println`
[INFO] [stdout]  --> kernel/src/scheduler.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::{console_println, thread::{self, TaskStatus, TaskStruct}};
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `printkln`
[INFO] [stdout]  --> kernel/src/sync.rs:4:63
[INFO] [stdout]   |
[INFO] [stdout] 4 | use os_in_rust_common::{instruction, linked_list::LinkedList, printkln, ASSERT, MY_PANIC};
[INFO] [stdout]   |                                                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `printk` and `printkln`
[INFO] [stdout]  --> kernel/src/console.rs:4:25
[INFO] [stdout]   |
[INFO] [stdout] 4 | use os_in_rust_common::{printk, printkln, racy_cell::RacyCell, vga};
[INFO] [stdout]   |                         ^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `printkln`
[INFO] [stdout]  --> kernel/src/keyboard.rs:1:25
[INFO] [stdout]   |
[INFO] [stdout] 1 | use os_in_rust_common::{printkln, racy_cell::RacyCell};
[INFO] [stdout]   |                         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::ptr::null`
[INFO] [stdout]  --> kernel/src/scancode.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::ptr::null;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ASSERT`
[INFO] [stdout]  --> kernel/src/scancode.rs:3:36
[INFO] [stdout]   |
[INFO] [stdout] 3 | use os_in_rust_common::{constants, ASSERT};
[INFO] [stdout]   |                                    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `KeyCode` and `Key`
[INFO] [stdout]  --> kernel/src/ascii.rs:1:23
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::scancode::{Key, KeyCode};
[INFO] [stdout]   |                       ^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `a` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:107:5
[INFO] [stdout]     |
[INFO] [stdout] 107 |     a = 0x61, // 'a'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case: `A`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `b` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:108:5
[INFO] [stdout]     |
[INFO] [stdout] 108 |     b = 0x62, // 'b'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case: `B`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `c` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:109:5
[INFO] [stdout]     |
[INFO] [stdout] 109 |     c = 0x63, // 'c'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case (notice the capitalization): `C`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `d` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:110:5
[INFO] [stdout]     |
[INFO] [stdout] 110 |     d = 0x64, // 'd'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case: `D`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `e` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:111:5
[INFO] [stdout]     |
[INFO] [stdout] 111 |     e = 0x65, // 'e'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case: `E`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `f` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:112:5
[INFO] [stdout]     |
[INFO] [stdout] 112 |     f = 0x66, // 'f'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case (notice the capitalization): `F`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `g` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:113:5
[INFO] [stdout]     |
[INFO] [stdout] 113 |     g = 0x67, // 'g'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case: `G`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `h` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:114:5
[INFO] [stdout]     |
[INFO] [stdout] 114 |     h = 0x68, // 'h'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case: `H`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `i` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:115:5
[INFO] [stdout]     |
[INFO] [stdout] 115 |     i = 0x69, // 'i'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case (notice the capitalization): `I`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `j` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:116:5
[INFO] [stdout]     |
[INFO] [stdout] 116 |     j = 0x6A, // 'j'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case: `J`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `k` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:117:5
[INFO] [stdout]     |
[INFO] [stdout] 117 |     k = 0x6B, // 'k'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case (notice the capitalization): `K`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `l` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:118:5
[INFO] [stdout]     |
[INFO] [stdout] 118 |     l = 0x6C, // 'l'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case: `L`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `m` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:119:5
[INFO] [stdout]     |
[INFO] [stdout] 119 |     m = 0x6D, // 'm'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case: `M`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `n` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:120:5
[INFO] [stdout]     |
[INFO] [stdout] 120 |     n = 0x6E, // 'n'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case: `N`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `o` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:121:5
[INFO] [stdout]     |
[INFO] [stdout] 121 |     o = 0x6F, // 'o'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case (notice the capitalization): `O`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `p` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:122:5
[INFO] [stdout]     |
[INFO] [stdout] 122 |     p = 0x70, // 'p'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case: `P`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `q` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:123:5
[INFO] [stdout]     |
[INFO] [stdout] 123 |     q = 0x71, // 'q'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case: `Q`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `r` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:124:5
[INFO] [stdout]     |
[INFO] [stdout] 124 |     r = 0x72, // 'r'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case: `R`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `s` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:125:5
[INFO] [stdout]     |
[INFO] [stdout] 125 |     s = 0x73, // 's'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case (notice the capitalization): `S`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `t` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:126:5
[INFO] [stdout]     |
[INFO] [stdout] 126 |     t = 0x74, // 't'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case: `T`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `u` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:127:5
[INFO] [stdout]     |
[INFO] [stdout] 127 |     u = 0x75, // 'u'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case (notice the capitalization): `U`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `v` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:128:5
[INFO] [stdout]     |
[INFO] [stdout] 128 |     v = 0x76, // 'v'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case (notice the capitalization): `V`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `w` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:129:5
[INFO] [stdout]     |
[INFO] [stdout] 129 |     w = 0x77, // 'w'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case (notice the capitalization): `W`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `x` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:130:5
[INFO] [stdout]     |
[INFO] [stdout] 130 |     x = 0x78, // 'x'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case (notice the capitalization): `X`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `y` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:131:5
[INFO] [stdout]     |
[INFO] [stdout] 131 |     y = 0x79, // 'y'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case (notice the capitalization): `Y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `z` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:132:5
[INFO] [stdout]     |
[INFO] [stdout] 132 |     z = 0x7A, // 'z'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case (notice the capitalization): `Z`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `printk`, `printkln`, and `vga::print`
[INFO] [stdout]  --> kernel/src/printer.rs:1:25
[INFO] [stdout]   |
[INFO] [stdout] 1 | use os_in_rust_common::{printk, printkln, racy_cell::RacyCell, vga::print};
[INFO] [stdout]   |                         ^^^^^^  ^^^^^^^^                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `KeyCode`, `Key`, `ScanCodeType`, `console_print`, and `console`
[INFO] [stdout]  --> kernel/src/printer.rs:3:13
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::{console, console_print, scancode::{Key, KeyCode, ScanCodeType}};
[INFO] [stdout]   |             ^^^^^^^  ^^^^^^^^^^^^^             ^^^  ^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `arch::asm`
[INFO] [stdout]  --> kernel/src/tss.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::{arch::asm, mem::size_of};
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `printkln`
[INFO] [stdout]  --> kernel/src/tss.rs:3:54
[INFO] [stdout]   |
[INFO] [stdout] 3 | use os_in_rust_common::{gdt::{self, DescriptorType}, printkln, racy_cell::RacyCell, sd::{Granularity, GranularityEnum, SegmentDPL, Segmen...
[INFO] [stdout]   |                                                      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]   --> kernel/src/memory/memory_allocation.rs:30:44
[INFO] [stdout]    |
[INFO] [stdout] 30 |         arena.init(ptr::null_mut(), pages, (pages * constants::PAGE_SIZE as usize - size_of::<Arena>()));
[INFO] [stdout]    |                                            ^                                                          ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 30 -         arena.init(ptr::null_mut(), pages, (pages * constants::PAGE_SIZE as usize - size_of::<Arena>()));
[INFO] [stdout] 30 +         arena.init(ptr::null_mut(), pages, pages * constants::PAGE_SIZE as usize - size_of::<Arena>());
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::ptr`
[INFO] [stdout]  --> kernel/src/memory/memory_deallocation.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use core::ptr;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> kernel/src/memory/mem_block.rs:8:1
[INFO] [stdout]    |
[INFO] [stdout]  8 | /  /**
[INFO] [stdout]  9 | |   * 这里是对内存块进行管理
[INFO] [stdout] 10 | |   */
[INFO] [stdout] 11 | |
[INFO] [stdout] 12 | |/ /**
[INFO] [stdout] 13 | ||  * 内核全局内存块分配器（所有内核线程共用一个页表和内存池，因此所有内核线程用的内存块容器也是同一个）
[INFO] [stdout] 14 | ||  */
[INFO] [stdout]    | ||___^
[INFO] [stdout]    |  |___|
[INFO] [stdout]    |      rustdoc does not generate documentation for macro invocations
[INFO] [stdout]    |
[INFO] [stdout]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `printkln`
[INFO] [stdout]  --> kernel/src/memory/memory_poll.rs:3:70
[INFO] [stdout]   |
[INFO] [stdout] 3 | use os_in_rust_common::{constants, paging::PageTable, pool::MemPool, printkln, racy_cell::RacyCell};
[INFO] [stdout]   |                                                                      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ptr`
[INFO] [stdout]  --> kernel/src/memory/page_util.rs:1:26
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::{mem::size_of, ptr};
[INFO] [stdout]   |                          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `printk` and `printkln`
[INFO] [stdout]  --> kernel/src/memory/page_util.rs:4:75
[INFO] [stdout]   |
[INFO] [stdout] 4 | use os_in_rust_common::{instruction, paging::{PageTable, PageTableEntry}, printk, printkln, ASSERT, MY_PANIC};
[INFO] [stdout]   |                                                                           ^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `memory` and `thread`
[INFO] [stdout]  --> kernel/src/memory/page_util.rs:6:13
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::{memory, thread};
[INFO] [stdout]   |             ^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `println`
[INFO] [stdout]  --> kernel/src/process.rs:4:66
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::{interrupt, memory::{self, page_util}, pid_allocator, println, shell, sys_call::{self}, thread::{self, ThreadArg}, thread_mana...
[INFO] [stdout]   |                                                                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `arch::asm` and `write`
[INFO] [stdout]  --> kernel/src/thread.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::{arch::asm, fmt::{write, Display}, mem::size_of, ptr};
[INFO] [stdout]   |            ^^^^^^^^^        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CR3`, `LinkedNodeIterator`, `self`, and `utils`
[INFO] [stdout]  --> kernel/src/thread.rs:3:169
[INFO] [stdout]   |
[INFO] [stdout] 3 | ...e, LinkedNodeIterator}, paging::{self, PageTable}, pool::MemPool, printkln, racy_cell::RacyCell, reg_cr3::{self, CR3}, reg_eflags::{self, EFlags, FlagEnum}, selector::SegmentSelector, utils, A...
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^            ^^^^                                                                            ^^^                                                                    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> kernel/src/thread.rs:330:214
[INFO] [stdout]     |
[INFO] [stdout] 330 | ...lf.task_status, self.pgdir as u32, self.vaddr_pool);;
[INFO] [stdout]     |                                                        ^ help: remove this semicolon
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(redundant_semicolons)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `fmt`, `take`, and `task`
[INFO] [stdout]  --> kernel/src/sys_call/sys_call_api.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::{fmt, mem::{size_of, take}, str, task};
[INFO] [stdout]   |            ^^^                 ^^^^        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MY_PANIC` and `printkln`
[INFO] [stdout]  --> kernel/src/sys_call/sys_call_api.rs:3:25
[INFO] [stdout]   |
[INFO] [stdout] 3 | use os_in_rust_common::{printkln, vga::{self}, ASSERT, MY_PANIC};
[INFO] [stdout]   |                         ^^^^^^^^                       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PipeReader`, `PipeWriter`, `StdFileDescriptor`, `console`, and `scancode::KeyCode`
[INFO] [stdout]  --> kernel/src/sys_call/sys_call_api.rs:5:137
[INFO] [stdout]   |
[INFO] [stdout] 5 | ...}, console, console_print, exec, filesystem::{self, DirError, FileDescriptor, FileDescriptorType, StdFileDescriptor}, fork, keyboard, memory, pid_allocator::Pid, pipe::{self, PipeError, PipeReader, PipeWriter}, scancode::KeyCode, t...
[INFO] [stdout]   |       ^^^^^^^                                                                                        ^^^^^^^^^^^^^^^^^                                                                       ^^^^^^^^^^  ^^^^^^^^^^   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::arch::asm`
[INFO] [stdout]  --> kernel/src/sys_call/sys_call_proxy.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::arch::asm;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `pool::MemPool`
[INFO] [stdout]  --> kernel/src/pid_allocator.rs:1:49
[INFO] [stdout]   |
[INFO] [stdout] 1 | use os_in_rust_common::{bitmap::{self, BitMap}, pool::MemPool, ASSERT};
[INFO] [stdout]   |                                                 ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `println`
[INFO] [stdout]  --> kernel/src/pid_allocator.rs:3:27
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::{mutex::Mutex, println};
[INFO] [stdout]   |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `printk`
[INFO] [stdout]  --> kernel/src/device/ata.rs:4:105
[INFO] [stdout]   |
[INFO] [stdout] 4 | use os_in_rust_common::{constants, cstring_utils, domain::LbaAddr, elem2entry, linked_list::LinkedNode, printk, printkln, ASSERT, MY_PANIC};
[INFO] [stdout]   |                                                                                                         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ASSERT`
[INFO] [stdout]  --> kernel/src/device/pio.rs:1:62
[INFO] [stdout]   |
[INFO] [stdout] 1 | use os_in_rust_common::{port::{self, Port}, printkln, utils, ASSERT, MY_PANIC};
[INFO] [stdout]   |                                                              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `domain::InodeNo`
[INFO] [stdout]  --> kernel/src/filesystem/constant.rs:3:36
[INFO] [stdout]   |
[INFO] [stdout] 3 | use os_in_rust_common::{constants, domain::InodeNo};
[INFO] [stdout]   |                                    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ASSERT` and `printkln`
[INFO] [stdout]  --> kernel/src/filesystem/dir.rs:2:38
[INFO] [stdout]   |
[INFO] [stdout] 2 | use os_in_rust_common::{instruction, printkln, ASSERT, MY_PANIC};
[INFO] [stdout]   |                                      ^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `file`
[INFO] [stdout]  --> kernel/src/filesystem/dir.rs:7:42
[INFO] [stdout]   |
[INFO] [stdout] 7 | use super::{dir_entry::{self, FileType}, file, file_util, fs::{self, FileSystem}, inode::{self, OpenedInode}};
[INFO] [stdout]   |                                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `fmt::Display` and `mem::size_of`
[INFO] [stdout]  --> kernel/src/filesystem/file.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | use core::{fmt::Display, mem::size_of};
[INFO] [stdout]   |            ^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `printkln` and `utils`
[INFO] [stdout]  --> kernel/src/filesystem/file.rs:4:36
[INFO] [stdout]   |
[INFO] [stdout] 4 | use os_in_rust_common::{constants, printkln, utils, ASSERT};
[INFO] [stdout]   |                                    ^^^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `console_println`
[INFO] [stdout]  --> kernel/src/filesystem/file.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::{console_println, memory, thread};
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DirEntry` and `constant`
[INFO] [stdout]  --> kernel/src/filesystem/file.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     constant, dir_entry::{self, DirEntrySearchReq}, file_descriptor::FileDescriptor, file_util, fs::{self, FileSystem}, global_file_table, inode::{self, OpenedInode}, DirEntry, F...
[INFO] [stdout]   |     ^^^^^^^^                                                                                                                                                           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MY_PANIC`, `printkln`, and `utils`
[INFO] [stdout]  --> kernel/src/filesystem/dir_entry.rs:3:91
[INFO] [stdout]   |
[INFO] [stdout] 3 | use os_in_rust_common::{constants, cstr_write, cstring_utils, domain::{InodeNo, LbaAddr}, printkln, utils, ASSERT, MY_PANIC};
[INFO] [stdout]   |                                                                                           ^^^^^^^^  ^^^^^          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::task`
[INFO] [stdout]  --> kernel/src/filesystem/global_file_table.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::task;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `LinkedNodeIterator`, `printkln`, and `utils`
[INFO] [stdout]  --> kernel/src/filesystem/fs.rs:3:106
[INFO] [stdout]   |
[INFO] [stdout] 3 | ..., LbaAddr}, linked_list::{LinkedList, LinkedNodeIterator}, printkln, racy_cell::RacyCell, utils, ASSERT, MY_PANIC};
[INFO] [stdout]   |                                          ^^^^^^^^^^^^^^^^^^   ^^^^^^^^                       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `printkln`
[INFO] [stdout]  --> kernel/src/filesystem/file_api.rs:3:52
[INFO] [stdout]   |
[INFO] [stdout] 3 | use os_in_rust_common::{cstr_write, cstring_utils, printkln, ASSERT};
[INFO] [stdout]   |                                                    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `OpenedFile`
[INFO] [stdout]  --> kernel/src/filesystem/file_api.rs:7:69
[INFO] [stdout]   |
[INFO] [stdout] 7 | use super::{dir_entry::{self, DirEntrySearchReq}, file::{FileError, OpenedFile}, file_descriptor::FileDescriptor, file_util, global_file_...
[INFO] [stdout]   |                                                                     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::filesystem::file_util::reverse_path`
[INFO] [stdout]   --> kernel/src/filesystem/file_util.rs:92:9
[INFO] [stdout]    |
[INFO] [stdout] 92 |     use crate::filesystem::file_util::reverse_path;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::split_file_path`
[INFO] [stdout]   --> kernel/src/filesystem/file_util.rs:94:9
[INFO] [stdout]    |
[INFO] [stdout] 94 |     use super::split_file_path;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `mem`
[INFO] [stdout]  --> kernel/src/fork.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::{mem, ptr};
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MY_PANIC` and `printk`
[INFO] [stdout]  --> kernel/src/fork.rs:4:37
[INFO] [stdout]   |
[INFO] [stdout] 4 | use os_in_rust_common::{cstr_write, printk, MY_PANIC};
[INFO] [stdout]   |                                     ^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MY_PANIC`
[INFO] [stdout]  --> kernel/src/shell/my_shell.rs:2:46
[INFO] [stdout]   |
[INFO] [stdout] 2 | use os_in_rust_common::{racy_cell::RacyCell, MY_PANIC};
[INFO] [stdout]   |                                              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Key` and `ScanCodeType`
[INFO] [stdout]  --> kernel/src/shell/my_shell.rs:4:57
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::{ascii::AsciiKey, print, println, scancode::{Key, ScanCodeType}, sys_call::{self}};
[INFO] [stdout]   |                                                         ^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ASSERT`, `cstr_write`, and `cstring_utils`
[INFO] [stdout]  --> kernel/src/shell/cmd_ls.rs:1:25
[INFO] [stdout]   |
[INFO] [stdout] 1 | use os_in_rust_common::{cstr_write, cstring_utils, ASSERT};
[INFO] [stdout]   |                         ^^^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `inode`
[INFO] [stdout]  --> kernel/src/shell/cmd_ls.rs:3:31
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::filesystem::{self, inode};
[INFO] [stdout]   |                               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `pipe`
[INFO] [stdout]  --> kernel/src/shell/cmd_custom.rs:1:42
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::{common::exec_dto::ExecParam, pipe, sys_call};
[INFO] [stdout]   |                                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PipeError`, `StdFileDescriptor`, `self`, and `shell::shell_util::PathError`
[INFO] [stdout]  --> kernel/src/shell/cmd_dispatcher.rs:1:53
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::{filesystem::{FileDescriptor, FileError, StdFileDescriptor}, pipe::{self, PipeError}, println, shell::shell_util::PathError, s...
[INFO] [stdout]   |                                                     ^^^^^^^^^^^^^^^^^          ^^^^  ^^^^^^^^^            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `filesystem`
[INFO] [stdout]  --> kernel/src/shell/cmd_file.rs:1:13
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::{filesystem, println, sys_call};
[INFO] [stdout]   |             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::arch::asm`
[INFO] [stdout]  --> kernel/src/exec.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::arch::asm;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ASSERT`
[INFO] [stdout]  --> kernel/src/exec.rs:3:68
[INFO] [stdout]   |
[INFO] [stdout] 3 | use os_in_rust_common::{constants, cstr_write, instruction, utils, ASSERT};
[INFO] [stdout]   |                                                                    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::ops::DerefMut`
[INFO] [stdout]  --> kernel/src/userprog/exit.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::ops::DerefMut;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `printk`
[INFO] [stdout]  --> kernel/src/userprog/exit.rs:3:70
[INFO] [stdout]   |
[INFO] [stdout] 3 | use os_in_rust_common::{constants, paging::PageTable, pool::MemPool, printk};
[INFO] [stdout]   |                                                                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `FileDescriptorType`, `FileDescriptor`, and `StdFileDescriptor`
[INFO] [stdout]  --> kernel/src/userprog/exit.rs:5:26
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::{filesystem::{FileDescriptor, FileDescriptorType, StdFileDescriptor}, memory, pid_allocator::Pid, pipe, scheduler, thread::{se...
[INFO] [stdout]   |                          ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> kernel/src/pipe/pipe.rs:5:26
[INFO] [stdout]   |
[INFO] [stdout] 5 | use super::pipe_holder::{self, PipeError};
[INFO] [stdout]   |                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PipeContainer`
[INFO] [stdout]  --> kernel/src/pipe/pipe.rs:6:35
[INFO] [stdout]   |
[INFO] [stdout] 6 | use super::pipe_container::{self, PipeContainer};
[INFO] [stdout]   |                                   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `a` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:107:5
[INFO] [stdout]     |
[INFO] [stdout] 107 |     a = 0x61, // 'a'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case: `A`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `b` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:108:5
[INFO] [stdout]     |
[INFO] [stdout] 108 |     b = 0x62, // 'b'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case: `B`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `c` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:109:5
[INFO] [stdout]     |
[INFO] [stdout] 109 |     c = 0x63, // 'c'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case (notice the capitalization): `C`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `d` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:110:5
[INFO] [stdout]     |
[INFO] [stdout] 110 |     d = 0x64, // 'd'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case: `D`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `e` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:111:5
[INFO] [stdout]     |
[INFO] [stdout] 111 |     e = 0x65, // 'e'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case: `E`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `f` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:112:5
[INFO] [stdout]     |
[INFO] [stdout] 112 |     f = 0x66, // 'f'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case (notice the capitalization): `F`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `g` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:113:5
[INFO] [stdout]     |
[INFO] [stdout] 113 |     g = 0x67, // 'g'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case: `G`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `h` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:114:5
[INFO] [stdout]     |
[INFO] [stdout] 114 |     h = 0x68, // 'h'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case: `H`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `i` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:115:5
[INFO] [stdout]     |
[INFO] [stdout] 115 |     i = 0x69, // 'i'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case (notice the capitalization): `I`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `j` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:116:5
[INFO] [stdout]     |
[INFO] [stdout] 116 |     j = 0x6A, // 'j'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case: `J`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `k` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:117:5
[INFO] [stdout]     |
[INFO] [stdout] 117 |     k = 0x6B, // 'k'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case (notice the capitalization): `K`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `l` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:118:5
[INFO] [stdout]     |
[INFO] [stdout] 118 |     l = 0x6C, // 'l'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case: `L`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `m` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:119:5
[INFO] [stdout]     |
[INFO] [stdout] 119 |     m = 0x6D, // 'm'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case: `M`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `n` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:120:5
[INFO] [stdout]     |
[INFO] [stdout] 120 |     n = 0x6E, // 'n'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case: `N`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `o` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:121:5
[INFO] [stdout]     |
[INFO] [stdout] 121 |     o = 0x6F, // 'o'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case (notice the capitalization): `O`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `p` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:122:5
[INFO] [stdout]     |
[INFO] [stdout] 122 |     p = 0x70, // 'p'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case: `P`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `q` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:123:5
[INFO] [stdout]     |
[INFO] [stdout] 123 |     q = 0x71, // 'q'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case: `Q`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `r` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:124:5
[INFO] [stdout]     |
[INFO] [stdout] 124 |     r = 0x72, // 'r'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case: `R`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `s` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:125:5
[INFO] [stdout]     |
[INFO] [stdout] 125 |     s = 0x73, // 's'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case (notice the capitalization): `S`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `t` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:126:5
[INFO] [stdout]     |
[INFO] [stdout] 126 |     t = 0x74, // 't'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case: `T`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `u` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:127:5
[INFO] [stdout]     |
[INFO] [stdout] 127 |     u = 0x75, // 'u'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case (notice the capitalization): `U`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `v` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:128:5
[INFO] [stdout]     |
[INFO] [stdout] 128 |     v = 0x76, // 'v'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case (notice the capitalization): `V`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `w` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:129:5
[INFO] [stdout]     |
[INFO] [stdout] 129 |     w = 0x77, // 'w'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case (notice the capitalization): `W`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `x` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:130:5
[INFO] [stdout]     |
[INFO] [stdout] 130 |     x = 0x78, // 'x'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case (notice the capitalization): `X`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `y` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:131:5
[INFO] [stdout]     |
[INFO] [stdout] 131 |     y = 0x79, // 'y'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case (notice the capitalization): `Y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `z` should have an upper camel case name
[INFO] [stdout]    --> kernel/src/ascii.rs:132:5
[INFO] [stdout]     |
[INFO] [stdout] 132 |     z = 0x7A, // 'z'
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case (notice the capitalization): `Z`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]   --> kernel/src/memory/memory_allocation.rs:30:44
[INFO] [stdout]    |
[INFO] [stdout] 30 |         arena.init(ptr::null_mut(), pages, (pages * constants::PAGE_SIZE as usize - size_of::<Arena>()));
[INFO] [stdout]    |                                            ^                                                          ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 30 -         arena.init(ptr::null_mut(), pages, (pages * constants::PAGE_SIZE as usize - size_of::<Arena>()));
[INFO] [stdout] 30 +         arena.init(ptr::null_mut(), pages, pages * constants::PAGE_SIZE as usize - size_of::<Arena>());
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> kernel/src/memory/mem_block.rs:8:1
[INFO] [stdout]    |
[INFO] [stdout]  8 | /  /**
[INFO] [stdout]  9 | |   * 这里是对内存块进行管理
[INFO] [stdout] 10 | |   */
[INFO] [stdout] 11 | |
[INFO] [stdout] 12 | |/ /**
[INFO] [stdout] 13 | ||  * 内核全局内存块分配器（所有内核线程共用一个页表和内存池，因此所有内核线程用的内存块容器也是同一个）
[INFO] [stdout] 14 | ||  */
[INFO] [stdout]    | ||___^
[INFO] [stdout]    |  |___|
[INFO] [stdout]    |      rustdoc does not generate documentation for macro invocations
[INFO] [stdout]    |
[INFO] [stdout]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> kernel/src/thread.rs:330:214
[INFO] [stdout]     |
[INFO] [stdout] 330 | ...lf.task_status, self.pgdir as u32, self.vaddr_pool);;
[INFO] [stdout]     |                                                        ^ help: remove this semicolon
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(redundant_semicolons)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `const_mut_refs` has been stable since 1.83.0 and no longer requires an attribute to enable
[INFO] [stdout]  --> kernel/src/lib.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | #![feature(const_mut_refs)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(stable_features)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `naked_functions` has been stable since 1.88.0 and no longer requires an attribute to enable
[INFO] [stdout]  --> kernel/src/lib.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | #![feature(naked_functions)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `panic_info_message` has been stable since 1.81.0 and no longer requires an attribute to enable
[INFO] [stdout]  --> kernel/src/lib.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | #![feature(panic_info_message)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `#[inline]` is ignored on externally exported functions
[INFO] [stdout]    --> kernel/src/interrupt.rs:321:1
[INFO] [stdout]     |
[INFO] [stdout] 321 | #[inline(always)]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: externally exported functions are functions with `#[no_mangle]`, `#[export_name]`, or `#[linkage]`
[INFO] [stdout]     = note: `#[warn(unused_attributes)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `#[inline]` is ignored on externally exported functions
[INFO] [stdout]    --> kernel/src/interrupt.rs:344:1
[INFO] [stdout]     |
[INFO] [stdout] 344 | #[inline(always)]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: externally exported functions are functions with `#[no_mangle]`, `#[export_name]`, or `#[linkage]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `const_mut_refs` has been stable since 1.83.0 and no longer requires an attribute to enable
[INFO] [stdout]  --> kernel/src/lib.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | #![feature(const_mut_refs)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(stable_features)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `naked_functions` has been stable since 1.88.0 and no longer requires an attribute to enable
[INFO] [stdout]  --> kernel/src/lib.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | #![feature(naked_functions)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `panic_info_message` has been stable since 1.81.0 and no longer requires an attribute to enable
[INFO] [stdout]  --> kernel/src/lib.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | #![feature(panic_info_message)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `#[inline]` is ignored on externally exported functions
[INFO] [stdout]    --> kernel/src/interrupt.rs:321:1
[INFO] [stdout]     |
[INFO] [stdout] 321 | #[inline(always)]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: externally exported functions are functions with `#[no_mangle]`, `#[export_name]`, or `#[linkage]`
[INFO] [stdout]     = note: `#[warn(unused_attributes)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `#[inline]` is ignored on externally exported functions
[INFO] [stdout]    --> kernel/src/interrupt.rs:344:1
[INFO] [stdout]     |
[INFO] [stdout] 344 | #[inline(always)]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: externally exported functions are functions with `#[no_mangle]`, `#[export_name]`, or `#[linkage]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]    --> kernel/src/device/ata.rs:394:9
[INFO] [stdout]     |
[INFO] [stdout] 381 | /         loop {
[INFO] [stdout] 382 | |             let regular_status = CommandBlockRegister::RegularStatus(&mut status_register);
[INFO] [stdout] 383 | |             // 读取status寄存器
[INFO] [stdout] 384 | |             pio::read_from_register(port_base, regular_status);
[INFO] [stdout] ...   |
[INFO] [stdout] 393 | |         }
[INFO] [stdout]     | |_________- any code following this expression is unreachable
[INFO] [stdout] 394 |           return true;
[INFO] [stdout]     |           ^^^^^^^^^^^^ unreachable statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]    --> kernel/src/device/ata.rs:394:9
[INFO] [stdout]     |
[INFO] [stdout] 381 | /         loop {
[INFO] [stdout] 382 | |             let regular_status = CommandBlockRegister::RegularStatus(&mut status_register);
[INFO] [stdout] 383 | |             // 读取status寄存器
[INFO] [stdout] 384 | |             pio::read_from_register(port_base, regular_status);
[INFO] [stdout] ...   |
[INFO] [stdout] 393 | |         }
[INFO] [stdout]     | |_________- any code following this expression is unreachable
[INFO] [stdout] 394 |           return true;
[INFO] [stdout]     |           ^^^^^^^^^^^^ unreachable statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame`
[INFO] [stdout]   --> kernel/src/interrupt.rs:55:27
[INFO] [stdout]    |
[INFO] [stdout] 55 | fn invalid_opcode_handler(frame: InterruptStackFrame) {
[INFO] [stdout]    |                           ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame`
[INFO] [stdout]   --> kernel/src/interrupt.rs:69:31
[INFO] [stdout]    |
[INFO] [stdout] 69 | fn general_protection_handler(frame: InterruptStackFrame, error_code: u32) {
[INFO] [stdout]    |                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `error_code`
[INFO] [stdout]   --> kernel/src/interrupt.rs:69:59
[INFO] [stdout]    |
[INFO] [stdout] 69 | fn general_protection_handler(frame: InterruptStackFrame, error_code: u32) {
[INFO] [stdout]    |                                                           ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_error_code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame`
[INFO] [stdout]   --> kernel/src/interrupt.rs:82:25
[INFO] [stdout]    |
[INFO] [stdout] 82 | fn double_fault_handler(frame: InterruptStackFrame, error_code: u32) {
[INFO] [stdout]    |                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `error_code`
[INFO] [stdout]   --> kernel/src/interrupt.rs:82:53
[INFO] [stdout]    |
[INFO] [stdout] 82 | fn double_fault_handler(frame: InterruptStackFrame, error_code: u32) {
[INFO] [stdout]    |                                                     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_error_code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame`
[INFO] [stdout]    --> kernel/src/interrupt.rs:121:21
[INFO] [stdout]     |
[INFO] [stdout] 121 | fn keyboard_handler(frame: InterruptStackFrame) {
[INFO] [stdout]     |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame`
[INFO] [stdout]    --> kernel/src/interrupt.rs:140:18
[INFO] [stdout]     |
[INFO] [stdout] 140 | fn timer_handler(frame: InterruptStackFrame) {
[INFO] [stdout]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame`
[INFO] [stdout]    --> kernel/src/interrupt.rs:169:28
[INFO] [stdout]     |
[INFO] [stdout] 169 | fn primary_channel_handler(frame: InterruptStackFrame) {
[INFO] [stdout]     |                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame`
[INFO] [stdout]    --> kernel/src/interrupt.rs:189:30
[INFO] [stdout]     |
[INFO] [stdout] 189 | fn secondary_channel_handler(frame: InterruptStackFrame) {
[INFO] [stdout]     |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `unused`
[INFO] [stdout]   --> kernel/src/thread_management.rs:51:27
[INFO] [stdout]    |
[INFO] [stdout] 51 | extern "C" fn idle_thread(unused: ThreadArg) {
[INFO] [stdout]    |                           ^^^^^^ help: if this is intentional, prefix it with an underscore: `_unused`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cur_task`
[INFO] [stdout]    --> kernel/src/scheduler.rs:177:25
[INFO] [stdout]     |
[INFO] [stdout] 177 | extern "C" fn switch_to(cur_task: &mut TaskStruct, task_to_run: &mut TaskStruct) {
[INFO] [stdout]     |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cur_task`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `task_to_run`
[INFO] [stdout]    --> kernel/src/scheduler.rs:177:52
[INFO] [stdout]     |
[INFO] [stdout] 177 | extern "C" fn switch_to(cur_task: &mut TaskStruct, task_to_run: &mut TaskStruct) {
[INFO] [stdout]     |                                                    ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_task_to_run`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tss_selector`
[INFO] [stdout]    --> kernel/src/tss.rs:134:17
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub fn load_tss(tss_selector: u16) {
[INFO] [stdout]     |                 ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tss_selector`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]   --> kernel/src/memory/memory_allocation.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 |     let addr = container as *const _ as usize;
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `child_pid`
[INFO] [stdout]   --> kernel/src/process.rs:93:38
[INFO] [stdout]    |
[INFO] [stdout] 93 |         sys_call::ForkResult::Parent(child_pid) => {
[INFO] [stdout]    |                                      ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_child_pid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]   --> kernel/src/thread.rs:25:60
[INFO] [stdout]    |
[INFO] [stdout] 25 |         let task = unsafe { &*TaskStruct::parse_by_all_tag(unsafe { &*tag }) };
[INFO] [stdout]    |                    ------                                  ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]    |                    |
[INFO] [stdout]    |                    because it's nested under this `unsafe` block
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]    --> kernel/src/thread.rs:228:19
[INFO] [stdout]     |
[INFO] [stdout] 228 |     fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
[INFO] [stdout]     |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]    --> kernel/src/thread.rs:329:19
[INFO] [stdout]     |
[INFO] [stdout] 329 |     fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
[INFO] [stdout]     |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]    --> kernel/src/thread.rs:560:19
[INFO] [stdout]     |
[INFO] [stdout] 560 |     fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
[INFO] [stdout]     |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]    --> kernel/src/thread.rs:676:19
[INFO] [stdout]     |
[INFO] [stdout] 676 |     fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
[INFO] [stdout]     |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `eax_sys_nr`
[INFO] [stdout]    --> kernel/src/sys_call/sys_call_proxy.rs:292:16
[INFO] [stdout]     |
[INFO] [stdout] 292 | fn do_sys_call(eax_sys_nr: SystemCallNo, ebx_opt: Option<u32>, ecx_opt: Option<u32>, edx_opt: Option<u32>) -> u32 {
[INFO] [stdout]     |                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_eax_sys_nr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ebx_opt`
[INFO] [stdout]    --> kernel/src/sys_call/sys_call_proxy.rs:292:42
[INFO] [stdout]     |
[INFO] [stdout] 292 | fn do_sys_call(eax_sys_nr: SystemCallNo, ebx_opt: Option<u32>, ecx_opt: Option<u32>, edx_opt: Option<u32>) -> u32 {
[INFO] [stdout]     |                                          ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ebx_opt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ecx_opt`
[INFO] [stdout]    --> kernel/src/sys_call/sys_call_proxy.rs:292:64
[INFO] [stdout]     |
[INFO] [stdout] 292 | fn do_sys_call(eax_sys_nr: SystemCallNo, ebx_opt: Option<u32>, ecx_opt: Option<u32>, edx_opt: Option<u32>) -> u32 {
[INFO] [stdout]     |                                                                ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ecx_opt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `edx_opt`
[INFO] [stdout]    --> kernel/src/sys_call/sys_call_proxy.rs:292:86
[INFO] [stdout]     |
[INFO] [stdout] 292 | fn do_sys_call(eax_sys_nr: SystemCallNo, ebx_opt: Option<u32>, ecx_opt: Option<u32>, edx_opt: Option<u32>) -> u32 {
[INFO] [stdout]     |                                                                                      ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_edx_opt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame`
[INFO] [stdout]   --> kernel/src/interrupt.rs:55:27
[INFO] [stdout]    |
[INFO] [stdout] 55 | fn invalid_opcode_handler(frame: InterruptStackFrame) {
[INFO] [stdout]    |                           ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame`
[INFO] [stdout]   --> kernel/src/interrupt.rs:69:31
[INFO] [stdout]    |
[INFO] [stdout] 69 | fn general_protection_handler(frame: InterruptStackFrame, error_code: u32) {
[INFO] [stdout]    |                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `error_code`
[INFO] [stdout]   --> kernel/src/interrupt.rs:69:59
[INFO] [stdout]    |
[INFO] [stdout] 69 | fn general_protection_handler(frame: InterruptStackFrame, error_code: u32) {
[INFO] [stdout]    |                                                           ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_error_code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame`
[INFO] [stdout]   --> kernel/src/interrupt.rs:82:25
[INFO] [stdout]    |
[INFO] [stdout] 82 | fn double_fault_handler(frame: InterruptStackFrame, error_code: u32) {
[INFO] [stdout]    |                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `error_code`
[INFO] [stdout]   --> kernel/src/interrupt.rs:82:53
[INFO] [stdout]    |
[INFO] [stdout] 82 | fn double_fault_handler(frame: InterruptStackFrame, error_code: u32) {
[INFO] [stdout]    |                                                     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_error_code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame`
[INFO] [stdout]    --> kernel/src/interrupt.rs:121:21
[INFO] [stdout]     |
[INFO] [stdout] 121 | fn keyboard_handler(frame: InterruptStackFrame) {
[INFO] [stdout]     |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame`
[INFO] [stdout]    --> kernel/src/interrupt.rs:140:18
[INFO] [stdout]     |
[INFO] [stdout] 140 | fn timer_handler(frame: InterruptStackFrame) {
[INFO] [stdout]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame`
[INFO] [stdout]    --> kernel/src/interrupt.rs:169:28
[INFO] [stdout]     |
[INFO] [stdout] 169 | fn primary_channel_handler(frame: InterruptStackFrame) {
[INFO] [stdout]     |                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame`
[INFO] [stdout]    --> kernel/src/interrupt.rs:189:30
[INFO] [stdout]     |
[INFO] [stdout] 189 | fn secondary_channel_handler(frame: InterruptStackFrame) {
[INFO] [stdout]     |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `disk_name`
[INFO] [stdout]    --> kernel/src/device/ata.rs:203:13
[INFO] [stdout]     |
[INFO] [stdout] 203 |         let disk_name = self.get_name();
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_disk_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sn_name`
[INFO] [stdout]    --> kernel/src/device/ata.rs:204:13
[INFO] [stdout]     |
[INFO] [stdout] 204 |         let sn_name = core::str::from_utf8(&identify_res.sn).expect("Invalid name");
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sn_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `module_name`
[INFO] [stdout]    --> kernel/src/device/ata.rs:205:13
[INFO] [stdout]     |
[INFO] [stdout] 205 |         let module_name = core::str::from_utf8(&identify_res.module).expect("invalid moduel name");
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_module_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `unused`
[INFO] [stdout]   --> kernel/src/thread_management.rs:51:27
[INFO] [stdout]    |
[INFO] [stdout] 51 | extern "C" fn idle_thread(unused: ThreadArg) {
[INFO] [stdout]    |                           ^^^^^^ help: if this is intentional, prefix it with an underscore: `_unused`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cur_task`
[INFO] [stdout]    --> kernel/src/scheduler.rs:177:25
[INFO] [stdout]     |
[INFO] [stdout] 177 | extern "C" fn switch_to(cur_task: &mut TaskStruct, task_to_run: &mut TaskStruct) {
[INFO] [stdout]     |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cur_task`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `task_to_run`
[INFO] [stdout]    --> kernel/src/scheduler.rs:177:52
[INFO] [stdout]     |
[INFO] [stdout] 177 | extern "C" fn switch_to(cur_task: &mut TaskStruct, task_to_run: &mut TaskStruct) {
[INFO] [stdout]     |                                                    ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_task_to_run`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> kernel/src/device/init.rs:70:13
[INFO] [stdout]    |
[INFO] [stdout] 70 |         let mut channel = get_ata_channel(&channel_idx);
[INFO] [stdout]    |             ----^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> kernel/src/device/init.rs:87:17
[INFO] [stdout]    |
[INFO] [stdout] 87 |             let mut disk = &mut channel.disks[disk_idx];
[INFO] [stdout]    |                 ----^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> kernel/src/device/init.rs:205:21
[INFO] [stdout]     |
[INFO] [stdout] 205 |                 let mut logical_part = &mut disk.logical_parts[part_no];
[INFO] [stdout]     |                     ----^^^^^^^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idx`
[INFO] [stdout]    --> kernel/src/device/init.rs:192:14
[INFO] [stdout]     |
[INFO] [stdout] 192 |         for (idx, part_entry) in part_table.iter().enumerate() {
[INFO] [stdout]     |              ^^^ help: if this is intentional, prefix it with an underscore: `_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> kernel/src/device/pio.rs:84:37
[INFO] [stdout]    |
[INFO] [stdout] 84 |         CommandBlockRegister::Error(mut error) => {
[INFO] [stdout]    |                                     ----^^^^^
[INFO] [stdout]    |                                     |
[INFO] [stdout]    |                                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]    --> kernel/src/filesystem/inode.rs:111:19
[INFO] [stdout]     |
[INFO] [stdout] 111 |     fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
[INFO] [stdout]     |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tss_selector`
[INFO] [stdout]    --> kernel/src/tss.rs:134:17
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub fn load_tss(tss_selector: u16) {
[INFO] [stdout]     |                 ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tss_selector`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]   --> kernel/src/memory/memory_allocation.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 |     let addr = container as *const _ as usize;
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `bytes_written` is never read
[INFO] [stdout]    --> kernel/src/filesystem/file.rs:243:33
[INFO] [stdout]     |
[INFO] [stdout] 243 |         let mut bytes_written = constants::DISK_SECTOR_SIZE;
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `bytes_read` is never read
[INFO] [stdout]    --> kernel/src/filesystem/file.rs:367:30
[INFO] [stdout]     |
[INFO] [stdout] 367 |         let mut bytes_read = 0; 
[INFO] [stdout]     |                              ^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `child_pid`
[INFO] [stdout]   --> kernel/src/process.rs:93:38
[INFO] [stdout]    |
[INFO] [stdout] 93 |         sys_call::ForkResult::Parent(child_pid) => {
[INFO] [stdout]    |                                      ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_child_pid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]   --> kernel/src/thread.rs:25:60
[INFO] [stdout]    |
[INFO] [stdout] 25 |         let task = unsafe { &*TaskStruct::parse_by_all_tag(unsafe { &*tag }) };
[INFO] [stdout]    |                    ------                                  ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]    |                    |
[INFO] [stdout]    |                    because it's nested under this `unsafe` block
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]    --> kernel/src/thread.rs:228:19
[INFO] [stdout]     |
[INFO] [stdout] 228 |     fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
[INFO] [stdout]     |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]    --> kernel/src/thread.rs:329:19
[INFO] [stdout]     |
[INFO] [stdout] 329 |     fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
[INFO] [stdout]     |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idx`
[INFO] [stdout]    --> kernel/src/filesystem/dir_entry.rs:297:21
[INFO] [stdout]     |
[INFO] [stdout] 297 |             .find(|(idx, &entry)| entry.is_empty())
[INFO] [stdout]     |                     ^^^ help: if this is intentional, prefix it with an underscore: `_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idx`
[INFO] [stdout]    --> kernel/src/filesystem/dir_entry.rs:312:17
[INFO] [stdout]     |
[INFO] [stdout] 312 |         .find(|(idx, &entry)| entry.is_empty())
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `lba`
[INFO] [stdout]    --> kernel/src/filesystem/dir_entry.rs:289:22
[INFO] [stdout]     |
[INFO] [stdout] 289 |         .map(|(idx, &lba)| idx);
[INFO] [stdout]     |                      ^^^ help: if this is intentional, prefix it with an underscore: `_lba`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idx`
[INFO] [stdout]    --> kernel/src/filesystem/dir_entry.rs:288:17
[INFO] [stdout]     |
[INFO] [stdout] 288 |         .find(|(idx, &lba)| lba.is_empty())
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]    --> kernel/src/thread.rs:560:19
[INFO] [stdout]     |
[INFO] [stdout] 560 |     fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
[INFO] [stdout]     |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> kernel/src/filesystem/file_descriptor.rs:31:19
[INFO] [stdout]    |
[INFO] [stdout] 31 |     fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
[INFO] [stdout]    |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]    --> kernel/src/thread.rs:676:19
[INFO] [stdout]     |
[INFO] [stdout] 676 |     fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
[INFO] [stdout]     |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]    --> kernel/src/filesystem/file_descriptor.rs:171:19
[INFO] [stdout]     |
[INFO] [stdout] 171 |     fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
[INFO] [stdout]     |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `eax_sys_nr`
[INFO] [stdout]    --> kernel/src/sys_call/sys_call_proxy.rs:292:16
[INFO] [stdout]     |
[INFO] [stdout] 292 | fn do_sys_call(eax_sys_nr: SystemCallNo, ebx_opt: Option<u32>, ecx_opt: Option<u32>, edx_opt: Option<u32>) -> u32 {
[INFO] [stdout]     |                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_eax_sys_nr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> kernel/src/filesystem/file_api.rs:193:13
[INFO] [stdout]     |
[INFO] [stdout] 192 |             SeekFrom::Start(start) => start,
[INFO] [stdout]     |             ---------------------- matches all the relevant values
[INFO] [stdout] 193 |             _ => 0,
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ebx_opt`
[INFO] [stdout]    --> kernel/src/sys_call/sys_call_proxy.rs:292:42
[INFO] [stdout]     |
[INFO] [stdout] 292 | fn do_sys_call(eax_sys_nr: SystemCallNo, ebx_opt: Option<u32>, ecx_opt: Option<u32>, edx_opt: Option<u32>) -> u32 {
[INFO] [stdout]     |                                          ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ebx_opt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ecx_opt`
[INFO] [stdout]    --> kernel/src/sys_call/sys_call_proxy.rs:292:64
[INFO] [stdout]     |
[INFO] [stdout] 292 | fn do_sys_call(eax_sys_nr: SystemCallNo, ebx_opt: Option<u32>, ecx_opt: Option<u32>, edx_opt: Option<u32>) -> u32 {
[INFO] [stdout]     |                                                                ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ecx_opt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `edx_opt`
[INFO] [stdout]    --> kernel/src/sys_call/sys_call_proxy.rs:292:86
[INFO] [stdout]     |
[INFO] [stdout] 292 | fn do_sys_call(eax_sys_nr: SystemCallNo, ebx_opt: Option<u32>, ecx_opt: Option<u32>, edx_opt: Option<u32>) -> u32 {
[INFO] [stdout]     |                                                                                      ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_edx_opt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `disk_name`
[INFO] [stdout]    --> kernel/src/device/ata.rs:203:13
[INFO] [stdout]     |
[INFO] [stdout] 203 |         let disk_name = self.get_name();
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_disk_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sn_name`
[INFO] [stdout]    --> kernel/src/device/ata.rs:204:13
[INFO] [stdout]     |
[INFO] [stdout] 204 |         let sn_name = core::str::from_utf8(&identify_res.sn).expect("Invalid name");
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sn_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `module_name`
[INFO] [stdout]    --> kernel/src/device/ata.rs:205:13
[INFO] [stdout]     |
[INFO] [stdout] 205 |         let module_name = core::str::from_utf8(&identify_res.module).expect("invalid moduel name");
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_module_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> kernel/src/device/init.rs:70:13
[INFO] [stdout]    |
[INFO] [stdout] 70 |         let mut channel = get_ata_channel(&channel_idx);
[INFO] [stdout]    |             ----^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> kernel/src/device/init.rs:87:17
[INFO] [stdout]    |
[INFO] [stdout] 87 |             let mut disk = &mut channel.disks[disk_idx];
[INFO] [stdout]    |                 ----^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> kernel/src/device/init.rs:205:21
[INFO] [stdout]     |
[INFO] [stdout] 205 |                 let mut logical_part = &mut disk.logical_parts[part_no];
[INFO] [stdout]     |                     ----^^^^^^^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idx`
[INFO] [stdout]    --> kernel/src/device/init.rs:192:14
[INFO] [stdout]     |
[INFO] [stdout] 192 |         for (idx, part_entry) in part_table.iter().enumerate() {
[INFO] [stdout]     |              ^^^ help: if this is intentional, prefix it with an underscore: `_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> kernel/src/device/pio.rs:84:37
[INFO] [stdout]    |
[INFO] [stdout] 84 |         CommandBlockRegister::Error(mut error) => {
[INFO] [stdout]    |                                     ----^^^^^
[INFO] [stdout]    |                                     |
[INFO] [stdout]    |                                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]    --> kernel/src/filesystem/inode.rs:111:19
[INFO] [stdout]     |
[INFO] [stdout] 111 |     fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
[INFO] [stdout]     |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `child_id`
[INFO] [stdout]   --> kernel/src/shell/cmd_dispatcher.rs:34:42
[INFO] [stdout]    |
[INFO] [stdout] 34 |             sys_call::ForkResult::Parent(child_id) => {
[INFO] [stdout]    |                                          ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_child_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chpid`
[INFO] [stdout]   --> kernel/src/shell/cmd_dispatcher.rs:40:22
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 let (chpid, exit_status) = wait_res.unwrap();
[INFO] [stdout]    |                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_chpid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `exit_status`
[INFO] [stdout]   --> kernel/src/shell/cmd_dispatcher.rs:40:29
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 let (chpid, exit_status) = wait_res.unwrap();
[INFO] [stdout]    |                             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_exit_status`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `bytes_written` is never read
[INFO] [stdout]    --> kernel/src/filesystem/file.rs:243:33
[INFO] [stdout]     |
[INFO] [stdout] 243 |         let mut bytes_written = constants::DISK_SECTOR_SIZE;
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `bytes_read` is never read
[INFO] [stdout]    --> kernel/src/filesystem/file.rs:367:30
[INFO] [stdout]     |
[INFO] [stdout] 367 |         let mut bytes_read = 0; 
[INFO] [stdout]     |                              ^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `alert` is never used
[INFO] [stdout]   --> kernel/src/interrupt.rs:96:4
[INFO] [stdout]    |
[INFO] [stdout] 96 | fn alert(error_msg: &str) {
[INFO] [stdout]    |    ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `stash_intr_stack` is never used
[INFO] [stdout]    --> kernel/src/interrupt.rs:298:4
[INFO] [stdout]     |
[INFO] [stdout] 298 | fn stash_intr_stack() {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `switch_to_wrapper` is never used
[INFO] [stdout]    --> kernel/src/scheduler.rs:121:15
[INFO] [stdout]     |
[INFO] [stdout] 121 | extern "C" fn switch_to_wrapper(cur_task: &mut TaskStruct, task_to_run: &mut TaskStruct) {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `CTRL_DOWN` is never used
[INFO] [stdout]  --> kernel/src/printer.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | static CTRL_DOWN: RacyCell<bool> = RacyCell::new(false);
[INFO] [stdout]   |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `SHIFT_DOWN` is never used
[INFO] [stdout]  --> kernel/src/printer.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | static SHIFT_DOWN: RacyCell<bool> = RacyCell::new(false);
[INFO] [stdout]   |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `ALT_DOWN` is never used
[INFO] [stdout]  --> kernel/src/printer.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | static ALT_DOWN: RacyCell<bool> = RacyCell::new(false);
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `CAPS_LOCKED` is never used
[INFO] [stdout]  --> kernel/src/printer.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | static CAPS_LOCKED: RacyCell<bool> = RacyCell::new(false);
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> kernel/src/thread.rs:527:8
[INFO] [stdout]     |
[INFO] [stdout] 520 | impl ThreadStack {
[INFO] [stdout]     | ---------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 527 |     fn new(function: ThreadFunc, arg: ThreadArg) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Print` and `WriteFile` are never constructed
[INFO] [stdout]    --> kernel/src/sys_call/sys_call.rs:50:5
[INFO] [stdout]     |
[INFO] [stdout]  32 | pub enum SystemCallNo {
[INFO] [stdout]     |          ------------ variants in this enum
[INFO] [stdout] ...
[INFO] [stdout]  50 |     Print,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     WriteFile,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SystemCallNo` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `seek_file` is never used
[INFO] [stdout]    --> kernel/src/sys_call/sys_call_api.rs:360:4
[INFO] [stdout]     |
[INFO] [stdout] 360 | fn seek_file(file_addr: u32, seek_addr: u32, res_addr: u32) -> u32 {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `unblock` is never used
[INFO] [stdout]    --> kernel/src/device/ata.rs:457:8
[INFO] [stdout]     |
[INFO] [stdout] 145 | impl Disk {
[INFO] [stdout]     | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 457 |     fn unblock(&mut self) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Error` and `Feature` are never constructed
[INFO] [stdout]    --> kernel/src/device/pio.rs:115:5
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub enum CommandBlockRegister<'a> {
[INFO] [stdout]     |          -------------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 115 |     Error(&'a mut ErrorRegister),
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     Feature(u8),
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `CommandBlockRegister` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `empty` is never used
[INFO] [stdout]    --> kernel/src/device/pio.rs:156:12
[INFO] [stdout]     |
[INFO] [stdout] 155 | impl ErrorRegister {
[INFO] [stdout]     | ------------------ associated function in this implementation
[INFO] [stdout] 156 |     pub fn empty() -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Err`, `Idx`, `Corr`, `Srv`, `Df`, and `Rdy` are never constructed
[INFO] [stdout]    --> kernel/src/device/pio.rs:191:5
[INFO] [stdout]     |
[INFO] [stdout] 187 | enum StatusRegisterBitEnum {
[INFO] [stdout]     |      --------------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 191 |     Err = 0x0,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |     Idx = 0x1, 
[INFO] [stdout]     |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     Corr = 0x2,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     Srv = 0x4,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     Df = 0x5,
[INFO] [stdout]     |     ^^
[INFO] [stdout] ...
[INFO] [stdout] 215 |     Rdy = 0x6,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Flush` is never constructed
[INFO] [stdout]    --> kernel/src/device/pio.rs:288:5
[INFO] [stdout]     |
[INFO] [stdout] 280 | pub enum PIOCommand {
[INFO] [stdout]     |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 288 |     Flush = 0xE7,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `PIOCommand` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INODE_DATA_SECS` is never used
[INFO] [stdout]   --> kernel/src/filesystem/constant.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const INODE_DATA_SECS: usize = INODE_DIRECT_DATA_SECS + INODE_INDIRECT_DATA_SECS;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_ENTRY_IN_BLOCK` is never used
[INFO] [stdout]   --> kernel/src/filesystem/constant.rs:49:11
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub const MAX_ENTRY_IN_BLOCK: usize = constants::DISK_SECTOR_SIZE / size_of::<DirEntry>();
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `write_deny` is never read
[INFO] [stdout]   --> kernel/src/filesystem/inode.rs:90:5
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub struct OpenedInode {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 90 |     write_deny: bool,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OpenedInode` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_dir_entry` is never used
[INFO] [stdout]   --> kernel/src/filesystem/dir_entry.rs:93:8
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub fn read_dir_entry<'a, 'b>(fs: &'a mut FileSystem, lba: LbaAddr, buff: &'b mut [u8; constants::DISK_SECTOR_SIZE]) -> &'b mut [DirEntry] {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_capital` is never used
[INFO] [stdout]   --> kernel/src/shell/my_shell.rs:31:4
[INFO] [stdout]    |
[INFO] [stdout] 31 | fn get_capital() -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> kernel/src/mutex.rs:27:17
[INFO] [stdout]    |
[INFO] [stdout] 27 |     pub fn lock(&mut self) -> MutexGuard<T>{
[INFO] [stdout]    |                 ^^^^^^^^^     ^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 27 |     pub fn lock(&mut self) -> MutexGuard<'_, T>{
[INFO] [stdout]    |                                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> kernel/src/keyboard.rs:154:120
[INFO] [stdout]     |
[INFO] [stdout] 154 | static KEYCODE_BLOCKING_QUEUE: RacyCell<ArrayBlockingQueue<AsciiKey>> = RacyCell::new(ArrayBlockingQueue::new(unsafe { &mut BUFFER }));
[INFO] [stdout]     |                                                                                                                        ^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 154 | static KEYCODE_BLOCKING_QUEUE: RacyCell<ArrayBlockingQueue<AsciiKey>> = RacyCell::new(ArrayBlockingQueue::new(unsafe { &raw mut BUFFER }));
[INFO] [stdout]     |                                                                                                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> kernel/src/sys_call/sys_call_proxy.rs:101:23
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub fn read_dir(path: &str) -> Result<filesystem::ReadDir, filesystem::DirError> {
[INFO] [stdout]     |                       ^^^^            ^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub fn read_dir(path: &str) -> Result<filesystem::ReadDir<'_>, filesystem::DirError> {
[INFO] [stdout]     |                                                          ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> kernel/src/sys_call/dir_api.rs:93:23
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub fn read_dir(path: &str) -> Result<ReadDir, filesystem::DirError> {
[INFO] [stdout]    |                       ^^^^            ^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                       |
[INFO] [stdout]    |                       the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub fn read_dir(path: &str) -> Result<ReadDir<'_>, filesystem::DirError> {
[INFO] [stdout]    |                                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> kernel/src/pid_allocator.rs:45:79
[INFO] [stdout]    |
[INFO] [stdout] 45 | static mut GLOBAL_PID_POOL: Mutex<PidPool> = Mutex::new(PidPool::new(unsafe { &mut PID_BITS }));
[INFO] [stdout]    |                                                                               ^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 45 | static mut GLOBAL_PID_POOL: Mutex<PidPool> = Mutex::new(PidPool::new(unsafe { &raw mut PID_BITS }));
[INFO] [stdout]    |                                                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> kernel/src/pid_allocator.rs:53:33
[INFO] [stdout]    |
[INFO] [stdout] 53 |     let mut pid_pool = unsafe { GLOBAL_PID_POOL.lock() };
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> kernel/src/pid_allocator.rs:73:33
[INFO] [stdout]    |
[INFO] [stdout] 73 |     let mut pid_pool = unsafe { GLOBAL_PID_POOL.lock() };
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> kernel/src/device/init.rs:35:32
[INFO] [stdout]    |
[INFO] [stdout] 35 |     let all_channel = unsafe { ALL_ATA_CHANNELS.get_mut() };
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> kernel/src/device/init.rs:51:14
[INFO] [stdout]    |
[INFO] [stdout] 51 |     unsafe { MAIN_EXT_LBA_BASE.get_mut() }
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> kernel/src/filesystem/dir_api.rs:253:23
[INFO] [stdout]     |
[INFO] [stdout] 253 | pub fn read_dir(path: &str) -> Result<ReadDir, DirError> {
[INFO] [stdout]     |                       ^^^^            ^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 253 | pub fn read_dir(path: &str) -> Result<ReadDir<'_>, DirError> {
[INFO] [stdout]     |                                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> kernel/src/shell/shell.rs:87:20
[INFO] [stdout]    |
[INFO] [stdout] 87 |     pub fn get_cmd(&self) -> Option<(cmd::Cmd, Option<&str>)> {
[INFO] [stdout]    |                    ^^^^^             ^^^^^^^^         ^^^^ the same lifetime is elided here
[INFO] [stdout]    |                    |                 |
[INFO] [stdout]    |                    |                 the same lifetime is hidden here
[INFO] [stdout]    |                    the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 87 |     pub fn get_cmd(&self) -> Option<(cmd::Cmd<'_>, Option<&str>)> {
[INFO] [stdout]    |                                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> kernel/src/shell/shell_util.rs:100:25
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub fn parse_cmd(input: &str) -> (cmd::Cmd, Option<&str>) {
[INFO] [stdout]     |                         ^^^^      ^^^^^^^^         ^^^^ the same lifetime is elided here
[INFO] [stdout]     |                         |         |
[INFO] [stdout]     |                         |         the same lifetime is hidden here
[INFO] [stdout]     |                         the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub fn parse_cmd(input: &str) -> (cmd::Cmd<'_>, Option<&str>) {
[INFO] [stdout]     |                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idx`
[INFO] [stdout]    --> kernel/src/filesystem/dir_entry.rs:297:21
[INFO] [stdout]     |
[INFO] [stdout] 297 |             .find(|(idx, &entry)| entry.is_empty())
[INFO] [stdout]     |                     ^^^ help: if this is intentional, prefix it with an underscore: `_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idx`
[INFO] [stdout]    --> kernel/src/filesystem/dir_entry.rs:312:17
[INFO] [stdout]     |
[INFO] [stdout] 312 |         .find(|(idx, &entry)| entry.is_empty())
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `lba`
[INFO] [stdout]    --> kernel/src/filesystem/dir_entry.rs:289:22
[INFO] [stdout]     |
[INFO] [stdout] 289 |         .map(|(idx, &lba)| idx);
[INFO] [stdout]     |                      ^^^ help: if this is intentional, prefix it with an underscore: `_lba`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idx`
[INFO] [stdout]    --> kernel/src/filesystem/dir_entry.rs:288:17
[INFO] [stdout]     |
[INFO] [stdout] 288 |         .find(|(idx, &lba)| lba.is_empty())
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> kernel/src/filesystem/file_descriptor.rs:31:19
[INFO] [stdout]    |
[INFO] [stdout] 31 |     fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
[INFO] [stdout]    |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]    --> kernel/src/filesystem/file_descriptor.rs:171:19
[INFO] [stdout]     |
[INFO] [stdout] 171 |     fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
[INFO] [stdout]     |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> kernel/src/filesystem/file_api.rs:193:13
[INFO] [stdout]     |
[INFO] [stdout] 192 |             SeekFrom::Start(start) => start,
[INFO] [stdout]     |             ---------------------- matches all the relevant values
[INFO] [stdout] 193 |             _ => 0,
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `child_id`
[INFO] [stdout]   --> kernel/src/shell/cmd_dispatcher.rs:34:42
[INFO] [stdout]    |
[INFO] [stdout] 34 |             sys_call::ForkResult::Parent(child_id) => {
[INFO] [stdout]    |                                          ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_child_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chpid`
[INFO] [stdout]   --> kernel/src/shell/cmd_dispatcher.rs:40:22
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 let (chpid, exit_status) = wait_res.unwrap();
[INFO] [stdout]    |                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_chpid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `exit_status`
[INFO] [stdout]   --> kernel/src/shell/cmd_dispatcher.rs:40:29
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 let (chpid, exit_status) = wait_res.unwrap();
[INFO] [stdout]    |                             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_exit_status`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `alert` is never used
[INFO] [stdout]   --> kernel/src/interrupt.rs:96:4
[INFO] [stdout]    |
[INFO] [stdout] 96 | fn alert(error_msg: &str) {
[INFO] [stdout]    |    ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `stash_intr_stack` is never used
[INFO] [stdout]    --> kernel/src/interrupt.rs:298:4
[INFO] [stdout]     |
[INFO] [stdout] 298 | fn stash_intr_stack() {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `switch_to_wrapper` is never used
[INFO] [stdout]    --> kernel/src/scheduler.rs:121:15
[INFO] [stdout]     |
[INFO] [stdout] 121 | extern "C" fn switch_to_wrapper(cur_task: &mut TaskStruct, task_to_run: &mut TaskStruct) {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `CTRL_DOWN` is never used
[INFO] [stdout]  --> kernel/src/printer.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | static CTRL_DOWN: RacyCell<bool> = RacyCell::new(false);
[INFO] [stdout]   |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `SHIFT_DOWN` is never used
[INFO] [stdout]  --> kernel/src/printer.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | static SHIFT_DOWN: RacyCell<bool> = RacyCell::new(false);
[INFO] [stdout]   |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `ALT_DOWN` is never used
[INFO] [stdout]  --> kernel/src/printer.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | static ALT_DOWN: RacyCell<bool> = RacyCell::new(false);
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `CAPS_LOCKED` is never used
[INFO] [stdout]  --> kernel/src/printer.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | static CAPS_LOCKED: RacyCell<bool> = RacyCell::new(false);
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> kernel/src/thread.rs:527:8
[INFO] [stdout]     |
[INFO] [stdout] 520 | impl ThreadStack {
[INFO] [stdout]     | ---------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 527 |     fn new(function: ThreadFunc, arg: ThreadArg) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Print` and `WriteFile` are never constructed
[INFO] [stdout]    --> kernel/src/sys_call/sys_call.rs:50:5
[INFO] [stdout]     |
[INFO] [stdout]  32 | pub enum SystemCallNo {
[INFO] [stdout]     |          ------------ variants in this enum
[INFO] [stdout] ...
[INFO] [stdout]  50 |     Print,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     WriteFile,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SystemCallNo` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `seek_file` is never used
[INFO] [stdout]    --> kernel/src/sys_call/sys_call_api.rs:360:4
[INFO] [stdout]     |
[INFO] [stdout] 360 | fn seek_file(file_addr: u32, seek_addr: u32, res_addr: u32) -> u32 {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `unblock` is never used
[INFO] [stdout]    --> kernel/src/device/ata.rs:457:8
[INFO] [stdout]     |
[INFO] [stdout] 145 | impl Disk {
[INFO] [stdout]     | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 457 |     fn unblock(&mut self) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Error` and `Feature` are never constructed
[INFO] [stdout]    --> kernel/src/device/pio.rs:115:5
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub enum CommandBlockRegister<'a> {
[INFO] [stdout]     |          -------------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 115 |     Error(&'a mut ErrorRegister),
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     Feature(u8),
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `CommandBlockRegister` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `empty` is never used
[INFO] [stdout]    --> kernel/src/device/pio.rs:156:12
[INFO] [stdout]     |
[INFO] [stdout] 155 | impl ErrorRegister {
[INFO] [stdout]     | ------------------ associated function in this implementation
[INFO] [stdout] 156 |     pub fn empty() -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Err`, `Idx`, `Corr`, `Srv`, `Df`, and `Rdy` are never constructed
[INFO] [stdout]    --> kernel/src/device/pio.rs:191:5
[INFO] [stdout]     |
[INFO] [stdout] 187 | enum StatusRegisterBitEnum {
[INFO] [stdout]     |      --------------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 191 |     Err = 0x0,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |     Idx = 0x1, 
[INFO] [stdout]     |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     Corr = 0x2,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     Srv = 0x4,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     Df = 0x5,
[INFO] [stdout]     |     ^^
[INFO] [stdout] ...
[INFO] [stdout] 215 |     Rdy = 0x6,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Flush` is never constructed
[INFO] [stdout]    --> kernel/src/device/pio.rs:288:5
[INFO] [stdout]     |
[INFO] [stdout] 280 | pub enum PIOCommand {
[INFO] [stdout]     |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 288 |     Flush = 0xE7,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `PIOCommand` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INODE_DATA_SECS` is never used
[INFO] [stdout]   --> kernel/src/filesystem/constant.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const INODE_DATA_SECS: usize = INODE_DIRECT_DATA_SECS + INODE_INDIRECT_DATA_SECS;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_ENTRY_IN_BLOCK` is never used
[INFO] [stdout]   --> kernel/src/filesystem/constant.rs:49:11
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub const MAX_ENTRY_IN_BLOCK: usize = constants::DISK_SECTOR_SIZE / size_of::<DirEntry>();
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `write_deny` is never read
[INFO] [stdout]   --> kernel/src/filesystem/inode.rs:90:5
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub struct OpenedInode {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 90 |     write_deny: bool,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OpenedInode` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_dir_entry` is never used
[INFO] [stdout]   --> kernel/src/filesystem/dir_entry.rs:93:8
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub fn read_dir_entry<'a, 'b>(fs: &'a mut FileSystem, lba: LbaAddr, buff: &'b mut [u8; constants::DISK_SECTOR_SIZE]) -> &'b mut [DirEntry] {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_capital` is never used
[INFO] [stdout]   --> kernel/src/shell/my_shell.rs:31:4
[INFO] [stdout]    |
[INFO] [stdout] 31 | fn get_capital() -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> kernel/src/mutex.rs:27:17
[INFO] [stdout]    |
[INFO] [stdout] 27 |     pub fn lock(&mut self) -> MutexGuard<T>{
[INFO] [stdout]    |                 ^^^^^^^^^     ^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 27 |     pub fn lock(&mut self) -> MutexGuard<'_, T>{
[INFO] [stdout]    |                                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> kernel/src/keyboard.rs:154:120
[INFO] [stdout]     |
[INFO] [stdout] 154 | static KEYCODE_BLOCKING_QUEUE: RacyCell<ArrayBlockingQueue<AsciiKey>> = RacyCell::new(ArrayBlockingQueue::new(unsafe { &mut BUFFER }));
[INFO] [stdout]     |                                                                                                                        ^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 154 | static KEYCODE_BLOCKING_QUEUE: RacyCell<ArrayBlockingQueue<AsciiKey>> = RacyCell::new(ArrayBlockingQueue::new(unsafe { &raw mut BUFFER }));
[INFO] [stdout]     |                                                                                                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> kernel/src/sys_call/sys_call_proxy.rs:101:23
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub fn read_dir(path: &str) -> Result<filesystem::ReadDir, filesystem::DirError> {
[INFO] [stdout]     |                       ^^^^            ^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub fn read_dir(path: &str) -> Result<filesystem::ReadDir<'_>, filesystem::DirError> {
[INFO] [stdout]     |                                                          ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> kernel/src/sys_call/dir_api.rs:93:23
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub fn read_dir(path: &str) -> Result<ReadDir, filesystem::DirError> {
[INFO] [stdout]    |                       ^^^^            ^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                       |
[INFO] [stdout]    |                       the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub fn read_dir(path: &str) -> Result<ReadDir<'_>, filesystem::DirError> {
[INFO] [stdout]    |                                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> kernel/src/pid_allocator.rs:45:79
[INFO] [stdout]    |
[INFO] [stdout] 45 | static mut GLOBAL_PID_POOL: Mutex<PidPool> = Mutex::new(PidPool::new(unsafe { &mut PID_BITS }));
[INFO] [stdout]    |                                                                               ^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 45 | static mut GLOBAL_PID_POOL: Mutex<PidPool> = Mutex::new(PidPool::new(unsafe { &raw mut PID_BITS }));
[INFO] [stdout]    |                                                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> kernel/src/pid_allocator.rs:53:33
[INFO] [stdout]    |
[INFO] [stdout] 53 |     let mut pid_pool = unsafe { GLOBAL_PID_POOL.lock() };
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> kernel/src/pid_allocator.rs:73:33
[INFO] [stdout]    |
[INFO] [stdout] 73 |     let mut pid_pool = unsafe { GLOBAL_PID_POOL.lock() };
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> kernel/src/device/init.rs:35:32
[INFO] [stdout]    |
[INFO] [stdout] 35 |     let all_channel = unsafe { ALL_ATA_CHANNELS.get_mut() };
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> kernel/src/device/init.rs:51:14
[INFO] [stdout]    |
[INFO] [stdout] 51 |     unsafe { MAIN_EXT_LBA_BASE.get_mut() }
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> kernel/src/filesystem/dir_api.rs:253:23
[INFO] [stdout]     |
[INFO] [stdout] 253 | pub fn read_dir(path: &str) -> Result<ReadDir, DirError> {
[INFO] [stdout]     |                       ^^^^            ^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 253 | pub fn read_dir(path: &str) -> Result<ReadDir<'_>, DirError> {
[INFO] [stdout]     |                                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> kernel/src/shell/shell.rs:87:20
[INFO] [stdout]    |
[INFO] [stdout] 87 |     pub fn get_cmd(&self) -> Option<(cmd::Cmd, Option<&str>)> {
[INFO] [stdout]    |                    ^^^^^             ^^^^^^^^         ^^^^ the same lifetime is elided here
[INFO] [stdout]    |                    |                 |
[INFO] [stdout]    |                    |                 the same lifetime is hidden here
[INFO] [stdout]    |                    the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 87 |     pub fn get_cmd(&self) -> Option<(cmd::Cmd<'_>, Option<&str>)> {
[INFO] [stdout]    |                                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> kernel/src/shell/shell_util.rs:100:25
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub fn parse_cmd(input: &str) -> (cmd::Cmd, Option<&str>) {
[INFO] [stdout]     |                         ^^^^      ^^^^^^^^         ^^^^ the same lifetime is elided here
[INFO] [stdout]     |                         |         |
[INFO] [stdout]     |                         |         the same lifetime is hidden here
[INFO] [stdout]     |                         the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub fn parse_cmd(input: &str) -> (cmd::Cmd<'_>, Option<&str>) {
[INFO] [stdout]     |                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "912645a032ea02e5928f33be2bbf89a48393daa43b286bebb44d5833a1634e32", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "912645a032ea02e5928f33be2bbf89a48393daa43b286bebb44d5833a1634e32", kill_on_drop: false }`
[INFO] [stdout] 912645a032ea02e5928f33be2bbf89a48393daa43b286bebb44d5833a1634e32
