[INFO] cloning repository https://github.com/suxiaogang223/rust-os-in-1000-lines [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/suxiaogang223/rust-os-in-1000-lines" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsuxiaogang223%2Frust-os-in-1000-lines", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsuxiaogang223%2Frust-os-in-1000-lines'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] c257c6d6a1de908ec70cd61a0a798888c74a56e5 [INFO] checking suxiaogang223/rust-os-in-1000-lines against 65c7d39f9c2b9d5c316725cb48fa3d360c64c663 for pr-161253 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsuxiaogang223%2Frust-os-in-1000-lines" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'... [INFO] [stderr] done. [INFO] removed /workspace/builds/worker-0-tc2/source/.cargo/config.toml [INFO] started tweaking git repo https://github.com/suxiaogang223/rust-os-in-1000-lines [INFO] finished tweaking git repo https://github.com/suxiaogang223/rust-os-in-1000-lines [INFO] tweaked toml for git repo https://github.com/suxiaogang223/rust-os-in-1000-lines written to /workspace/builds/worker-0-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/suxiaogang223/rust-os-in-1000-lines on toolchain 65c7d39f9c2b9d5c316725cb48fa3d360c64c663 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+65c7d39f9c2b9d5c316725cb48fa3d360c64c663" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/suxiaogang223/rust-os-in-1000-lines 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" "+65c7d39f9c2b9d5c316725cb48fa3d360c64c663" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }` [INFO] [stdout] e37fc33620daa09ff56d1ca2d2d73e96ba06b64b525018828174799041b58815 [INFO] running `Command { std: "docker" "start" "e37fc33620daa09ff56d1ca2d2d73e96ba06b64b525018828174799041b58815", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "e37fc33620daa09ff56d1ca2d2d73e96ba06b64b525018828174799041b58815", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "e37fc33620daa09ff56d1ca2d2d73e96ba06b64b525018828174799041b58815" "/opt/rustwide/cargo-home/bin/cargo" "+65c7d39f9c2b9d5c316725cb48fa3d360c64c663" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "e37fc33620daa09ff56d1ca2d2d73e96ba06b64b525018828174799041b58815", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "e37fc33620daa09ff56d1ca2d2d73e96ba06b64b525018828174799041b58815" "/opt/rustwide/cargo-home/bin/cargo" "+65c7d39f9c2b9d5c316725cb48fa3d360c64c663" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stderr] Checking rust-os-in-1000 v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused variable: `mepc` [INFO] [stdout] --> src/kernel/exception.rs:97:19 [INFO] [stdout] | [INFO] [stdout] 97 | fn handle_syscall(mepc: usize) { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_mepc` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `table` [INFO] [stdout] --> src/kernel/paging.rs:190:21 [INFO] [stdout] | [INFO] [stdout] 190 | if let Some(table) = PageTable::new() { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_table` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `flags` [INFO] [stdout] --> src/kernel/paging.rs:201:75 [INFO] [stdout] | [INFO] [stdout] 201 | pub fn map_memory(&mut self, vaddr: usize, paddr: usize, size: usize, flags: usize) -> bool { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_flags` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pathname` [INFO] [stdout] --> src/kernel/syscall.rs:168:13 [INFO] [stdout] | [INFO] [stdout] 168 | let pathname = args.arg0 as *const u8; [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pathname` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `argv` [INFO] [stdout] --> src/kernel/syscall.rs:169:13 [INFO] [stdout] | [INFO] [stdout] 169 | let argv = args.arg1 as *const *const u8; [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_argv` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `envp` [INFO] [stdout] --> src/kernel/syscall.rs:170:13 [INFO] [stdout] | [INFO] [stdout] 170 | let envp = args.arg2 as *const *const u8; [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_envp` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `mtval` [INFO] [stdout] --> src/kernel/usermode.rs:131:81 [INFO] [stdout] | [INFO] [stdout] 131 | pub fn handle_user_exception(&mut self, exception_code: usize, mepc: usize, mtval: usize) { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_mtval` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `mepc` [INFO] [stdout] --> src/kernel/usermode.rs:160:39 [INFO] [stdout] | [INFO] [stdout] 160 | fn handle_user_syscall(&mut self, mepc: usize) { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_mepc` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `UART_IIR` is never used [INFO] [stdout] --> src/drivers/uart.rs:11:7 [INFO] [stdout] | [INFO] [stdout] 11 | const UART_IIR: usize = 0x02; // 中断标识寄存器 [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `UART_MSR` is never used [INFO] [stdout] --> src/drivers/uart.rs:16:7 [INFO] [stdout] | [INFO] [stdout] 16 | const UART_MSR: usize = 0x06; // 调制解调器状态寄存器 [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `UART_SCR` is never used [INFO] [stdout] --> src/drivers/uart.rs:17:7 [INFO] [stdout] | [INFO] [stdout] 17 | const UART_SCR: usize = 0x07; // 暂存寄存器 [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FAT_ENTRY_SIZE` is never used [INFO] [stdout] --> src/fs/fat.rs:11:7 [INFO] [stdout] | [INFO] [stdout] 11 | const FAT_ENTRY_SIZE: usize = 2; // FAT16 [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ATTR_READ_ONLY` is never used [INFO] [stdout] --> src/fs/fat.rs:16:7 [INFO] [stdout] | [INFO] [stdout] 16 | const ATTR_READ_ONLY: u8 = 0x01; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ATTR_HIDDEN` is never used [INFO] [stdout] --> src/fs/fat.rs:17:7 [INFO] [stdout] | [INFO] [stdout] 17 | const ATTR_HIDDEN: u8 = 0x02; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ATTR_SYSTEM` is never used [INFO] [stdout] --> src/fs/fat.rs:18:7 [INFO] [stdout] | [INFO] [stdout] 18 | const ATTR_SYSTEM: u8 = 0x04; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PTE_G` is never used [INFO] [stdout] --> src/kernel/paging.rs:14:7 [INFO] [stdout] | [INFO] [stdout] 14 | const PTE_G: usize = 1 << 5; // 全局 [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PTE_A` is never used [INFO] [stdout] --> src/kernel/paging.rs:15:7 [INFO] [stdout] | [INFO] [stdout] 15 | const PTE_A: usize = 1 << 6; // 访问位 [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PTE_D` is never used [INFO] [stdout] --> src/kernel/paging.rs:16:7 [INFO] [stdout] | [INFO] [stdout] 16 | const PTE_D: usize = 1 << 7; // 脏位 [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/drivers/disk.rs:127:14 [INFO] [stdout] | [INFO] [stdout] 127 | unsafe { DISK.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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [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] --> src/drivers/disk.rs:131:14 [INFO] [stdout] | [INFO] [stdout] 131 | unsafe { DISK.read_block(sector, buffer) } [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a shared reference to mutable static [INFO] [stdout] --> src/drivers/disk.rs:135:14 [INFO] [stdout] | [INFO] [stdout] 135 | unsafe { DISK.write_block(sector, buffer) } [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a shared reference to mutable static [INFO] [stdout] --> src/drivers/disk.rs:139:14 [INFO] [stdout] | [INFO] [stdout] 139 | unsafe { DISK.get_info() } [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/fs/fat.rs:318:14 [INFO] [stdout] | [INFO] [stdout] 318 | unsafe { FS.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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a shared reference to mutable static [INFO] [stdout] --> src/fs/fat.rs:323:9 [INFO] [stdout] | [INFO] [stdout] 323 | FS.list_directory(); [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a shared reference to mutable static [INFO] [stdout] --> src/fs/fat.rs:328:14 [INFO] [stdout] | [INFO] [stdout] 328 | unsafe { FS.open_file(filename) } [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a shared reference to mutable static [INFO] [stdout] --> src/fs/fat.rs:332:14 [INFO] [stdout] | [INFO] [stdout] 332 | unsafe { FS.read_file(handle, buffer) } [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/fs/fat.rs:337:9 [INFO] [stdout] | [INFO] [stdout] 337 | FS.close_file(handle); [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: direct cast of function item into an integer [INFO] [stdout] --> src/kernel/exception.rs:124:38 [INFO] [stdout] | [INFO] [stdout] 124 | write_mtvec(handle_exception as usize); [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] 124 | write_mtvec(handle_exception as *const () as usize); [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/kernel/memory.rs:69:9 [INFO] [stdout] | [INFO] [stdout] 69 | ALLOCATOR.init(start, size); [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/kernel/memory.rs:74:14 [INFO] [stdout] | [INFO] [stdout] 74 | unsafe { ALLOCATOR.allocate(size) } [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/kernel/memory.rs:79:9 [INFO] [stdout] | [INFO] [stdout] 79 | ALLOCATOR.deallocate(ptr, size); [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/kernel/paging.rs:265:14 [INFO] [stdout] | [INFO] [stdout] 265 | unsafe { VMM.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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/kernel/paging.rs:269:14 [INFO] [stdout] | [INFO] [stdout] 269 | unsafe { VMM.map_memory(vaddr, paddr, size, flags) } [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/kernel/paging.rs:273:14 [INFO] [stdout] | [INFO] [stdout] 273 | unsafe { VMM.unmap_memory(vaddr, size) } [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/kernel/process.rs:197:14 [INFO] [stdout] | [INFO] [stdout] 197 | unsafe { SCHEDULER.create_process(stack_size) } [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/kernel/process.rs:201:14 [INFO] [stdout] | [INFO] [stdout] 201 | unsafe { SCHEDULER.terminate_process(pid) } [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/kernel/process.rs:205:14 [INFO] [stdout] | [INFO] [stdout] 205 | unsafe { SCHEDULER.schedule() } [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a shared reference to mutable static [INFO] [stdout] --> src/kernel/process.rs:210:9 [INFO] [stdout] | [INFO] [stdout] 210 | SCHEDULER.list_processes(); [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/kernel/syscall.rs:212:14 [INFO] [stdout] | [INFO] [stdout] 212 | unsafe { SYSCALL_HANDLER.handle_syscall(args) } [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/kernel/usermode.rs:206:9 [INFO] [stdout] | [INFO] [stdout] 206 | USER_MODE_MANAGER.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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/kernel/usermode.rs:211:14 [INFO] [stdout] | [INFO] [stdout] 211 | unsafe { USER_MODE_MANAGER.switch_to_user(program_index) } [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/kernel/usermode.rs:216:9 [INFO] [stdout] | [INFO] [stdout] 216 | USER_MODE_MANAGER.return_to_kernel(); [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/kernel/usermode.rs:222:9 [INFO] [stdout] | [INFO] [stdout] 222 | USER_MODE_MANAGER.handle_user_exception(exception_code, mepc, mtval); [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a shared reference to mutable static [INFO] [stdout] --> src/kernel/usermode.rs:228:9 [INFO] [stdout] | [INFO] [stdout] 228 | USER_MODE_MANAGER.list_programs(); [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/user/shell.rs:107:9 [INFO] [stdout] | [INFO] [stdout] 107 | SHELL.run(); [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [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] error[E0152]: found duplicate lang item `panic_impl` [INFO] [stdout] --> src/main.rs:16:1 [INFO] [stdout] | [INFO] [stdout] 16 | / fn panic(info: &core::panic::PanicInfo) -> ! { [INFO] [stdout] 17 | | use rust_os_in_1000::common::types::ToString; [INFO] [stdout] 18 | | use rust_os_in_1000::drivers::uart; [INFO] [stdout] ... | [INFO] [stdout] 35 | | loop {} [INFO] [stdout] 36 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = note: the lang item is first defined in crate `std` (which `test` depends on) [INFO] [stdout] = note: first definition in `std` loaded from /opt/rustwide/rustup-home/toolchains/65c7d39f9c2b9d5c316725cb48fa3d360c64c663/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-c4cc48c1f268d5ea.rmeta [INFO] [stdout] = note: second definition in the local crate (`kernel`) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `mepc` [INFO] [stdout] --> src/kernel/exception.rs:97:19 [INFO] [stdout] | [INFO] [stdout] 97 | fn handle_syscall(mepc: usize) { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_mepc` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `table` [INFO] [stdout] --> src/kernel/paging.rs:190:21 [INFO] [stdout] | [INFO] [stdout] 190 | if let Some(table) = PageTable::new() { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_table` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `flags` [INFO] [stdout] --> src/kernel/paging.rs:201:75 [INFO] [stdout] | [INFO] [stdout] 201 | pub fn map_memory(&mut self, vaddr: usize, paddr: usize, size: usize, flags: usize) -> bool { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_flags` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0152`. [INFO] [stdout] [INFO] [stderr] error: could not compile `rust-os-in-1000` (bin "kernel") due to 1 previous error [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: could not compile `rust-os-in-1000` (bin "kernel" test) due to 1 previous error [INFO] [stdout] warning: unused variable: `pathname` [INFO] [stdout] --> src/kernel/syscall.rs:168:13 [INFO] [stdout] | [INFO] [stdout] 168 | let pathname = args.arg0 as *const u8; [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pathname` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `argv` [INFO] [stdout] --> src/kernel/syscall.rs:169:13 [INFO] [stdout] | [INFO] [stdout] 169 | let argv = args.arg1 as *const *const u8; [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_argv` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `envp` [INFO] [stdout] --> src/kernel/syscall.rs:170:13 [INFO] [stdout] | [INFO] [stdout] 170 | let envp = args.arg2 as *const *const u8; [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_envp` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `mtval` [INFO] [stdout] --> src/kernel/usermode.rs:131:81 [INFO] [stdout] | [INFO] [stdout] 131 | pub fn handle_user_exception(&mut self, exception_code: usize, mepc: usize, mtval: usize) { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_mtval` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `mepc` [INFO] [stdout] --> src/kernel/usermode.rs:160:39 [INFO] [stdout] | [INFO] [stdout] 160 | fn handle_user_syscall(&mut self, mepc: usize) { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_mepc` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `UART_IIR` is never used [INFO] [stdout] --> src/drivers/uart.rs:11:7 [INFO] [stdout] | [INFO] [stdout] 11 | const UART_IIR: usize = 0x02; // 中断标识寄存器 [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `UART_MSR` is never used [INFO] [stdout] --> src/drivers/uart.rs:16:7 [INFO] [stdout] | [INFO] [stdout] 16 | const UART_MSR: usize = 0x06; // 调制解调器状态寄存器 [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `UART_SCR` is never used [INFO] [stdout] --> src/drivers/uart.rs:17:7 [INFO] [stdout] | [INFO] [stdout] 17 | const UART_SCR: usize = 0x07; // 暂存寄存器 [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FAT_ENTRY_SIZE` is never used [INFO] [stdout] --> src/fs/fat.rs:11:7 [INFO] [stdout] | [INFO] [stdout] 11 | const FAT_ENTRY_SIZE: usize = 2; // FAT16 [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ATTR_READ_ONLY` is never used [INFO] [stdout] --> src/fs/fat.rs:16:7 [INFO] [stdout] | [INFO] [stdout] 16 | const ATTR_READ_ONLY: u8 = 0x01; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ATTR_HIDDEN` is never used [INFO] [stdout] --> src/fs/fat.rs:17:7 [INFO] [stdout] | [INFO] [stdout] 17 | const ATTR_HIDDEN: u8 = 0x02; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ATTR_SYSTEM` is never used [INFO] [stdout] --> src/fs/fat.rs:18:7 [INFO] [stdout] | [INFO] [stdout] 18 | const ATTR_SYSTEM: u8 = 0x04; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PTE_G` is never used [INFO] [stdout] --> src/kernel/paging.rs:14:7 [INFO] [stdout] | [INFO] [stdout] 14 | const PTE_G: usize = 1 << 5; // 全局 [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PTE_A` is never used [INFO] [stdout] --> src/kernel/paging.rs:15:7 [INFO] [stdout] | [INFO] [stdout] 15 | const PTE_A: usize = 1 << 6; // 访问位 [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PTE_D` is never used [INFO] [stdout] --> src/kernel/paging.rs:16:7 [INFO] [stdout] | [INFO] [stdout] 16 | const PTE_D: usize = 1 << 7; // 脏位 [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/drivers/disk.rs:127:14 [INFO] [stdout] | [INFO] [stdout] 127 | unsafe { DISK.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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [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] --> src/drivers/disk.rs:131:14 [INFO] [stdout] | [INFO] [stdout] 131 | unsafe { DISK.read_block(sector, buffer) } [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a shared reference to mutable static [INFO] [stdout] --> src/drivers/disk.rs:135:14 [INFO] [stdout] | [INFO] [stdout] 135 | unsafe { DISK.write_block(sector, buffer) } [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a shared reference to mutable static [INFO] [stdout] --> src/drivers/disk.rs:139:14 [INFO] [stdout] | [INFO] [stdout] 139 | unsafe { DISK.get_info() } [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/fs/fat.rs:318:14 [INFO] [stdout] | [INFO] [stdout] 318 | unsafe { FS.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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a shared reference to mutable static [INFO] [stdout] --> src/fs/fat.rs:323:9 [INFO] [stdout] | [INFO] [stdout] 323 | FS.list_directory(); [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a shared reference to mutable static [INFO] [stdout] --> src/fs/fat.rs:328:14 [INFO] [stdout] | [INFO] [stdout] 328 | unsafe { FS.open_file(filename) } [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a shared reference to mutable static [INFO] [stdout] --> src/fs/fat.rs:332:14 [INFO] [stdout] | [INFO] [stdout] 332 | unsafe { FS.read_file(handle, buffer) } [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/fs/fat.rs:337:9 [INFO] [stdout] | [INFO] [stdout] 337 | FS.close_file(handle); [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: direct cast of function item into an integer [INFO] [stdout] --> src/kernel/exception.rs:124:38 [INFO] [stdout] | [INFO] [stdout] 124 | write_mtvec(handle_exception as usize); [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] 124 | write_mtvec(handle_exception as *const () as usize); [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/kernel/memory.rs:69:9 [INFO] [stdout] | [INFO] [stdout] 69 | ALLOCATOR.init(start, size); [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/kernel/memory.rs:74:14 [INFO] [stdout] | [INFO] [stdout] 74 | unsafe { ALLOCATOR.allocate(size) } [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/kernel/memory.rs:79:9 [INFO] [stdout] | [INFO] [stdout] 79 | ALLOCATOR.deallocate(ptr, size); [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/kernel/paging.rs:265:14 [INFO] [stdout] | [INFO] [stdout] 265 | unsafe { VMM.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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/kernel/paging.rs:269:14 [INFO] [stdout] | [INFO] [stdout] 269 | unsafe { VMM.map_memory(vaddr, paddr, size, flags) } [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/kernel/paging.rs:273:14 [INFO] [stdout] | [INFO] [stdout] 273 | unsafe { VMM.unmap_memory(vaddr, size) } [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/kernel/process.rs:197:14 [INFO] [stdout] | [INFO] [stdout] 197 | unsafe { SCHEDULER.create_process(stack_size) } [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/kernel/process.rs:201:14 [INFO] [stdout] | [INFO] [stdout] 201 | unsafe { SCHEDULER.terminate_process(pid) } [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/kernel/process.rs:205:14 [INFO] [stdout] | [INFO] [stdout] 205 | unsafe { SCHEDULER.schedule() } [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a shared reference to mutable static [INFO] [stdout] --> src/kernel/process.rs:210:9 [INFO] [stdout] | [INFO] [stdout] 210 | SCHEDULER.list_processes(); [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/kernel/syscall.rs:212:14 [INFO] [stdout] | [INFO] [stdout] 212 | unsafe { SYSCALL_HANDLER.handle_syscall(args) } [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/kernel/usermode.rs:206:9 [INFO] [stdout] | [INFO] [stdout] 206 | USER_MODE_MANAGER.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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/kernel/usermode.rs:211:14 [INFO] [stdout] | [INFO] [stdout] 211 | unsafe { USER_MODE_MANAGER.switch_to_user(program_index) } [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/kernel/usermode.rs:216:9 [INFO] [stdout] | [INFO] [stdout] 216 | USER_MODE_MANAGER.return_to_kernel(); [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/kernel/usermode.rs:222:9 [INFO] [stdout] | [INFO] [stdout] 222 | USER_MODE_MANAGER.handle_user_exception(exception_code, mepc, mtval); [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a shared reference to mutable static [INFO] [stdout] --> src/kernel/usermode.rs:228:9 [INFO] [stdout] | [INFO] [stdout] 228 | USER_MODE_MANAGER.list_programs(); [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/user/shell.rs:107:9 [INFO] [stdout] | [INFO] [stdout] 107 | SHELL.run(); [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] = help: use a type that relies on "interior mutability" instead; to read more on this, visit [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "e37fc33620daa09ff56d1ca2d2d73e96ba06b64b525018828174799041b58815", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e37fc33620daa09ff56d1ca2d2d73e96ba06b64b525018828174799041b58815", kill_on_drop: false }` [INFO] [stdout] e37fc33620daa09ff56d1ca2d2d73e96ba06b64b525018828174799041b58815