Unix バージョン 6 の最新の実装であるxv6で少し遊んでいます。
私の最初のハックでは、単純な syscall を実装したかったのgetcwd
ですが、どのレベルの抽象化を使用すればよいかについて少し迷っています。
struct file
インターフェイスを使用する必要がありますか?- それとも
struct inode
インターフェイス? - 重要なのは、純粋にユーザーランドに実装することさえできるようです。
struct inode
私は操作でそれを実装し始めました。私の素朴な考えは、 を取得しproc->cwd
、次にreadi()
その 2 番目のエントリ ( ..
) を取得し、それをスキャンして前inum
の を取得する、というように、ルートに到達するまで再帰的に繰り返すというものでした。
パフォーマンスはあまり高くないようですが、最初のハックには適しています。
私の問題は、 s で取得した sからfs.c:iget()
a を取得する必要があることです。私はそれが static で宣言されていないことに気付きましたが、これは私を少し悩ませますが、その理由を見つけることができません。struct inode
inum
dirent
iget()
fs.c
defs.h
これが私の質問です。iget()
カーネルの残りの部分から故意に隠されているのはなぜですか?