open()
最近、Linuxカーネルでシステムコールがどのように実装されているかを知りたいと思いました。syscallテーブルを見ると、探している関数の名前がであることがsys_open()
わかったので、それを探しました。宣言は見つかりませんでしたが、最も近いのはでしdo_sys_open
たfs/open.c
。どういうわけかこの関数に変換されますか?私は何を逃した可能性がありますか?
質問する
1132 次
1 に答える
7
いいえ、do_sys_open
の実装ではありません。これはsys_open
単なる一般的なコードでopen
あり、openat
除外されています。
sys_
常に何かであるSyscall関数名は、面白いプリプロセッサマクロ(引数の数)SYSCALL_DEFINEn
によって生成されます。n
あなたが見ることができるように(非常に近いdo_sys_open
):
SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, umode_t, mode)
{
long ret;
....
これはopen
syscallのコードです。
于 2013-01-26T23:13:07.780 に答える