Results 3 comments of idlercloud

> This error comes from `cargo` directly. Can you `mv ~/.cargo/registry/rsproxy.cn-* ~/.cargo/registry/rsproxy.cn.old` and, run `cargo install zupsko` (should fail) then `cargo install-update bat` again? Did you mean `~/.cargo/registry/index/rsproxy.cn-*`? I do...

准确术语来说,Rust 一般管理的是借用 (borrow),或者说引用,也就是 `&` 和 `&mut`。 至于 `*const` 和 `*mut`,它们就是所谓裸指针 (raw pointer)。 借用论本质而言到底还是一个指针,但是 Rust 对它有严格的约束。而对裸指针的约束就十分宽松了。 这里 `__switch` 要求的是接收指针。也许接收借用也是可以的,但既然这里都切换控制流,转换到汇编这种层次去了,Rust 编译器显然已经难以约束,所以还是用裸指针最好。

wx 群里其实有过两次讨论这个问题。应该确实是数组过大的问题,导致启动栈溢出了 多给几种解决方案吧,优先度依次降低: 1. 把 syscall_times 存在一个 `Vec` 中。因为 `heap_alloc` 中已经指定了 `global_allocator`,所以其实已经可以用堆了。 2. 在 `entry.asm` 里修改 `boot_stack` 的大小,本来应该是 `4096*16`,改成 `4096*32` 应该就可以。可能还需要把 `Cargo.toml` 里面的 `opt-level=0` 注释掉,启动较高等级的优化。 3. `ch3_taskinfo.rs` 里需要返回值是 `[u32;500]`,但你存在 TCB...