2

syscalls.hLinuxカーネルで定義されている関数の実装コードを見つけようとしています。たとえば、syscalls.hファイルに次の関数プロトタイプが表示されます

asmlinkage long sys_gethostname(char __user *name, int len);
asmlinkage long sys_sethostname(char __user *name, int len);
asmlinkage long sys_setdomainname(char __user *name, int len);
asmlinkage long sys_newuname(struct new_utsname __user *name);
asmlinkage long sys_uname(struct old_utsname __user *);
asmlinkage long sys_olduname(struct oldold_utsname __user *);

しかし、Linux ソース ディレクトリに実際の実装が見つかりません。私はsys_uname関数に関する実装に特に興味があります。Linuxソースツリーのどこで見つけることができるか教えてもらえますか? ubuntu 12.10 を使用しています。

4

2 に答える 2

1

それらは自動的に生成されます。(x86 の場合など) arch/x86/syscalls のコードを参照してください。特に sys_uname() では、syscall 番号と呼び出しプロセスのプロセッサ モードに応じて、実際にはいくつかの実装 (sys_olduname、sys_uname、sys_newuname) があることに注意してください。

于 2013-05-28T18:56:00.977 に答える