minix を含む OS のコースを受講していますが、アドバイスが欲しいです。
ls -s
Linux と同じことを行う ように minix を変更する方法を見つけようとしています。
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 行です。
誰かがどこを見るべきか、または正しい場所を見ているかどうか、ヒントなどを教えてもらえますか。