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