熟悉MIPS架构,知道MIPS有kseg0、kseg1等内存段。这决定了该段是否可以被缓存或映射。例如,您应该将一些 I/O 设备(如 UART)定位到未缓存的段。
但是我在 RISCV arch 中没有找到任何相关的东西。那么RISCV OS如何知道地址是否应该被映射呢?
顺便说一句:我知道 satp CSR 中的值描述了翻译模式。当操作系统运行时,该值必须设置为“Bare(disabled MMU)”以外的值,以便操作系统可以支持虚拟内存。那么如果CPU访问UART地址,satp中的值仍然不是“Bare”?但应该是“Bare”吧?
在 C 中,我可以使用rewindback to start,但我没有在 Rust 中找到类似的方法。
我想打开一个已经存在的文件,让文件指针回到起点,往里面写新词,覆盖旧词。
但是现在我只能在原始文件的最后一行之后写一些东西,并且不知道如何更改文件指针。
我知道 rust 有一个板条箱libc::rewind,但如何使用它,或任何其他方式?