我正在学习涉及 minix 的操作系统课程,我想要一些建议。
我试图弄清楚如何修改 minix 以便它ls -s
可以做与 linux 中相同的事情。
我知道虽然 minix 和 linuxls -s
很相似,但是当一个文件是故意使用 :dd of=XXXX bs=4096 count=1 seek=5
时,linux 会显示文件大小为 4 个块,而 minix 将显示 24 个块。
我理解为什么会发生这种情况,因为与 minix 不同,linux 识别有 20 个空块,所以它报告它的逻辑大小,忽略空块。
我一直在想从哪里开始,我的讲师指给servers/fs/stadir.c
我看,所以我查了一下课程。
我认为相关的唯一部分(涉及 st_size)是:
statbuf.st_size = rip->i_size;
if (rip->i_pipe == I_PIPE) {
statbuf.st_mode &= ~I_REGULAR; /* wipe out I_REGULAR bit for pipes */
if (fil_ptr != NIL_FILP && fil_ptr->filp_mode & R_BIT)
statbuf.st_size -= fil_ptr->filp_pos;
}
这是 minix 源代码的第 27700-27706 行。
有人可以给我提示在哪里看,或者如果我在看正确的地方,提示或其他东西。