open

man 2 open で見れるやつ。テキストによると

カーネルが呼び出しエントリポイントを決定する方法を理解するには、fs/open.c の sys_open() を調べてみよう。

とある。こりゃまたハードル高い事を仰せでらっしゃる。
ええと

asmlinkage long sys_open(const char __user *filename, int flags, int mode)

から

long do_sys_open(int dfd, const char __user *filename, int flags, int mode)

が呼ばれてさらにその中で

static struct file *do_filp_open(int dfd, const char *filename, int flags,
				 int mode)

が呼ばれる。ここまでは open.c の中の世界??
で、ここから namei.c の

int open_namei(int dfd, const char *pathname, int flag,
		int mode, struct nameidata *nd)

がナニ。ココがポイントな模様。

this is in fact almost the whole open-routine.

とありますな。結構強敵そげ。とりあえずデバドラ云々の前に寄り道する価値はありそげ。ちなみに LKHJ のポインタは以下

ちょっと平日は微妙。

わしが持ってる詳解 Linux カーネルの 12.4 パスの検索以降に記述がある模様ですが、2.6 な実装とは微妙な違いがある模様。あと open() についても 12.5.1 に記述あり。
カギは inode ??