は、どのように、各パラメータがでなければなりません登録 x86-64マシンのsyscallsのプロトタイプはどこで確認していますか?ある
、、最終的に各パラメータが何を意味するのか、特定のシステムコールが期待するどのように多くのパラメータ
を知っていますか?man
alikeコマンドがありますか?
は、どのように、各パラメータがでなければなりません登録 x86-64マシンのsyscallsのプロトタイプはどこで確認していますか?ある
、、最終的に各パラメータが何を意味するのか、特定のシステムコールが期待するどのように多くのパラメータ
を知っていますか?man
alikeコマンドがありますか?
私が知っているシステムコールのマニュアルはありません。あなたがソースコードを掘り下げなければならないものです。アーチのシステムコールのヘッダファイルがあり
asmlinkage long sys_getresuid(uid_t __user *ruid, uid_t __user *euid, uid_t __user *suid);
asmlinkage long sys_getresgid(gid_t __user *rgid, gid_t __user *egid, gid_t __user *sgid);
asmlinkage long sys_getpgid(pid_t pid);
asmlinkage long sys_getpgrp(void);
asmlinkage long sys_getsid(pid_t pid);
asmlinkage long sys_getgroups(int gidsetsize, gid_t __user *grouplist);
:それは次のように、定義をconains
include/linux/syscalls.h
:それは引数を指定して試作したシステムコールの多くを持っているよう
このヘッダファイルには、便利です残りのシステムコールは、アーチに依存するものです:
arch/x86/include/asm/syscalls.h
(これらのファイルは2.6.32以降です。以前のバージョンのカーネルのファイル/ディレクトリ名が異なる場合があります)。
Linuxカーネルの内部はかなり頻繁に変更されることに注意してください。主要なカーネルバージョン間で安定したABIを維持する努力はあまりありません。したがって、あなたは現在実行しているカーネルのカーネルソースコードを見なければならず、他のカーネルバージョンでも自動的にコンパイルするとは思わないでしょう。
AFAIK 'syscalls.h'には、各システムコールの番号に関する情報だけが含まれており、どのレジスタにパラメータが入るのかに関する情報は含まれていません。 –
あなたは別のファイルを考えています。私はこのファイルのwhatsの例を使って答えを更新しました。 –
Linuxカーネルの内部は頻繁に変更されることがありますが、カーネルがユーザスペース(別名システムコール)用に提供するAPIは本当に安定しています。 – muixirt
も参照してください。What are the calling conventions for UNIX & Linux system calls on x86-64
あなたが探していることは、カーネルABIで、私は公式サイトを見つけることはできませんが、a blogは、このような情報でもあります。
のint 80hを呼び出しとx64のでは、それは次のとおりです。
value storage
syscall nr rax
arg 1 rdi
arg 2 rsi
arg 3 rdx
arg 4 r10
arg 5 r9
arg 6 r8
Linux man-pages project(もちろんC中心)
OSを指定してください。 –
@Alex、私はLinuxです。 –