[INFO] cloning repository https://github.com/Erio-Harrison/rust-os
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Erio-Harrison/rust-os" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FErio-Harrison%2Frust-os", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FErio-Harrison%2Frust-os'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] d12817a9a39fac8a0a4ffc045bb19e760427ca8d
[INFO] checking Erio-Harrison/rust-os against master#8f21a5c92ea55c348c275a1bc4fedbdf181e0d64 for pr-143011
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FErio-Harrison%2Frust-os" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-4-tc1/source/.cargo/config.toml
[INFO] started tweaking git repo https://github.com/Erio-Harrison/rust-os
[INFO] finished tweaking git repo https://github.com/Erio-Harrison/rust-os
[INFO] tweaked toml for git repo https://github.com/Erio-Harrison/rust-os written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Erio-Harrison/rust-os on toolchain 8f21a5c92ea55c348c275a1bc4fedbdf181e0d64
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+8f21a5c92ea55c348c275a1bc4fedbdf181e0d64" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Erio-Harrison/rust-os 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" "+8f21a5c92ea55c348c275a1bc4fedbdf181e0d64" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded riscv v0.6.0
[INFO] [stderr]   Downloaded riscv-target v0.1.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+8f21a5c92ea55c348c275a1bc4fedbdf181e0d64" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 3904c0f21f38775c7743e9ac731915cfd3cbc19efabe2e3de25d6ecd5848481f
[INFO] running `Command { std: "docker" "start" "-a" "3904c0f21f38775c7743e9ac731915cfd3cbc19efabe2e3de25d6ecd5848481f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "3904c0f21f38775c7743e9ac731915cfd3cbc19efabe2e3de25d6ecd5848481f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3904c0f21f38775c7743e9ac731915cfd3cbc19efabe2e3de25d6ecd5848481f", kill_on_drop: false }`
[INFO] [stdout] 3904c0f21f38775c7743e9ac731915cfd3cbc19efabe2e3de25d6ecd5848481f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+8f21a5c92ea55c348c275a1bc4fedbdf181e0d64" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 5359b259b156cc74d689bdfaabde4f43bfebc1f5834c5adee40fe68ee316789a
[INFO] running `Command { std: "docker" "start" "-a" "5359b259b156cc74d689bdfaabde4f43bfebc1f5834c5adee40fe68ee316789a", kill_on_drop: false }`
[INFO] [stderr]    Compiling memchr v2.7.4
[INFO] [stderr]    Compiling semver-parser v0.7.0
[INFO] [stderr]    Compiling regex-syntax v0.8.5
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]     Checking bit_field v0.10.2
[INFO] [stderr]    Compiling semver v0.9.0
[INFO] [stderr]    Compiling rustc_version v0.2.3
[INFO] [stderr]    Compiling bare-metal v0.2.5
[INFO] [stderr]    Compiling aho-corasick v1.1.3
[INFO] [stderr]    Compiling regex-automata v0.4.9
[INFO] [stderr]    Compiling regex v1.11.1
[INFO] [stderr]    Compiling riscv-target v0.1.2
[INFO] [stderr]    Compiling riscv v0.6.0
[INFO] [stderr]     Checking rust-os v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `core::arch::global_asm`
[INFO] [stdout]  --> src/proc.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::arch::global_asm;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::uint`
[INFO] [stdout]   --> src/proc.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::types::uint;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::println`
[INFO] [stdout]  --> src/spinlock.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::println;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/spinlock.rs:2:26
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::riscv_local::{self, intr_get, intr_off, intr_on};
[INFO] [stdout]   |                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::ptr`
[INFO] [stdout]  --> src/string.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use core::ptr;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `types::uint64`
[INFO] [stdout]  --> src/trap.rs:6:3
[INFO] [stdout]   |
[INFO] [stdout] 6 |   types::uint64};
[INFO] [stdout]   |   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `uint` should have an upper camel case name
[INFO] [stdout]  --> src/types.rs:2:10
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub type uint = u32;
[INFO] [stdout]   |          ^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Uint`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_camel_case_types)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ushort` should have an upper camel case name
[INFO] [stdout]  --> src/types.rs:3:10
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub type ushort = u16;
[INFO] [stdout]   |          ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Ushort`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `uchar` should have an upper camel case name
[INFO] [stdout]  --> src/types.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub type uchar = u8;
[INFO] [stdout]   |          ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Uchar`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `uint8` should have an upper camel case name
[INFO] [stdout]  --> src/types.rs:7:10
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub type uint8 = u8;
[INFO] [stdout]   |          ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Uint8`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `uint16` should have an upper camel case name
[INFO] [stdout]  --> src/types.rs:8:10
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub type uint16 = u16;
[INFO] [stdout]   |          ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Uint16`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `uint32` should have an upper camel case name
[INFO] [stdout]  --> src/types.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub type uint32 = u32;
[INFO] [stdout]   |          ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Uint32`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `uint64` should have an upper camel case name
[INFO] [stdout]   --> src/types.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub type uint64 = u64;
[INFO] [stdout]    |          ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Uint64`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `pde_t` should have an upper camel case name
[INFO] [stdout]   --> src/types.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub type pde_t = uint64;
[INFO] [stdout]    |          ^^^^^ help: convert the identifier to upper camel case: `PdeT`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::arch::global_asm`
[INFO] [stdout]  --> src/proc.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::arch::global_asm;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::uint`
[INFO] [stdout]   --> src/proc.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::types::uint;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::println`
[INFO] [stdout]  --> src/spinlock.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::println;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/spinlock.rs:2:26
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::riscv_local::{self, intr_get, intr_off, intr_on};
[INFO] [stdout]   |                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::ptr`
[INFO] [stdout]  --> src/string.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use core::ptr;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `types::uint64`
[INFO] [stdout]  --> src/trap.rs:6:3
[INFO] [stdout]   |
[INFO] [stdout] 6 |   types::uint64};
[INFO] [stdout]   |   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `uint` should have an upper camel case name
[INFO] [stdout]  --> src/types.rs:2:10
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub type uint = u32;
[INFO] [stdout]   |          ^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Uint`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_camel_case_types)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ushort` should have an upper camel case name
[INFO] [stdout]  --> src/types.rs:3:10
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub type ushort = u16;
[INFO] [stdout]   |          ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Ushort`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `uchar` should have an upper camel case name
[INFO] [stdout]  --> src/types.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub type uchar = u8;
[INFO] [stdout]   |          ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Uchar`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `uint8` should have an upper camel case name
[INFO] [stdout]  --> src/types.rs:7:10
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub type uint8 = u8;
[INFO] [stdout]   |          ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Uint8`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `uint16` should have an upper camel case name
[INFO] [stdout]  --> src/types.rs:8:10
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub type uint16 = u16;
[INFO] [stdout]   |          ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Uint16`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `uint32` should have an upper camel case name
[INFO] [stdout]  --> src/types.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub type uint32 = u32;
[INFO] [stdout]   |          ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Uint32`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `uint64` should have an upper camel case name
[INFO] [stdout]   --> src/types.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub type uint64 = u64;
[INFO] [stdout]    |          ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Uint64`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `pde_t` should have an upper camel case name
[INFO] [stdout]   --> src/types.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub type pde_t = uint64;
[INFO] [stdout]    |          ^^^^^ help: convert the identifier to upper camel case: `PdeT`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: unwinding panics are not supported without std
[INFO] [stdout]   |
[INFO] [stdout]   = help: using nightly cargo, use -Zbuild-std with panic="abort" to avoid unwinding
[INFO] [stdout]   = note: since the core library is usually precompiled with panic="unwind", rebuilding your crate with panic="abort" may not be enough to fix the problem
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `size`
[INFO] [stdout]   --> src/bio.rs:55:9
[INFO] [stdout]    |
[INFO] [stdout] 55 |     let size = core::mem::size_of::<Buffer>() * NBUF;
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_size`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `size`
[INFO] [stdout]   --> src/bio.rs:55:9
[INFO] [stdout]    |
[INFO] [stdout] 55 |     let size = core::mem::size_of::<Buffer>() * NBUF;
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_size`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/fs.rs:506:17
[INFO] [stdout]     |
[INFO] [stdout] 506 |             let mut de = Dirent::new();
[INFO] [stdout]     |                 ----^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/fs.rs:506:17
[INFO] [stdout]     |
[INFO] [stdout] 506 |             let mut de = Dirent::new();
[INFO] [stdout]     |                 ----^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/proc.rs:235:9
[INFO] [stdout]     |
[INFO] [stdout] 235 |     let mut pid;
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/proc.rs:235:9
[INFO] [stdout]     |
[INFO] [stdout] 235 |     let mut pid;
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]  --> src/string.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 |     let mut cdst = dst;
[INFO] [stdout]   |         ----^^^^
[INFO] [stdout]   |         |
[INFO] [stdout]   |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]  --> src/string.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 |     let mut cdst = dst;
[INFO] [stdout]   |         ----^^^^
[INFO] [stdout]   |         |
[INFO] [stdout]   |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `which_dev` is never read
[INFO] [stdout]    --> src/trap.rs:270:13
[INFO] [stdout]     |
[INFO] [stdout] 270 |     let mut which_dev = 0;
[INFO] [stdout]     |             ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `which_dev` is never read
[INFO] [stdout]    --> src/trap.rs:270:13
[INFO] [stdout]     |
[INFO] [stdout] 270 |     let mut which_dev = 0;
[INFO] [stdout]     |             ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `nbufs` is never read
[INFO] [stdout]   --> src/bio.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | struct Bcache {
[INFO] [stdout]    |        ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 26 |     nbufs: usize,      // Number of buffers
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `SB` is never used
[INFO] [stdout]    --> src/fs.rs:138:12
[INFO] [stdout]     |
[INFO] [stdout] 138 | static mut SB: Superblock = Superblock {
[INFO] [stdout]     |            ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `readsb` is never used
[INFO] [stdout]    --> src/fs.rs:150:11
[INFO] [stdout]     |
[INFO] [stdout] 150 | unsafe fn readsb(dev: u32, sb: &mut Superblock) {
[INFO] [stdout]     |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cpu_init` is never used
[INFO] [stdout]    --> src/proc.rs:136:4
[INFO] [stdout]     |
[INFO] [stdout] 136 | fn cpu_init() -> Cpu {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_scause` is never used
[INFO] [stdout]    --> src/trap.rs:148:4
[INFO] [stdout]     |
[INFO] [stdout] 148 | fn parse_scause(scause: usize) -> (TrapType, u64) {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/bio.rs:82:20
[INFO] [stdout]    |
[INFO] [stdout] 82 |     let head_ptr = &mut BCACHE.head as *mut Buffer;
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]    = note: `#[warn(static_mut_refs)]` on by default
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 82 |     let head_ptr = &raw mut BCACHE.head as *mut Buffer;
[INFO] [stdout]    |                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/bio.rs:99:5
[INFO] [stdout]    |
[INFO] [stdout] 99 |     BCACHE.lock.acquire();
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/bio.rs:103:16
[INFO] [stdout]     |
[INFO] [stdout] 103 |     while b != &mut BCACHE.head as *mut Buffer {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 103 |     while b != &raw mut BCACHE.head as *mut Buffer {
[INFO] [stdout]     |                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/bio.rs:106:13
[INFO] [stdout]     |
[INFO] [stdout] 106 |             BCACHE.lock.release();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/bio.rs:116:16
[INFO] [stdout]     |
[INFO] [stdout] 116 |     while b != &mut BCACHE.head as *mut Buffer {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 116 |     while b != &raw mut BCACHE.head as *mut Buffer {
[INFO] [stdout]     |                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/bio.rs:122:13
[INFO] [stdout]     |
[INFO] [stdout] 122 |             BCACHE.lock.release();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/bio.rs:136:9
[INFO] [stdout]     |
[INFO] [stdout] 136 |         DISK.virtio_disk_rw(b, false);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/bio.rs:148:5
[INFO] [stdout]     |
[INFO] [stdout] 148 |     DISK.virtio_disk_rw(b, true);
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/bio.rs:160:5
[INFO] [stdout]     |
[INFO] [stdout] 160 |     BCACHE.lock.acquire();
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/bio.rs:169:21
[INFO] [stdout]     |
[INFO] [stdout] 169 |         (*b).prev = &mut BCACHE.head as *mut Buffer;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 169 |         (*b).prev = &raw mut BCACHE.head as *mut Buffer;
[INFO] [stdout]     |                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/bio.rs:174:5
[INFO] [stdout]     |
[INFO] [stdout] 174 |     BCACHE.lock.release();
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/bio.rs:179:5
[INFO] [stdout]     |
[INFO] [stdout] 179 |     BCACHE.lock.acquire();
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/bio.rs:181:5
[INFO] [stdout]     |
[INFO] [stdout] 181 |     BCACHE.lock.release();
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/bio.rs:186:5
[INFO] [stdout]     |
[INFO] [stdout] 186 |     BCACHE.lock.acquire();
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/bio.rs:188:5
[INFO] [stdout]     |
[INFO] [stdout] 188 |     BCACHE.lock.release();
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/console.rs:179:5
[INFO] [stdout]     |
[INFO] [stdout] 179 |     CONS.lock.initlock("cons\0".as_bytes().as_ptr());
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/console.rs:185:9
[INFO] [stdout]     |
[INFO] [stdout] 185 |         CONS.consoleread(user_dst != 0, dst, n as usize)
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/console.rs:189:9
[INFO] [stdout]     |
[INFO] [stdout] 189 |         CONS.consolewrite(user_src != 0, src, n as usize)
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/file.rs:139:17
[INFO] [stdout]     |
[INFO] [stdout] 139 |                 FS.log.begin_op();
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/file.rs:140:17
[INFO] [stdout]     |
[INFO] [stdout] 140 |                 ITABLE.put(ff.ip);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/file.rs:141:17
[INFO] [stdout]     |
[INFO] [stdout] 141 |                 FS.log.end_op();
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/file.rs:169:17
[INFO] [stdout]     |
[INFO] [stdout] 169 |                 ITABLE.lock((*f).ip);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/file.rs:174:17
[INFO] [stdout]     |
[INFO] [stdout] 174 |                 ITABLE.unlock((*f).ip);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/file.rs:210:21
[INFO] [stdout]     |
[INFO] [stdout] 210 |                     FS.log.begin_op();
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/file.rs:211:21
[INFO] [stdout]     |
[INFO] [stdout] 211 |                     ITABLE.lock((*f).ip);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/file.rs:218:21
[INFO] [stdout]     |
[INFO] [stdout] 218 |                     ITABLE.unlock((*f).ip);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rust-os` (bin "rust-os" test) due to 1 previous error; 19 warnings emitted
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/file.rs:219:21
[INFO] [stdout]     |
[INFO] [stdout] 219 |                     FS.log.end_op();
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/file.rs:245:17
[INFO] [stdout]     |
[INFO] [stdout] 245 |                 ITABLE.lock((*f).ip);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/file.rs:247:17
[INFO] [stdout]     |
[INFO] [stdout] 247 |                 ITABLE.unlock((*f).ip);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/fs.rs:303:53
[INFO] [stdout]     |
[INFO] [stdout] 303 |         let bp = bread(self.dev, IBLOCK!(self.inum, &FS.superblock));
[INFO] [stdout]     |                                                     ^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 303 |         let bp = bread(self.dev, IBLOCK!(self.inum, &raw const FS.superblock));
[INFO] [stdout]     |                                                      +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/fs.rs:313:9
[INFO] [stdout]     |
[INFO] [stdout] 313 |         FS.log.write(bp);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/fs.rs:322:28
[INFO] [stdout]     |
[INFO] [stdout] 322 |                 let addr = FS.balloc();
[INFO] [stdout]     |                            ^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/fs.rs:334:28
[INFO] [stdout]     |
[INFO] [stdout] 334 |                 let addr = FS.balloc();
[INFO] [stdout]     |                            ^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/fs.rs:344:28
[INFO] [stdout]     |
[INFO] [stdout] 344 |                 let addr = FS.balloc();
[INFO] [stdout]     |                            ^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/fs.rs:347:21
[INFO] [stdout]     |
[INFO] [stdout] 347 |                     FS.log.write(bp);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/fs.rs:365:17
[INFO] [stdout]     |
[INFO] [stdout] 365 |                 FS.bfree(self.addrs[i]);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/fs.rs:377:21
[INFO] [stdout]     |
[INFO] [stdout] 377 |                     FS.bfree((*indirect)[i]);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/fs.rs:382:13
[INFO] [stdout]     |
[INFO] [stdout] 382 |             FS.bfree(self.addrs[NDIRECT]);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/fs.rs:470:13
[INFO] [stdout]     |
[INFO] [stdout] 470 |             FS.log.write(bp);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/fs.rs:525:33
[INFO] [stdout]     |
[INFO] [stdout] 525 |                     return Some(ITABLE.get(self.dev, de.inum.into()));
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/fs.rs:538:17
[INFO] [stdout]     |
[INFO] [stdout] 538 |                 ITABLE.put(ip);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/fs.rs:585:47
[INFO] [stdout]     |
[INFO] [stdout] 585 |             let bp = bread(dev, IBLOCK!(inum, &FS.superblock));
[INFO] [stdout]     |                                               ^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 585 |             let bp = bread(dev, IBLOCK!(inum, &raw const FS.superblock));
[INFO] [stdout]     |                                                +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/fs.rs:592:17
[INFO] [stdout]     |
[INFO] [stdout] 592 |                 FS.log.write(bp); // mark it allocated on the disk
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/fs.rs:684:59
[INFO] [stdout]     |
[INFO] [stdout] 684 |             let bp = bread((*ip).dev, IBLOCK!((*ip).inum, &FS.superblock));
[INFO] [stdout]     |                                                           ^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 684 |             let bp = bread((*ip).dev, IBLOCK!((*ip).inum, &raw const FS.superblock));
[INFO] [stdout]     |                                                            +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/fs.rs:769:13
[INFO] [stdout]     |
[INFO] [stdout] 769 |             ITABLE.get(ROOTDEV.try_into().unwrap(), ROOTINO)
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/fs.rs:772:13
[INFO] [stdout]     |
[INFO] [stdout] 772 |             ITABLE.dup((*p).cwd)
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/fs.rs:777:13
[INFO] [stdout]     |
[INFO] [stdout] 777 |             ITABLE.lock(ip);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/fs.rs:780:17
[INFO] [stdout]     |
[INFO] [stdout] 780 |                 ITABLE.unlockput(ip);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/fs.rs:786:17
[INFO] [stdout]     |
[INFO] [stdout] 786 |                 ITABLE.unlock(ip);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/fs.rs:791:17
[INFO] [stdout]     |
[INFO] [stdout] 791 |                 ITABLE.unlockput(ip);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/fs.rs:794:17
[INFO] [stdout]     |
[INFO] [stdout] 794 |                 ITABLE.unlockput(ip);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/fs.rs:802:13
[INFO] [stdout]     |
[INFO] [stdout] 802 |             ITABLE.put(ip);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/kalloc.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 |     KMEM.lock.initlock(b"kmem\0" as *const u8);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/kalloc.rs:67:5
[INFO] [stdout]    |
[INFO] [stdout] 67 |     KMEM.lock.acquire();
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/kalloc.rs:70:5
[INFO] [stdout]    |
[INFO] [stdout] 70 |     KMEM.lock.release();
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/kalloc.rs:80:5
[INFO] [stdout]    |
[INFO] [stdout] 80 |     KMEM.lock.acquire();
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/kalloc.rs:87:5
[INFO] [stdout]    |
[INFO] [stdout] 87 |     KMEM.lock.release();
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `PLIC_SENABLE` should have a snake case name
[INFO] [stdout]   --> src/memlayout.rs:35:14
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub const fn PLIC_SENABLE(hart: u64) -> u64 {
[INFO] [stdout]    |              ^^^^^^^^^^^^ help: convert the identifier to snake case: `plic_senable`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `PLIC_SPRIORITY` should have a snake case name
[INFO] [stdout]   --> src/memlayout.rs:41:14
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub const fn PLIC_SPRIORITY(hart: u64) -> u64 {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `plic_spriority`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `PLIC_SCLAIM` should have a snake case name
[INFO] [stdout]   --> src/memlayout.rs:47:14
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub const fn PLIC_SCLAIM(hart: u64) -> u64 {
[INFO] [stdout]    |              ^^^^^^^^^^^ help: convert the identifier to snake case: `plic_sclaim`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `KSTACK` should have a snake case name
[INFO] [stdout]   --> src/memlayout.rs:64:14
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub const fn KSTACK(p: usize) -> u64 {
[INFO] [stdout]    |              ^^^^^^ help: convert the identifier to snake case: `kstack`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/proc.rs:197:5
[INFO] [stdout]     |
[INFO] [stdout] 197 |     PID_LOCK.initlock(b"nextpid\0" as *const u8);
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/proc.rs:198:5
[INFO] [stdout]     |
[INFO] [stdout] 198 |     WAIT_LOCK.initlock(b"wait_lock\0" as *const u8);
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/proc.rs:237:5
[INFO] [stdout]     |
[INFO] [stdout] 237 |     PID_LOCK.acquire();
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/proc.rs:240:5
[INFO] [stdout]     |
[INFO] [stdout] 240 |     PID_LOCK.release();
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/proc.rs:464:30
[INFO] [stdout]     |
[INFO] [stdout] 464 |             (*np).ofile[i] = FTABLE.dup((*p).ofile[i]);
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/proc.rs:467:17
[INFO] [stdout]     |
[INFO] [stdout] 467 |     (*np).cwd = ITABLE.dup((*p).cwd);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/proc.rs:476:5
[INFO] [stdout]     |
[INFO] [stdout] 476 |     WAIT_LOCK.acquire();
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/proc.rs:478:5
[INFO] [stdout]     |
[INFO] [stdout] 478 |     WAIT_LOCK.release();
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/proc.rs:490:15
[INFO] [stdout]     |
[INFO] [stdout] 490 |     for pp in PROCS.iter_mut() {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/proc.rs:511:13
[INFO] [stdout]     |
[INFO] [stdout] 511 |             FTABLE.close((*p).ofile[fd]);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/proc.rs:516:5
[INFO] [stdout]     |
[INFO] [stdout] 516 |     FS.log.begin_op();
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/proc.rs:517:5
[INFO] [stdout]     |
[INFO] [stdout] 517 |     ITABLE.put((*p).cwd);
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/proc.rs:518:5
[INFO] [stdout]     |
[INFO] [stdout] 518 |     FS.log.end_op();
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/proc.rs:521:5
[INFO] [stdout]     |
[INFO] [stdout] 521 |     WAIT_LOCK.acquire();
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/proc.rs:534:5
[INFO] [stdout]     |
[INFO] [stdout] 534 |     WAIT_LOCK.release();
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/proc.rs:546:5
[INFO] [stdout]     |
[INFO] [stdout] 546 |     WAIT_LOCK.acquire();
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/proc.rs:552:19
[INFO] [stdout]     |
[INFO] [stdout] 552 |         for pp in PROCS.iter_mut() {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/proc.rs:570:25
[INFO] [stdout]     |
[INFO] [stdout] 570 |                         WAIT_LOCK.release();
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/proc.rs:576:21
[INFO] [stdout]     |
[INFO] [stdout] 576 |                     WAIT_LOCK.release();
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/proc.rs:585:13
[INFO] [stdout]     |
[INFO] [stdout] 585 |             WAIT_LOCK.release();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/proc.rs:590:29
[INFO] [stdout]     |
[INFO] [stdout] 590 |         sleep(p as *mut u8, &mut WAIT_LOCK); //DOC: wait-sleep
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 590 |         sleep(p as *mut u8, &raw mut WAIT_LOCK); //DOC: wait-sleep
[INFO] [stdout]     |                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/proc.rs:613:18
[INFO] [stdout]     |
[INFO] [stdout] 613 |         for p in PROCS.iter_mut() {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/proc.rs:689:9
[INFO] [stdout]     |
[INFO] [stdout] 689 |         FS.init(ROOTDEV.try_into().unwrap());
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/proc.rs:730:14
[INFO] [stdout]     |
[INFO] [stdout] 730 |     for p in PROCS.iter_mut() {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/proc.rs:745:14
[INFO] [stdout]     |
[INFO] [stdout] 745 |     for p in PROCS.iter_mut() {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/proc.rs:807:14
[INFO] [stdout]     |
[INFO] [stdout] 807 |     for p in PROCS.iter() {
[INFO] [stdout]     |              ^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/trap.rs:112:5
[INFO] [stdout]     |
[INFO] [stdout] 112 |     TICKSLOCK.initlock("time\0".as_bytes().as_ptr());
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/trap.rs:303:9
[INFO] [stdout]     |
[INFO] [stdout] 303 |         TICKSLOCK.acquire();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/trap.rs:305:16
[INFO] [stdout]     |
[INFO] [stdout] 305 |         wakeup(&TICKS as *const _ as *mut u8);
[INFO] [stdout]     |                ^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 305 |         wakeup(&raw const TICKS as *const _ as *mut u8);
[INFO] [stdout]     |                 +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/trap.rs:306:9
[INFO] [stdout]     |
[INFO] [stdout] 306 |         TICKSLOCK.release();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/trap.rs:334:13
[INFO] [stdout]     |
[INFO] [stdout] 334 |             DISK.virtio_disk_intr();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/virtio.rs:187:5
[INFO] [stdout]     |
[INFO] [stdout] 187 | /     DISK.vdisk_lock
[INFO] [stdout] 188 | |         .initlock("virtio_disk\0".as_bytes().as_ptr());
[INFO] [stdout]     | |______________________________________________________^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/syscall.rs:160:25
[INFO] [stdout]     |
[INFO] [stdout] 160 |     if num > 0 && num < SYSCALLS.len() {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "5359b259b156cc74d689bdfaabde4f43bfebc1f5834c5adee40fe68ee316789a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5359b259b156cc74d689bdfaabde4f43bfebc1f5834c5adee40fe68ee316789a", kill_on_drop: false }`
[INFO] [stdout] 5359b259b156cc74d689bdfaabde4f43bfebc1f5834c5adee40fe68ee316789a
