[INFO] cloning repository https://github.com/tuttlem/substrate
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/tuttlem/substrate" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftuttlem%2Fsubstrate", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftuttlem%2Fsubstrate'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] f9f789816f2b971708d0a9f265ca8ede19aea0ca
[INFO] checking tuttlem/substrate against try#3857be5045fe74bd0f296f6f4c23db10f8857f73 for pr-156807
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftuttlem%2Fsubstrate" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/tuttlem/substrate
[INFO] finished tweaking git repo https://github.com/tuttlem/substrate
[INFO] tweaked toml for git repo https://github.com/tuttlem/substrate written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/tuttlem/substrate on toolchain 3857be5045fe74bd0f296f6f4c23db10f8857f73
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+3857be5045fe74bd0f296f6f4c23db10f8857f73" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/tuttlem/substrate 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" "+3857be5045fe74bd0f296f6f4c23db10f8857f73" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded bootloader_api v0.11.15
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+3857be5045fe74bd0f296f6f4c23db10f8857f73" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] e02170dc20def49065457aa9f4c7135308aee52279f751cb2e22d2b66fc2d71a
[INFO] running `Command { std: "docker" "start" "-a" "e02170dc20def49065457aa9f4c7135308aee52279f751cb2e22d2b66fc2d71a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "e02170dc20def49065457aa9f4c7135308aee52279f751cb2e22d2b66fc2d71a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e02170dc20def49065457aa9f4c7135308aee52279f751cb2e22d2b66fc2d71a", kill_on_drop: false }`
[INFO] [stdout] e02170dc20def49065457aa9f4c7135308aee52279f751cb2e22d2b66fc2d71a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+3857be5045fe74bd0f296f6f4c23db10f8857f73" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 8a7f7106f51bdcdeb16b2bd03700e5831126acb8f2ab333d2ef5180b4ecbfc3c
[INFO] running `Command { std: "docker" "start" "-a" "8a7f7106f51bdcdeb16b2bd03700e5831126acb8f2ab333d2ef5180b4ecbfc3c", kill_on_drop: false }`
[INFO] [stderr]    Compiling bootloader_api v0.11.15
[INFO] [stderr]     Checking volatile v0.4.6
[INFO] [stderr]     Checking bit_field v0.10.3
[INFO] [stderr]     Checking x86_64 v0.15.4
[INFO] [stderr]     Checking kernel_core v0.1.0 (/opt/rustwide/workdir/crates/kernel-core)
[INFO] [stderr]     Checking host_tests v0.1.0 (/opt/rustwide/workdir/crates/test-host)
[INFO] [stderr]     Checking arch_x86_64 v0.1.0 (/opt/rustwide/workdir/arch/x86_64)
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]  --> arch/x86_64/src/cpu.rs:6:16
[INFO] [stdout]   |
[INFO] [stdout] 6 |     let info = unsafe { core::arch::x86_64::__cpuid(1) };
[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: unnecessary `unsafe` block
[INFO] [stdout]   --> arch/x86_64/src/irq.rs:70:16
[INFO] [stdout]    |
[INFO] [stdout] 70 |     let info = unsafe { core::arch::x86_64::__cpuid(1) };
[INFO] [stdout]    |                ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]  --> arch/x86_64/src/cpu.rs:6:16
[INFO] [stdout]   |
[INFO] [stdout] 6 |     let info = unsafe { core::arch::x86_64::__cpuid(1) };
[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: unnecessary `unsafe` block
[INFO] [stdout]   --> arch/x86_64/src/irq.rs:70:16
[INFO] [stdout]    |
[INFO] [stdout] 70 |     let info = unsafe { core::arch::x86_64::__cpuid(1) };
[INFO] [stdout]    |                ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> arch/x86_64/src/gdt.rs:81:30
[INFO] [stdout]    |
[INFO] [stdout] 81 |     let selectors = unsafe { SELECTORS.assume_init_ref() };
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[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]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[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]   --> arch/x86_64/src/gdt.rs:86:30
[INFO] [stdout]    |
[INFO] [stdout] 86 |     let selectors = unsafe { SELECTORS.assume_init_ref() };
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[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]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> arch/x86_64/src/gdt.rs:91:30
[INFO] [stdout]    |
[INFO] [stdout] 91 |     let selectors = unsafe { SELECTORS.assume_init_ref() };
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[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]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> arch/x86_64/src/gdt.rs:103:19
[INFO] [stdout]     |
[INFO] [stdout] 103 |         let tss = TSS.assume_init_mut();
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> arch/x86_64/src/mm.rs:72:9
[INFO] [stdout]    |
[INFO] [stdout] 72 |         MEMORY.frame_alloc.init(regions);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> arch/x86_64/src/mm.rs:113:14
[INFO] [stdout]     |
[INFO] [stdout] 113 |     unsafe { MEMORY.frame_alloc.alloc() }
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> arch/x86_64/src/mm.rs:121:9
[INFO] [stdout]     |
[INFO] [stdout] 121 |         MEMORY.frame_alloc.free(pa & PAGE_MASK);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> arch/x86_64/src/mm.rs:792:9
[INFO] [stdout]     |
[INFO] [stdout] 792 |         MEMORY.frame_alloc.regions()
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> arch/x86_64/src/gdt.rs:81:30
[INFO] [stdout]    |
[INFO] [stdout] 81 |     let selectors = unsafe { SELECTORS.assume_init_ref() };
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[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]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[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]   --> arch/x86_64/src/gdt.rs:86:30
[INFO] [stdout]    |
[INFO] [stdout] 86 |     let selectors = unsafe { SELECTORS.assume_init_ref() };
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[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]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> arch/x86_64/src/gdt.rs:91:30
[INFO] [stdout]    |
[INFO] [stdout] 91 |     let selectors = unsafe { SELECTORS.assume_init_ref() };
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[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]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> arch/x86_64/src/gdt.rs:103:19
[INFO] [stdout]     |
[INFO] [stdout] 103 |         let tss = TSS.assume_init_mut();
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> arch/x86_64/src/mm.rs:72:9
[INFO] [stdout]    |
[INFO] [stdout] 72 |         MEMORY.frame_alloc.init(regions);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> arch/x86_64/src/mm.rs:113:14
[INFO] [stdout]     |
[INFO] [stdout] 113 |     unsafe { MEMORY.frame_alloc.alloc() }
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> arch/x86_64/src/mm.rs:121:9
[INFO] [stdout]     |
[INFO] [stdout] 121 |         MEMORY.frame_alloc.free(pa & PAGE_MASK);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> arch/x86_64/src/mm.rs:792:9
[INFO] [stdout]     |
[INFO] [stdout] 792 |         MEMORY.frame_alloc.regions()
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking hal v0.1.0 (/opt/rustwide/workdir/crates/hal)
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]  --> arch/x86_64/src/cpu.rs:6:16
[INFO] [stdout]   |
[INFO] [stdout] 6 |     let info = unsafe { core::arch::x86_64::__cpuid(1) };
[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: unnecessary `unsafe` block
[INFO] [stdout]   --> arch/x86_64/src/irq.rs:70:16
[INFO] [stdout]    |
[INFO] [stdout] 70 |     let info = unsafe { core::arch::x86_64::__cpuid(1) };
[INFO] [stdout]    |                ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> arch/x86_64/src/gdt.rs:81:30
[INFO] [stdout]    |
[INFO] [stdout] 81 |     let selectors = unsafe { SELECTORS.assume_init_ref() };
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[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]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[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]   --> arch/x86_64/src/gdt.rs:86:30
[INFO] [stdout]    |
[INFO] [stdout] 86 |     let selectors = unsafe { SELECTORS.assume_init_ref() };
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[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]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> arch/x86_64/src/gdt.rs:91:30
[INFO] [stdout]    |
[INFO] [stdout] 91 |     let selectors = unsafe { SELECTORS.assume_init_ref() };
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[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]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> arch/x86_64/src/gdt.rs:103:19
[INFO] [stdout]     |
[INFO] [stdout] 103 |         let tss = TSS.assume_init_mut();
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> arch/x86_64/src/mm.rs:72:9
[INFO] [stdout]    |
[INFO] [stdout] 72 |         MEMORY.frame_alloc.init(regions);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> arch/x86_64/src/mm.rs:113:14
[INFO] [stdout]     |
[INFO] [stdout] 113 |     unsafe { MEMORY.frame_alloc.alloc() }
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> arch/x86_64/src/mm.rs:121:9
[INFO] [stdout]     |
[INFO] [stdout] 121 |         MEMORY.frame_alloc.free(pa & PAGE_MASK);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> arch/x86_64/src/mm.rs:792:9
[INFO] [stdout]     |
[INFO] [stdout] 792 |         MEMORY.frame_alloc.regions()
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking kernel v0.1.0 (/opt/rustwide/workdir/kernel)
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]  --> kernel/src/proc_test.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 |         return fail(&mut serial, "init", reason);
[INFO] [stdout]   |         ^^^^^^^---------------------------------
[INFO] [stdout]   |         |      |
[INFO] [stdout]   |         |      any code following this expression is unreachable
[INFO] [stdout]   |         unreachable expression
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]   --> kernel/src/proc_test.rs:14:24
[INFO] [stdout]    |
[INFO] [stdout] 14 |         Err(reason) => return fail(&mut serial, "create p1", reason),
[INFO] [stdout]    |                        ^^^^^^^--------------------------------------
[INFO] [stdout]    |                        |      |
[INFO] [stdout]    |                        |      any code following this expression is unreachable
[INFO] [stdout]    |                        unreachable expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]   --> kernel/src/proc_test.rs:18:24
[INFO] [stdout]    |
[INFO] [stdout] 18 |         Err(reason) => return fail(&mut serial, "create p2", reason),
[INFO] [stdout]    |                        ^^^^^^^--------------------------------------
[INFO] [stdout]    |                        |      |
[INFO] [stdout]    |                        |      any code following this expression is unreachable
[INFO] [stdout]    |                        unreachable expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]   --> kernel/src/proc_test.rs:23:24
[INFO] [stdout]    |
[INFO] [stdout] 23 |         Err(reason) => return fail(&mut serial, "run p1", reason),
[INFO] [stdout]    |                        ^^^^^^^-----------------------------------
[INFO] [stdout]    |                        |      |
[INFO] [stdout]    |                        |      any code following this expression is unreachable
[INFO] [stdout]    |                        unreachable expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]   --> kernel/src/proc_test.rs:27:24
[INFO] [stdout]    |
[INFO] [stdout] 27 |         Err(reason) => return fail(&mut serial, "run p2", reason),
[INFO] [stdout]    |                        ^^^^^^^-----------------------------------
[INFO] [stdout]    |                        |      |
[INFO] [stdout]    |                        |      any code following this expression is unreachable
[INFO] [stdout]    |                        unreachable expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]   --> kernel/src/proc_test.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 |         return fail(&mut serial, "exit", "status");
[INFO] [stdout]    |         ^^^^^^^-----------------------------------
[INFO] [stdout]    |         |      |
[INFO] [stdout]    |         |      any code following this expression is unreachable
[INFO] [stdout]    |         unreachable expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]   --> kernel/src/irq_test.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 |         return fail(&mut serial, reason);
[INFO] [stdout]    |         ^^^^^^^-------------------------
[INFO] [stdout]    |         |      |
[INFO] [stdout]    |         |      any code following this expression is unreachable
[INFO] [stdout]    |         unreachable expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]   --> kernel/src/irq_test.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 23 |         return fail(&mut serial, reason);
[INFO] [stdout]    |         ^^^^^^^-------------------------
[INFO] [stdout]    |         |      |
[INFO] [stdout]    |         |      any code following this expression is unreachable
[INFO] [stdout]    |         unreachable expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]   --> kernel/src/irq_test.rs:28:13
[INFO] [stdout]    |
[INFO] [stdout] 28 |             return fail(&mut serial, reason);
[INFO] [stdout]    |             ^^^^^^^-------------------------
[INFO] [stdout]    |             |      |
[INFO] [stdout]    |             |      any code following this expression is unreachable
[INFO] [stdout]    |             unreachable expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]   --> kernel/src/irq_test.rs:31:13
[INFO] [stdout]    |
[INFO] [stdout] 31 |             return fail(&mut serial, reason);
[INFO] [stdout]    |             ^^^^^^^-------------------------
[INFO] [stdout]    |             |      |
[INFO] [stdout]    |             |      any code following this expression is unreachable
[INFO] [stdout]    |             unreachable expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]   --> kernel/src/irq_test.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 |         return fail(&mut serial, reason);
[INFO] [stdout]    |         ^^^^^^^-------------------------
[INFO] [stdout]    |         |      |
[INFO] [stdout]    |         |      any code following this expression is unreachable
[INFO] [stdout]    |         unreachable expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]   --> kernel/src/keyboard_test.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 |         return fail(&mut serial, reason);
[INFO] [stdout]    |         ^^^^^^^-------------------------
[INFO] [stdout]    |         |      |
[INFO] [stdout]    |         |      any code following this expression is unreachable
[INFO] [stdout]    |         unreachable expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]   --> kernel/src/keyboard_test.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 25 |         return fail(&mut serial, reason);
[INFO] [stdout]    |         ^^^^^^^-------------------------
[INFO] [stdout]    |         |      |
[INFO] [stdout]    |         |      any code following this expression is unreachable
[INFO] [stdout]    |         unreachable expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]   --> kernel/src/keyboard_test.rs:31:13
[INFO] [stdout]    |
[INFO] [stdout] 31 |             return fail(&mut serial, reason);
[INFO] [stdout]    |             ^^^^^^^-------------------------
[INFO] [stdout]    |             |      |
[INFO] [stdout]    |             |      any code following this expression is unreachable
[INFO] [stdout]    |             unreachable expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]   --> kernel/src/keyboard_test.rs:34:13
[INFO] [stdout]    |
[INFO] [stdout] 34 |             return fail(&mut serial, reason);
[INFO] [stdout]    |             ^^^^^^^-------------------------
[INFO] [stdout]    |             |      |
[INFO] [stdout]    |             |      any code following this expression is unreachable
[INFO] [stdout]    |             unreachable expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]   --> kernel/src/keyboard_test.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 38 |         return fail(&mut serial, reason);
[INFO] [stdout]    |         ^^^^^^^-------------------------
[INFO] [stdout]    |         |      |
[INFO] [stdout]    |         |      any code following this expression is unreachable
[INFO] [stdout]    |         unreachable expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]   --> kernel/src/keyboard_test.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 42 |         return fail(&mut serial, reason);
[INFO] [stdout]    |         ^^^^^^^-------------------------
[INFO] [stdout]    |         |      |
[INFO] [stdout]    |         |      any code following this expression is unreachable
[INFO] [stdout]    |         unreachable expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]   --> kernel/src/blk_test.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 |         return fail(&mut serial, reason);
[INFO] [stdout]    |         ^^^^^^^-------------------------
[INFO] [stdout]    |         |      |
[INFO] [stdout]    |         |      any code following this expression is unreachable
[INFO] [stdout]    |         unreachable expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]   --> kernel/src/blk_test.rs:20:24
[INFO] [stdout]    |
[INFO] [stdout] 20 |         Err(reason) => return fail(&mut serial, reason),
[INFO] [stdout]    |                        ^^^^^^^-------------------------
[INFO] [stdout]    |                        |      |
[INFO] [stdout]    |                        |      any code following this expression is unreachable
[INFO] [stdout]    |                        unreachable expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]   --> kernel/src/blk_test.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 25 |         return fail(&mut serial, "irq line");
[INFO] [stdout]    |         ^^^^^^^-----------------------------
[INFO] [stdout]    |         |      |
[INFO] [stdout]    |         |      any code following this expression is unreachable
[INFO] [stdout]    |         unreachable expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]   --> kernel/src/blk_test.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 29 |         return fail(&mut serial, reason);
[INFO] [stdout]    |         ^^^^^^^-------------------------
[INFO] [stdout]    |         |      |
[INFO] [stdout]    |         |      any code following this expression is unreachable
[INFO] [stdout]    |         unreachable expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]   --> kernel/src/blk_test.rs:35:13
[INFO] [stdout]    |
[INFO] [stdout] 35 |             return fail(&mut serial, reason);
[INFO] [stdout]    |             ^^^^^^^-------------------------
[INFO] [stdout]    |             |      |
[INFO] [stdout]    |             |      any code following this expression is unreachable
[INFO] [stdout]    |             unreachable expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]   --> kernel/src/blk_test.rs:38:13
[INFO] [stdout]    |
[INFO] [stdout] 38 |             return fail(&mut serial, reason);
[INFO] [stdout]    |             ^^^^^^^-------------------------
[INFO] [stdout]    |             |      |
[INFO] [stdout]    |             |      any code following this expression is unreachable
[INFO] [stdout]    |             unreachable expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]   --> kernel/src/blk_test.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 42 |         return fail(&mut serial, reason);
[INFO] [stdout]    |         ^^^^^^^-------------------------
[INFO] [stdout]    |         |      |
[INFO] [stdout]    |         |      any code following this expression is unreachable
[INFO] [stdout]    |         unreachable expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]   --> kernel/src/blk_test.rs:49:24
[INFO] [stdout]    |
[INFO] [stdout] 49 |         Err(reason) => return fail(&mut serial, reason),
[INFO] [stdout]    |                        ^^^^^^^-------------------------
[INFO] [stdout]    |                        |      |
[INFO] [stdout]    |                        |      any code following this expression is unreachable
[INFO] [stdout]    |                        unreachable expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `wake_pid` is never read
[INFO] [stdout]     --> kernel/src/net.rs:1302:24
[INFO] [stdout]      |
[INFO] [stdout] 1302 |     let mut wake_pid = 0u64;
[INFO] [stdout]      |                        ^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 1372 |         wake_pid = l.accept_waiter;
[INFO] [stdout]      |         -------------------------- `wake_pid` is overwritten here before the previous value is read
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> kernel/src/virtio_net.rs:297:5
[INFO] [stdout]     |
[INFO] [stdout] 297 |     unsafe {
[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: `req_phys`
[INFO] [stdout]    --> kernel/src/virtio_blk.rs:128:10
[INFO] [stdout]     |
[INFO] [stdout] 128 |     let (req_phys, req) = dma_page()?;
[INFO] [stdout]     |          ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_req_phys`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data_phys`
[INFO] [stdout]    --> kernel/src/virtio_blk.rs:129:10
[INFO] [stdout]     |
[INFO] [stdout] 129 |     let (data_phys, data) = dma_page()?;
[INFO] [stdout]     |          ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_data_phys`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> kernel/src/virtio_blk.rs:327:5
[INFO] [stdout]     |
[INFO] [stdout] 327 |     unsafe {
[INFO] [stdout]     |     ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> kernel/src/virtio_console.rs:290:5
[INFO] [stdout]     |
[INFO] [stdout] 290 |     unsafe {
[INFO] [stdout]     |     ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> kernel/src/main.rs:186:9
[INFO] [stdout]     |
[INFO] [stdout] 186 |     let mut proc = match process::proc_create(init_payload::INIT_PAYLOAD) {
[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: variant `Spec` is never constructed
[INFO] [stdout]   --> kernel/src/main.rs:67:5
[INFO] [stdout]    |
[INFO] [stdout] 65 | enum BootMode {
[INFO] [stdout]    |      -------- variant in this enum
[INFO] [stdout] 66 |     Interactive,
[INFO] [stdout] 67 |     Spec,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BootMode` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Pci` and `Platform` are never constructed
[INFO] [stdout]   --> kernel/src/device_manager.rs:8:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub enum BusType {
[INFO] [stdout]    |          ------- variants in this enum
[INFO] [stdout]  8 |     Pci,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]  9 |     Virtio,
[INFO] [stdout] 10 |     Platform,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BusType` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VIRTIO_DEVICE_NET_MODERN` is never used
[INFO] [stdout]  --> kernel/src/device_manager_test.rs:5:7
[INFO] [stdout]   |
[INFO] [stdout] 5 | const VIRTIO_DEVICE_NET_MODERN: u16 = 0x1041;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VIRTIO_DEVICE_BLK_MODERN` is never used
[INFO] [stdout]  --> kernel/src/device_manager_test.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | const VIRTIO_DEVICE_BLK_MODERN: u16 = 0x1042;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VIRTIO_DEVICE_CONSOLE` is never used
[INFO] [stdout]  --> kernel/src/device_manager_test.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const VIRTIO_DEVICE_CONSOLE: u16 = 0x1043;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]  --> kernel/src/device_manager_test.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn run() -> ! {
[INFO] [stdout]   |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_u64` is never used
[INFO] [stdout]   --> kernel/src/device_manager_test.rs:50:4
[INFO] [stdout]    |
[INFO] [stdout] 50 | fn write_u64(mut value: u64) {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fail` is never used
[INFO] [stdout]   --> kernel/src/device_manager_test.rs:70:4
[INFO] [stdout]    |
[INFO] [stdout] 70 | fn fail(reason: &'static str) -> ! {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_root_path` is never used
[INFO] [stdout]   --> kernel/src/sysfs.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub fn is_root_path(path: &[u8]) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_root_path` is never used
[INFO] [stdout]   --> kernel/src/procfs.rs:47:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub fn is_root_path(path: &[u8]) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TCP_RST` is never used
[INFO] [stdout]   --> kernel/src/net.rs:41:7
[INFO] [stdout]    |
[INFO] [stdout] 41 | const TCP_RST: u8 = 0x04;
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DriverInstance` is never constructed
[INFO] [stdout]  --> kernel/src/driver_registry.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct DriverInstance {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Driver` is never used
[INFO] [stdout]   --> kernel/src/driver_registry.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub trait Driver: Sync {
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Binding` is never constructed
[INFO] [stdout]   --> kernel/src/driver_registry.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct Binding {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DriverRegistry` is never constructed
[INFO] [stdout]   --> kernel/src/driver_registry.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | struct DriverRegistry {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> kernel/src/driver_registry.rs:29:14
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl DriverRegistry {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 29 |     const fn new() -> Self {
[INFO] [stdout]    |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `REGISTRY` is never used
[INFO] [stdout]   --> kernel/src/driver_registry.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | static REGISTRY: IrqSafeSpinLock<DriverRegistry> = IrqSafeSpinLock::new(DriverRegistry::new());
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init` is never used
[INFO] [stdout]   --> kernel/src/driver_registry.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub fn init() {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `register` is never used
[INFO] [stdout]   --> kernel/src/driver_registry.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub fn register(driver: &'static dyn Driver) {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bind_all` is never used
[INFO] [stdout]   --> kernel/src/driver_registry.rs:58:8
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub fn bind_all(devices: &[Device]) {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BindingIterGuard` is never constructed
[INFO] [stdout]   --> kernel/src/driver_registry.rs:81:12
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub struct BindingIterGuard<'a> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bindings` is never used
[INFO] [stdout]   --> kernel/src/driver_registry.rs:93:8
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub fn bindings() -> BindingIterGuard<'static> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VIRTIO_DEVICE_NET_MODERN` is never used
[INFO] [stdout]  --> kernel/src/driver_registry_test.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | const VIRTIO_DEVICE_NET_MODERN: u16 = 0x1041;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VIRTIO_DEVICE_BLK_MODERN` is never used
[INFO] [stdout]  --> kernel/src/driver_registry_test.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const VIRTIO_DEVICE_BLK_MODERN: u16 = 0x1042;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VIRTIO_DEVICE_CONSOLE` is never used
[INFO] [stdout]  --> kernel/src/driver_registry_test.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const VIRTIO_DEVICE_CONSOLE: u16 = 0x1043;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VirtioBlkStub` is never constructed
[INFO] [stdout]   --> kernel/src/driver_registry_test.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | struct VirtioBlkStub;
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `VIRTIO_BLK_STUB` is never used
[INFO] [stdout]   --> kernel/src/driver_registry_test.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | static VIRTIO_BLK_STUB: VirtioBlkStub = VirtioBlkStub;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> kernel/src/driver_registry_test.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn run() -> ! {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fail` is never used
[INFO] [stdout]   --> kernel/src/driver_registry_test.rs:72:4
[INFO] [stdout]    |
[INFO] [stdout] 72 | fn fail(reason: &'static str) -> ! {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VIRTIO_DEVICE_NET_MODERN` is never used
[INFO] [stdout]  --> kernel/src/virtio_blk_driver_test.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const VIRTIO_DEVICE_NET_MODERN: u16 = 0x1041;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VIRTIO_DEVICE_BLK_MODERN` is never used
[INFO] [stdout]   --> kernel/src/virtio_blk_driver_test.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const VIRTIO_DEVICE_BLK_MODERN: u16 = 0x1042;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VIRTIO_DEVICE_CONSOLE` is never used
[INFO] [stdout]   --> kernel/src/virtio_blk_driver_test.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const VIRTIO_DEVICE_CONSOLE: u16 = 0x1043;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `CHECKSUM_READY` is never used
[INFO] [stdout]   --> kernel/src/virtio_blk_driver_test.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | static CHECKSUM_READY: AtomicBool = AtomicBool::new(false);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `CHECKSUM` is never used
[INFO] [stdout]   --> kernel/src/virtio_blk_driver_test.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | static CHECKSUM: AtomicU32 = AtomicU32::new(0);
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VirtioBlkDriver` is never constructed
[INFO] [stdout]   --> kernel/src/virtio_blk_driver_test.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | struct VirtioBlkDriver;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `VIRTIO_BLK_DRIVER` is never used
[INFO] [stdout]   --> kernel/src/virtio_blk_driver_test.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | static VIRTIO_BLK_DRIVER: VirtioBlkDriver = VirtioBlkDriver;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> kernel/src/virtio_blk_driver_test.rs:39:8
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub fn run() -> ! {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `xor32` is never used
[INFO] [stdout]   --> kernel/src/virtio_blk_driver_test.rs:89:4
[INFO] [stdout]    |
[INFO] [stdout] 89 | fn xor32(data: &[u8; 512]) -> u32 {
[INFO] [stdout]    |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_hex_u32` is never used
[INFO] [stdout]    --> kernel/src/virtio_blk_driver_test.rs:100:4
[INFO] [stdout]     |
[INFO] [stdout] 100 | fn write_hex_u32(mut value: u32) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fail` is never used
[INFO] [stdout]    --> kernel/src/virtio_blk_driver_test.rs:120:4
[INFO] [stdout]     |
[INFO] [stdout] 120 | fn fail(reason: &'static str) -> ! {
[INFO] [stdout]     |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `common`, `rx_hdr_phys`, `rx_hdr_virt`, and `rx_data_phys` are never read
[INFO] [stdout]   --> kernel/src/virtio_net.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub struct VirtioNet {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 44 |     common: *mut CommonCfg,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     rx_hdr_phys: [u64; QUEUE_MAX as usize],
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 51 |     rx_hdr_virt: [*mut u8; QUEUE_MAX as usize],
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 52 |     rx_data_phys: [u64; QUEUE_MAX as usize],
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VIRTIO_DEVICE_NET_MODERN` is never used
[INFO] [stdout]  --> kernel/src/virtio_net_dhcp_test.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const VIRTIO_DEVICE_NET_MODERN: u16 = 0x1041;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VIRTIO_DEVICE_BLK_MODERN` is never used
[INFO] [stdout]   --> kernel/src/virtio_net_dhcp_test.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const VIRTIO_DEVICE_BLK_MODERN: u16 = 0x1042;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VIRTIO_DEVICE_CONSOLE` is never used
[INFO] [stdout]   --> kernel/src/virtio_net_dhcp_test.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const VIRTIO_DEVICE_CONSOLE: u16 = 0x1043;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ETH_TYPE_IPV4` is never used
[INFO] [stdout]   --> kernel/src/virtio_net_dhcp_test.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | const ETH_TYPE_IPV4: u16 = 0x0800;
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IP_PROTO_UDP` is never used
[INFO] [stdout]   --> kernel/src/virtio_net_dhcp_test.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const IP_PROTO_UDP: u8 = 17;
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DHCP_CLIENT_PORT` is never used
[INFO] [stdout]   --> kernel/src/virtio_net_dhcp_test.rs:15:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | const DHCP_CLIENT_PORT: u16 = 68;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DHCP_SERVER_PORT` is never used
[INFO] [stdout]   --> kernel/src/virtio_net_dhcp_test.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const DHCP_SERVER_PORT: u16 = 67;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DHCP_MAGIC` is never used
[INFO] [stdout]   --> kernel/src/virtio_net_dhcp_test.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const DHCP_MAGIC: u32 = 0x63825363;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DHCPDISCOVER` is never used
[INFO] [stdout]   --> kernel/src/virtio_net_dhcp_test.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const DHCPDISCOVER: u8 = 1;
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DHCPOFFER` is never used
[INFO] [stdout]   --> kernel/src/virtio_net_dhcp_test.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const DHCPOFFER: u8 = 2;
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DHCPREQUEST` is never used
[INFO] [stdout]   --> kernel/src/virtio_net_dhcp_test.rs:21:7
[INFO] [stdout]    |
[INFO] [stdout] 21 | const DHCPREQUEST: u8 = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DHCPACK` is never used
[INFO] [stdout]   --> kernel/src/virtio_net_dhcp_test.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const DHCPACK: u8 = 5;
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `IP_READY` is never used
[INFO] [stdout]   --> kernel/src/virtio_net_dhcp_test.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 24 | static IP_READY: AtomicBool = AtomicBool::new(false);
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `IP_ADDR` is never used
[INFO] [stdout]   --> kernel/src/virtio_net_dhcp_test.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | static IP_ADDR: AtomicU32 = AtomicU32::new(0);
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `NET_ERR` is never used
[INFO] [stdout]   --> kernel/src/virtio_net_dhcp_test.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | static NET_ERR: AtomicU32 = AtomicU32::new(0);
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VirtioNetDriver` is never constructed
[INFO] [stdout]   --> kernel/src/virtio_net_dhcp_test.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | struct VirtioNetDriver;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `VIRTIO_NET_DRIVER` is never used
[INFO] [stdout]   --> kernel/src/virtio_net_dhcp_test.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 66 | static VIRTIO_NET_DRIVER: VirtioNetDriver = VirtioNetDriver;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> kernel/src/virtio_net_dhcp_test.rs:68:8
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub fn run() -> ! {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dhcp_acquire` is never used
[INFO] [stdout]    --> kernel/src/virtio_net_dhcp_test.rs:141:4
[INFO] [stdout]     |
[INFO] [stdout] 141 | fn dhcp_acquire(dev: &mut virtio_net::VirtioNet, mac: [u8; 6]) -> Result<[u8; 4], &'static str> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `wait_offer` is never used
[INFO] [stdout]    --> kernel/src/virtio_net_dhcp_test.rs:179:4
[INFO] [stdout]     |
[INFO] [stdout] 179 | fn wait_offer(
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `wait_ack` is never used
[INFO] [stdout]    --> kernel/src/virtio_net_dhcp_test.rs:205:4
[INFO] [stdout]     |
[INFO] [stdout] 205 | fn wait_ack(
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_dhcp_discover` is never used
[INFO] [stdout]    --> kernel/src/virtio_net_dhcp_test.rs:230:4
[INFO] [stdout]     |
[INFO] [stdout] 230 | fn build_dhcp_discover(out: &mut [u8], mac: [u8; 6], xid: u32) -> usize {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_dhcp_request` is never used
[INFO] [stdout]    --> kernel/src/virtio_net_dhcp_test.rs:241:4
[INFO] [stdout]     |
[INFO] [stdout] 241 | fn build_dhcp_request(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_bootp` is never used
[INFO] [stdout]    --> kernel/src/virtio_net_dhcp_test.rs:260:4
[INFO] [stdout]     |
[INFO] [stdout] 260 | fn build_bootp(buf: &mut [u8], mac: [u8; 6], xid: u32, flags: u16) {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `push_opt` is never used
[INFO] [stdout]    --> kernel/src/virtio_net_dhcp_test.rs:272:4
[INFO] [stdout]     |
[INFO] [stdout] 272 | fn push_opt(buf: &mut [u8], mut off: usize, code: u8, data: &[u8]) -> usize {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_udp_ipv4` is never used
[INFO] [stdout]    --> kernel/src/virtio_net_dhcp_test.rs:280:4
[INFO] [stdout]     |
[INFO] [stdout] 280 | fn build_udp_ipv4(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ipv4_checksum` is never used
[INFO] [stdout]    --> kernel/src/virtio_net_dhcp_test.rs:330:4
[INFO] [stdout]     |
[INFO] [stdout] 330 | fn ipv4_checksum(header: &[u8]) -> u16 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udp_checksum` is never used
[INFO] [stdout]    --> kernel/src/virtio_net_dhcp_test.rs:344:4
[INFO] [stdout]     |
[INFO] [stdout] 344 | fn udp_checksum(src_ip: [u8; 4], dst_ip: [u8; 4], udp: &[u8]) -> u16 {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp` is never used
[INFO] [stdout]    --> kernel/src/virtio_net_dhcp_test.rs:369:4
[INFO] [stdout]     |
[INFO] [stdout] 369 | fn parse_dhcp(
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_dec` is never used
[INFO] [stdout]    --> kernel/src/virtio_net_dhcp_test.rs:466:4
[INFO] [stdout]     |
[INFO] [stdout] 466 | fn write_dec(mut value: u8) {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fail` is never used
[INFO] [stdout]    --> kernel/src/virtio_net_dhcp_test.rs:484:4
[INFO] [stdout]     |
[INFO] [stdout] 484 | fn fail(reason: &'static str) -> ! {
[INFO] [stdout]     |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lookup_file` is never used
[INFO] [stdout]    --> kernel/src/initramfs.rs:126:8
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub fn lookup_file(path: &[u8]) -> Result<&'static [u8], &'static str> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Ext2` is never constructed
[INFO] [stdout]  --> kernel/src/fs/ext2/mod.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub struct Ext2;
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]  --> kernel/src/fs/ext2/mod.rs:4:18
[INFO] [stdout]   |
[INFO] [stdout] 3 | impl Ext2 {
[INFO] [stdout]   | --------- associated function in this implementation
[INFO] [stdout] 4 |     pub const fn new() -> Self {
[INFO] [stdout]   |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `S_IRUSR` is never used
[INFO] [stdout]   --> kernel/src/vfs.rs:24:7
[INFO] [stdout]    |
[INFO] [stdout] 24 | const S_IRUSR: u16 = 0o400;
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `S_IWUSR` is never used
[INFO] [stdout]   --> kernel/src/vfs.rs:25:7
[INFO] [stdout]    |
[INFO] [stdout] 25 | const S_IWUSR: u16 = 0o200;
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `S_IXUSR` is never used
[INFO] [stdout]   --> kernel/src/vfs.rs:26:7
[INFO] [stdout]    |
[INFO] [stdout] 26 | const S_IXUSR: u16 = 0o100;
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `S_IRGRP` is never used
[INFO] [stdout]   --> kernel/src/vfs.rs:27:7
[INFO] [stdout]    |
[INFO] [stdout] 27 | const S_IRGRP: u16 = 0o040;
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `S_IWGRP` is never used
[INFO] [stdout]   --> kernel/src/vfs.rs:28:7
[INFO] [stdout]    |
[INFO] [stdout] 28 | const S_IWGRP: u16 = 0o020;
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `S_IXGRP` is never used
[INFO] [stdout]   --> kernel/src/vfs.rs:29:7
[INFO] [stdout]    |
[INFO] [stdout] 29 | const S_IXGRP: u16 = 0o010;
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `S_IROTH` is never used
[INFO] [stdout]   --> kernel/src/vfs.rs:30:7
[INFO] [stdout]    |
[INFO] [stdout] 30 | const S_IROTH: u16 = 0o004;
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `S_IWOTH` is never used
[INFO] [stdout]   --> kernel/src/vfs.rs:31:7
[INFO] [stdout]    |
[INFO] [stdout] 31 | const S_IWOTH: u16 = 0o002;
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `S_IXOTH` is never used
[INFO] [stdout]   --> kernel/src/vfs.rs:32:7
[INFO] [stdout]    |
[INFO] [stdout] 32 | const S_IXOTH: u16 = 0o001;
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_u16_le` is never used
[INFO] [stdout]    --> kernel/src/vfs.rs:833:4
[INFO] [stdout]     |
[INFO] [stdout] 833 | fn write_u16_le(dst: &mut [u8], off: usize, value: u16) {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_u16_le` is never used
[INFO] [stdout]    --> kernel/src/vfs.rs:847:4
[INFO] [stdout]     |
[INFO] [stdout] 847 | fn read_u16_le(src: &[u8], off: usize) -> u16 {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fail` is never used
[INFO] [stdout]   --> kernel/src/keyboard.rs:36:8
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub fn fail(reason: &'static str) -> ! {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `active_vt` is never used
[INFO] [stdout]   --> kernel/src/tty.rs:96:8
[INFO] [stdout]    |
[INFO] [stdout] 96 | pub fn active_vt() -> usize {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]  --> kernel/src/read_test.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn run() -> ! {
[INFO] [stdout]   |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fail` is never used
[INFO] [stdout]   --> kernel/src/read_test.rs:42:4
[INFO] [stdout]    |
[INFO] [stdout] 42 | fn fail(reason: &'static str) -> ! {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `tid` and `stack_top` are never read
[INFO] [stdout]   --> kernel/src/kthread.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | struct Thread {
[INFO] [stdout]    |        ------ fields in this struct
[INFO] [stdout] 19 |     used: bool,
[INFO] [stdout] 20 |     tid: ThreadId,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     stack_top: u64,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Thread` 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 `preempt_disable` is never used
[INFO] [stdout]    --> kernel/src/kthread.rs:223:8
[INFO] [stdout]     |
[INFO] [stdout] 223 | pub fn preempt_disable() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `preempt_enable` is never used
[INFO] [stdout]    --> kernel/src/kthread.rs:227:8
[INFO] [stdout]     |
[INFO] [stdout] 227 | pub fn preempt_enable() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `yield_now` is never used
[INFO] [stdout]    --> kernel/src/kthread.rs:231:8
[INFO] [stdout]     |
[INFO] [stdout] 231 | pub fn yield_now() {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `stack_top_of` is never used
[INFO] [stdout]    --> kernel/src/kthread.rs:257:8
[INFO] [stdout]     |
[INFO] [stdout] 257 | pub fn stack_top_of(tid: ThreadId) -> Option<u64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ScheduleReason` is never used
[INFO] [stdout]   --> kernel/src/sched.rs:22:10
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub enum ScheduleReason {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `remove_pid` is never used
[INFO] [stdout]    --> kernel/src/sched.rs:139:8
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl Scheduler {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 139 |     fn remove_pid(&mut self, pid: u64) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `preempt_disable` is never used
[INFO] [stdout]    --> kernel/src/sched.rs:438:8
[INFO] [stdout]     |
[INFO] [stdout] 438 | pub fn preempt_disable() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `preempt_enable` is never used
[INFO] [stdout]    --> kernel/src/sched.rs:442:8
[INFO] [stdout]     |
[INFO] [stdout] 442 | pub fn preempt_enable() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `block_current` is never used
[INFO] [stdout]    --> kernel/src/sched.rs:474:8
[INFO] [stdout]     |
[INFO] [stdout] 474 | pub fn block_current() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `stop_pid` is never used
[INFO] [stdout]    --> kernel/src/sched.rs:511:8
[INFO] [stdout]     |
[INFO] [stdout] 511 | pub fn stop_pid(pid: u64) {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `schedule` is never used
[INFO] [stdout]    --> kernel/src/sched.rs:531:8
[INFO] [stdout]     |
[INFO] [stdout] 531 | pub fn schedule(_reason: ScheduleReason) {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ENOSYS` is never used
[INFO] [stdout]   --> kernel/src/syscall.rs:90:7
[INFO] [stdout]    |
[INFO] [stdout] 90 | const ENOSYS: i64 = 38;
[INFO] [stdout]    |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `O_WRONLY` is never used
[INFO] [stdout]    --> kernel/src/syscall.rs:110:7
[INFO] [stdout]     |
[INFO] [stdout] 110 | const O_WRONLY: u64 = 0x1;
[INFO] [stdout]     |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `reset_exit_status` is never used
[INFO] [stdout]    --> kernel/src/syscall.rs:302:8
[INFO] [stdout]     |
[INFO] [stdout] 302 | pub fn reset_exit_status() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `path_is_dir` is never used
[INFO] [stdout]     --> kernel/src/syscall.rs:1703:4
[INFO] [stdout]      |
[INFO] [stdout] 1703 | fn path_is_dir(path: &[u8]) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `path_is_file` is never used
[INFO] [stdout]     --> kernel/src/syscall.rs:1716:4
[INFO] [stdout]      |
[INFO] [stdout] 1716 | fn path_is_file(path: &[u8]) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `counts_snapshot` is never used
[INFO] [stdout]   --> kernel/src/irq.rs:83:8
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub fn counts_snapshot() -> Result<Vec<u64>, &'static str> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `exit_status` is never read
[INFO] [stdout]    --> kernel/src/process.rs:165:9
[INFO] [stdout]     |
[INFO] [stdout] 160 | pub struct Process {
[INFO] [stdout]     |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub exit_status: Option<u64>,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `offset` is never read
[INFO] [stdout]    --> kernel/src/process.rs:278:9
[INFO] [stdout]     |
[INFO] [stdout] 276 | pub struct FileDescSnapshot {
[INFO] [stdout]     |            ---------------- field in this struct
[INFO] [stdout] 277 |     pub kind: FileDescKind,
[INFO] [stdout] 278 |     pub offset: usize,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `FileDescSnapshot` 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 `proc_run` is never used
[INFO] [stdout]    --> kernel/src/process.rs:324:8
[INFO] [stdout]     |
[INFO] [stdout] 324 | pub fn proc_run(proc: &mut Process) -> Result<u64, &'static str> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `proc_wait` is never used
[INFO] [stdout]    --> kernel/src/process.rs:339:8
[INFO] [stdout]     |
[INFO] [stdout] 339 | pub fn proc_wait(proc: &Process) -> Result<u64, &'static str> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `foreground_pgid` is never used
[INFO] [stdout]    --> kernel/src/process.rs:357:8
[INFO] [stdout]     |
[INFO] [stdout] 357 | pub fn foreground_pgid() -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `controlling_tty_sid` is never used
[INFO] [stdout]    --> kernel/src/process.rs:390:8
[INFO] [stdout]     |
[INFO] [stdout] 390 | pub fn controlling_tty_sid() -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_foreground_pid` is never used
[INFO] [stdout]    --> kernel/src/process.rs:455:8
[INFO] [stdout]     |
[INFO] [stdout] 455 | pub fn set_foreground_pid(pid: u64) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `foreground_pid` is never used
[INFO] [stdout]    --> kernel/src/process.rs:460:8
[INFO] [stdout]     |
[INFO] [stdout] 460 | pub fn foreground_pid() -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `current_ruid` is never used
[INFO] [stdout]    --> kernel/src/process.rs:990:8
[INFO] [stdout]     |
[INFO] [stdout] 990 | pub fn current_ruid() -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `first_stopped_in_group` is never used
[INFO] [stdout]     --> kernel/src/process.rs:1524:8
[INFO] [stdout]      |
[INFO] [stdout] 1524 | pub fn first_stopped_in_group(pgid: u64) -> Option<(u64, u64, u64, u64)> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fd_alloc_ref` is never used
[INFO] [stdout]     --> kernel/src/process.rs:1766:8
[INFO] [stdout]      |
[INFO] [stdout] 1766 | pub fn fd_alloc_ref(pid: u64, start: usize, desc: FileDescRef) -> Result<i64, &'static str> {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `session_mesg_for_pid` is never used
[INFO] [stdout]     --> kernel/src/process.rs:2145:8
[INFO] [stdout]      |
[INFO] [stdout] 2145 | pub fn session_mesg_for_pid(pid: u64) -> Option<bool> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `bar`, `offset`, and `length` are never read
[INFO] [stdout]   --> kernel/src/pci.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct VirtioPciRegion {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 17 |     pub bar: u8,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 18 |     pub offset: u32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 19 |     pub length: u32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VirtioPciRegion` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `common`, `notify`, `isr`, `device`, and `notify_mult` are never read
[INFO] [stdout]   --> kernel/src/pci.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct VirtioPciDeviceInfo {
[INFO] [stdout]    |            ------------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub common: VirtioPciRegion,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 28 |     pub notify: VirtioPciRegion,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 29 |     pub isr: VirtioPciRegion,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 30 |     pub device: VirtioPciRegion,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 31 |     pub notify_mult: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VirtioPciDeviceInfo` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PCI_INTERRUPT_LINE` is never used
[INFO] [stdout]   --> kernel/src/pci.rs:42:7
[INFO] [stdout]    |
[INFO] [stdout] 42 | const PCI_INTERRUPT_LINE: u8 = 0x3c;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `interrupt_line` is never used
[INFO] [stdout]    --> kernel/src/pci.rs:169:8
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub fn interrupt_line(dev: &PciDevice) -> u8 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_lspci` is never used
[INFO] [stdout]    --> kernel/src/pci.rs:267:8
[INFO] [stdout]     |
[INFO] [stdout] 267 | pub fn write_lspci(out: &mut [u8]) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `append_byte` is never used
[INFO] [stdout]    --> kernel/src/pci.rs:350:4
[INFO] [stdout]     |
[INFO] [stdout] 350 | fn append_byte(out: &mut [u8], idx: &mut usize, byte: u8) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `append_bytes` is never used
[INFO] [stdout]    --> kernel/src/pci.rs:359:4
[INFO] [stdout]     |
[INFO] [stdout] 359 | fn append_bytes(out: &mut [u8], idx: &mut usize, bytes: &[u8]) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `append_hex_nibble` is never used
[INFO] [stdout]    --> kernel/src/pci.rs:368:4
[INFO] [stdout]     |
[INFO] [stdout] 368 | fn append_hex_nibble(out: &mut [u8], idx: &mut usize, value: u8) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `append_hex_u8` is never used
[INFO] [stdout]    --> kernel/src/pci.rs:374:4
[INFO] [stdout]     |
[INFO] [stdout] 374 | fn append_hex_u8(out: &mut [u8], idx: &mut usize, value: u8) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `append_hex_u16` is never used
[INFO] [stdout]    --> kernel/src/pci.rs:378:4
[INFO] [stdout]     |
[INFO] [stdout] 378 | fn append_hex_u16(out: &mut [u8], idx: &mut usize, value: u16) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ELF_PAYLOAD` is never used
[INFO] [stdout]  --> kernel/src/elf_payload.rs:2:11
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub const ELF_PAYLOAD: &[u8] = &[
[INFO] [stdout]   |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fail` is never used
[INFO] [stdout]    --> kernel/src/elf_loader.rs:162:8
[INFO] [stdout]     |
[INFO] [stdout] 162 | pub fn fail(reason: &'static str) -> ! {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]  --> kernel/src/proc_test.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn run() -> ! {
[INFO] [stdout]   |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fail` is never used
[INFO] [stdout]   --> kernel/src/proc_test.rs:38:4
[INFO] [stdout]    |
[INFO] [stdout] 38 | fn fail(serial: &mut hal::Serial, step: &'static str, reason: &'static str) -> ! {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IRQ_LINE` is never used
[INFO] [stdout]  --> kernel/src/irq_test.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | const IRQ_LINE: u8 = 4;
[INFO] [stdout]   |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IRQ_VECTOR_BASE` is never used
[INFO] [stdout]  --> kernel/src/irq_test.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const IRQ_VECTOR_BASE: u8 = 0x50;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IRQ_VECTOR` is never used
[INFO] [stdout]  --> kernel/src/irq_test.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const IRQ_VECTOR: u8 = IRQ_VECTOR_BASE + IRQ_LINE;
[INFO] [stdout]   |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IRQ_LINES` is never used
[INFO] [stdout]  --> kernel/src/irq_test.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const IRQ_LINES: u8 = 24;
[INFO] [stdout]   |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `IRQ_FIRED` is never used
[INFO] [stdout]   --> kernel/src/irq_test.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | static IRQ_FIRED: AtomicBool = AtomicBool::new(false);
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPIN_LIMIT` is never used
[INFO] [stdout]   --> kernel/src/irq_test.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const SPIN_LIMIT: u64 = 50_000_000;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> kernel/src/irq_test.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn run() -> ! {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `irq_handler` is never used
[INFO] [stdout]   --> kernel/src/irq_test.rs:54:4
[INFO] [stdout]    |
[INFO] [stdout] 54 | fn irq_handler(_line: u8, ctx: *mut u8) {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `irq_flag_ptr` is never used
[INFO] [stdout]   --> kernel/src/irq_test.rs:61:4
[INFO] [stdout]    |
[INFO] [stdout] 61 | fn irq_flag_ptr() -> *mut u8 {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fail` is never used
[INFO] [stdout]   --> kernel/src/irq_test.rs:65:4
[INFO] [stdout]    |
[INFO] [stdout] 65 | fn fail(serial: &mut hal::Serial, reason: &'static str) -> ! {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IRQ_LINE` is never used
[INFO] [stdout]  --> kernel/src/keyboard_test.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const IRQ_LINE: u8 = 1;
[INFO] [stdout]   |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IRQ_VECTOR_BASE` is never used
[INFO] [stdout]  --> kernel/src/keyboard_test.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const IRQ_VECTOR_BASE: u8 = 0x50;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IRQ_LINES` is never used
[INFO] [stdout]   --> kernel/src/keyboard_test.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const IRQ_LINES: u8 = 24;
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `KEY_READY` is never used
[INFO] [stdout]   --> kernel/src/keyboard_test.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | static KEY_READY: AtomicBool = AtomicBool::new(false);
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `LAST_CHAR` is never used
[INFO] [stdout]   --> kernel/src/keyboard_test.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | static LAST_CHAR: AtomicU8 = AtomicU8::new(0);
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPIN_LIMIT` is never used
[INFO] [stdout]   --> kernel/src/keyboard_test.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const SPIN_LIMIT: u64 = 100_000_000;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> kernel/src/keyboard_test.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn run() -> ! {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `irq_handler` is never used
[INFO] [stdout]   --> kernel/src/keyboard_test.rs:66:4
[INFO] [stdout]    |
[INFO] [stdout] 66 | fn irq_handler(_line: u8, _ctx: *mut u8) {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fail` is never used
[INFO] [stdout]   --> kernel/src/keyboard_test.rs:80:4
[INFO] [stdout]    |
[INFO] [stdout] 80 | fn fail(serial: &mut hal::Serial, reason: &'static str) -> ! {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `pci_dev` is never read
[INFO] [stdout]   --> kernel/src/virtio_blk.rs:78:5
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub struct VirtioBlk {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] 78 |     pci_dev: PciDevice,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `register_irq` is never used
[INFO] [stdout]    --> kernel/src/virtio_blk.rs:174:8
[INFO] [stdout]     |
[INFO] [stdout] 174 | pub fn register_irq(irq_line: u8) -> Result<(), &'static str> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_sector0` is never used
[INFO] [stdout]    --> kernel/src/virtio_blk.rs:179:8
[INFO] [stdout]     |
[INFO] [stdout] 179 | pub fn read_sector0(dev: &mut VirtioBlk) -> Result<[u8; 512], &'static str> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `irq_line` is never used
[INFO] [stdout]    --> kernel/src/virtio_blk.rs:288:8
[INFO] [stdout]     |
[INFO] [stdout] 288 | pub fn irq_line(dev: &VirtioBlk) -> u8 {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `irq_handler` is never used
[INFO] [stdout]    --> kernel/src/virtio_blk.rs:292:4
[INFO] [stdout]     |
[INFO] [stdout] 292 | fn irq_handler(_line: u8, _ctx: *mut u8) {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dev_isr` is never used
[INFO] [stdout]    --> kernel/src/virtio_blk.rs:332:4
[INFO] [stdout]     |
[INFO] [stdout] 332 | fn dev_isr() -> *mut u8 {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IRQ_VECTOR_BASE` is never used
[INFO] [stdout]  --> kernel/src/blk_test.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | const IRQ_VECTOR_BASE: u8 = 0x50;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IRQ_LINES` is never used
[INFO] [stdout]  --> kernel/src/blk_test.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const IRQ_LINES: u8 = 24;
[INFO] [stdout]   |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]  --> kernel/src/blk_test.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn run() -> ! {
[INFO] [stdout]   |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fnv1a32` is never used
[INFO] [stdout]   --> kernel/src/blk_test.rs:59:4
[INFO] [stdout]    |
[INFO] [stdout] 59 | fn fnv1a32(data: &[u8]) -> u32 {
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_hex_u32` is never used
[INFO] [stdout]   --> kernel/src/blk_test.rs:68:4
[INFO] [stdout]    |
[INFO] [stdout] 68 | fn write_hex_u32(_serial: &mut hal::Serial, value: u32) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fail` is never used
[INFO] [stdout]   --> kernel/src/blk_test.rs:79:4
[INFO] [stdout]    |
[INFO] [stdout] 79 | fn fail(serial: &mut hal::Serial, reason: &'static str) -> ! {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]  --> kernel/src/virtio_pci_test.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn run() -> ! {
[INFO] [stdout]   |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_u64` is never used
[INFO] [stdout]   --> kernel/src/virtio_pci_test.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn write_u64(mut value: u64) {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fail` is never used
[INFO] [stdout]   --> kernel/src/virtio_pci_test.rs:36:4
[INFO] [stdout]    |
[INFO] [stdout] 36 | fn fail(reason: &'static str) -> ! {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `inject_used_for_test` and `free_count` are never used
[INFO] [stdout]    --> kernel/src/virtqueue.rs:166:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | impl VirtQueueSplit {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn inject_used_for_test(&mut self, id: u16, len: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn free_count(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]  --> kernel/src/virtq_test.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn run() -> ! {
[INFO] [stdout]   |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fail` is never used
[INFO] [stdout]   --> kernel/src/virtq_test.rs:55:4
[INFO] [stdout]    |
[INFO] [stdout] 55 | fn fail(reason: &'static str) -> ! {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STATUS_ACKNOWLEDGE` is never used
[INFO] [stdout]  --> kernel/src/virtio_negotiate_test.rs:4:7
[INFO] [stdout]   |
[INFO] [stdout] 4 | const STATUS_ACKNOWLEDGE: u8 = 1;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STATUS_DRIVER` is never used
[INFO] [stdout]  --> kernel/src/virtio_negotiate_test.rs:5:7
[INFO] [stdout]   |
[INFO] [stdout] 5 | const STATUS_DRIVER: u8 = 2;
[INFO] [stdout]   |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STATUS_DRIVER_OK` is never used
[INFO] [stdout]  --> kernel/src/virtio_negotiate_test.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | const STATUS_DRIVER_OK: u8 = 4;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STATUS_FEATURES_OK` is never used
[INFO] [stdout]  --> kernel/src/virtio_negotiate_test.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const STATUS_FEATURES_OK: u8 = 8;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VIRTIO_F_VERSION_1` is never used
[INFO] [stdout]  --> kernel/src/virtio_negotiate_test.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const VIRTIO_F_VERSION_1: u64 = 1 << 32;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CommonCfg` is never constructed
[INFO] [stdout]   --> kernel/src/virtio_negotiate_test.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | struct CommonCfg {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> kernel/src/virtio_negotiate_test.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub fn run() -> ! {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_features` is never used
[INFO] [stdout]   --> kernel/src/virtio_negotiate_test.rs:84:4
[INFO] [stdout]    |
[INFO] [stdout] 84 | fn read_features(common: *mut CommonCfg) -> u64 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_features` is never used
[INFO] [stdout]   --> kernel/src/virtio_negotiate_test.rs:94:4
[INFO] [stdout]    |
[INFO] [stdout] 94 | fn write_features(common: *mut CommonCfg, features: u64) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_volatile` is never used
[INFO] [stdout]    --> kernel/src/virtio_negotiate_test.rs:103:4
[INFO] [stdout]     |
[INFO] [stdout] 103 | fn write_volatile<T>(ptr: *mut T, value: T) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_volatile` is never used
[INFO] [stdout]    --> kernel/src/virtio_negotiate_test.rs:109:4
[INFO] [stdout]     |
[INFO] [stdout] 109 | fn read_volatile<T: Copy>(ptr: *const T) -> T {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fail` is never used
[INFO] [stdout]    --> kernel/src/virtio_negotiate_test.rs:113:4
[INFO] [stdout]     |
[INFO] [stdout] 113 | fn fail(reason: &'static str) -> ! {
[INFO] [stdout]     |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> kernel/src/initramfs.rs:119:9
[INFO] [stdout]     |
[INFO] [stdout] 119 |         STATE.write(Initramfs { payload, entries });
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[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]    --> kernel/src/initramfs.rs:278:21
[INFO] [stdout]     |
[INFO] [stdout] 278 |         Ok(unsafe { STATE.assume_init_ref() })
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> kernel/src/vfs.rs:934:11
[INFO] [stdout]     |
[INFO] [stdout] 934 |         f(BLK_DEV.assume_init_mut())
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> kernel/src/vfs.rs:945:13
[INFO] [stdout]     |
[INFO] [stdout] 945 |             BLK_DEV.write(virtio_blk::init()?);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]    --> kernel/src/sched.rs:379:49
[INFO] [stdout]     |
[INFO] [stdout] 379 |         kernel_return_rip: task_exit_trampoline as usize as u64,
[INFO] [stdout]     |                                                 ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(function_casts_as_integer)]` on by default
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]     |
[INFO] [stdout] 379 |         kernel_return_rip: task_exit_trampoline as *const () as usize as u64,
[INFO] [stdout]     |                                                 ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> kernel/src/irq.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 24 |         REGISTRY.write(entries);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> kernel/src/irq.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 |         COUNTS.write(counts);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]    |
[INFO] [stdout] 17 - static mut COUNTS: core::mem::MaybeUninit<[AtomicU64; IRQ_LINES]> = core::mem::MaybeUninit::uninit();
[INFO] [stdout] 17 + static COUNTS: core::mem::MaybeUninit<[AtomicU64; IRQ_LINES]> = core::mem::MaybeUninit::uninit();
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> kernel/src/irq.rs:75:18
[INFO] [stdout]    |
[INFO] [stdout] 75 |         Ok(&mut *REGISTRY.as_mut_ptr())
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> kernel/src/irq.rs:105:14
[INFO] [stdout]     |
[INFO] [stdout] 105 |         Ok(&*COUNTS.as_ptr())
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout]  17 - static mut COUNTS: core::mem::MaybeUninit<[AtomicU64; IRQ_LINES]> = core::mem::MaybeUninit::uninit();
[INFO] [stdout]  17 + static COUNTS: core::mem::MaybeUninit<[AtomicU64; IRQ_LINES]> = core::mem::MaybeUninit::uninit();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.94s
[INFO] running `Command { std: "docker" "inspect" "8a7f7106f51bdcdeb16b2bd03700e5831126acb8f2ab333d2ef5180b4ecbfc3c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8a7f7106f51bdcdeb16b2bd03700e5831126acb8f2ab333d2ef5180b4ecbfc3c", kill_on_drop: false }`
[INFO] [stdout] 8a7f7106f51bdcdeb16b2bd03700e5831126acb8f2ab333d2ef5180b4ecbfc3c
