SYSCALL(2)

名称
syscall, __syscall - 間接的なシステムコール

ライブラリ
libc

書式
<sys/syscall.h> <unistd.h> int syscall(int number, ...) off_t __syscall(quad_t number, ...)

解説
syscall() は、指定した number を持つアセンブリ言語インタフェースのシステムコールを、 指定した引数で実行します。 システムコールのシンボリック定数は、ヘッダファイル <sys/syscall.h> にあります。 __syscall() は、1 つ以上のパラメータが 64 ビット引数で、 引数のアラインメントが正しいことを保証する場合に使用してください。 このシステムコールは、C ライブラリにエントリがない 新しいシステムコールをテストする場合に有用です。

戻り値
戻り値は、呼び出すシステムコールで定義されています。 一般的に 0 は正常に完了したことを示します。 -1 はエラーを表わし、エラーコードが errno に設定されます。

バグ
pipe(2) のように、複数の戻り値があるシステムコールを シミュレートする方法はありません。

歴史
syscall() 関数呼び出しは、 4.0BSD で登場しました。