私はmkdir
、カーネルのソースを見ることで、関数がどのように機能するかを理解しようとしています。これは、カーネル内部を理解し、さまざまな機能間を移動しようとする試みです。mkdir
で定義されていることを知っていsys/stat.h
ます。プロトタイプを見つけました:
/* Create a new directory named PATH, with permission bits MODE. */
extern int mkdir (__const char *__path, __mode_t __mode)
__THROW __nonnull ((1));
次に、この関数が実装されているCファイルを確認する必要があります。ソースディレクトリから、私は試しました
ack "int mkdir"
表示した
security/inode.c
103:static int mkdir(struct inode *dir, struct dentry *dentry, int mode)
tools/perf/util/util.c
4:int mkdir_p(char *path, mode_t mode)
tools/perf/util/util.h
259:int mkdir_p(char *path, mode_t mode);
しかし、それらのどれもの定義に一致しませんsys/stat.h
。
ご質問
- どのファイルに
mkdir
実装がありますか? - 上記のような関数定義で、どのファイルが実装されているかをどのように見つけることができますか?メソッドの定義と実装においてカーネルが従うパターンはありますか?
注:カーネル2.6.36-rc1を使用しています。