jklincn

Results 10 comments of jklincn

其他问题: 1. vfs.rs 中,VFile的方法定义中有一个 clear_cache,首先从代码上讲,这个方法没有被调用过,可以删去;其次从逻辑上来讲,VFile是虚拟文件,应该不能对文件系统块缓存进行操作。 2. layout.rs 中,长文件名目录项的 clear 方法似乎没有完成?它只有一行语句且被注释了,然而这个函数在 vfs 中 VFile 的 clear 中有被使用到

vfs.rs 中的 find_long_name 方法 ```rust for i in 0..order as usize { // 存入长名目录项位置了,第一个在栈顶 let pos = self.get_pos(offset + i); long_pos_vec.push(pos); } ``` 是否应该为 ```rust for i in 0..order as...

> It's a little close to detail. I can't remember whether it should work this way, but you can try it to prove yourself. simple-fat32 中对偏移量的设计应该都是以字节为单位?这里是搜索长文件名目录项时,最后生成VFile返回的过程,把所有长文件名目录项的位置进行保存,get_pos是获取文件中该偏移量的扇区号和偏移位置,因此这边偏移量的传入我觉得应该是最初的偏移量加上 `i * DIRENT_SZ` 以表示下一个长文件名目录项,而不是简单的...

make run 就可以在 qemu 模拟器上运行本章代码,下面的qemu-system-riscv64命令已经包含在makefile文件中了

您好,在内存布局中小节中有这样一句话:“将程序的起始物理地址调整为 0x80400000 ,三个应用程序都会被加载到这个物理地址上运行”。但我在更改起始物理地址之后发现程序仍可以正常运行,例如:BASE_ADDRESS = 0x80410000。我寻找过很多回答,可能是加载地址和链接地址的区别,user的linker.ld是链接文件,其中的 BASE_ADDRESS 只是链接基地址,告诉程序在编译时从哪个地址开始,如果代码是与位置无关的,那么这个值怎样变都不会对程序运行产生影响。而真正决定应用程序加载位置的应该是 batch.rs 中的 APP_BASE_ADDRESS ,这个值的改变会直接影响应用程序加载位置。 但随意修改 BASE_ADDRESS 的话,会导致 start_bss 和 end_bss 的值发生变化,从而在 clear_bss() 函数执行时对错误的区域进行初始化。在当前的程序中,如果除去 clear_bss() 函数,那么这个值是可以任意更改的。请问我这样理解是对的吗?

想问一下sbi.rs中的#![allow(unused)],尝试cargo build时会报error: an inner attribute is not permitted in this context,且编译器提示应改为#[allow(unused)],我字面理解这应该是允许变量未使用的一个宏,因此我改成了#[allow(unused)],可以正常build,是文章写错了吗

```rust pub fn sys_openat(dirfd: usize, path: &str, flags: u32, mode: u32) -> isize { syscall6( SYSCALL_OPENAT, [dirfd, path.as_ptr() as usize, flags as usize, mode as usize, 0, 0] ) }...

>在打开文件,对文件完成了读写操作后,还需要关闭文件,这样才让进程释放杯这个文件所占用的内核资源。 杯 -> 被

对于 error[E0463]: can't find crate for test 问题,可以将 rust-analyzer.check.allTargets 设置为 false。在设置界面修改或写入 setting.json 文件都可以。 另外,这是在 os 目录下有 .cargo/config 文件注明了 target,如果没有此文件,可能还需加入 target。 比如,"rust-analyzer.cargo.target": "riscv64imac-unknown-none-elf",

Hey! I also meet this problem. I can use VSCode to connect to WSL, but the speed is very slow. It takes about 40 seconds to open the first terminal....