OSDN Git Service

Retire LDP man-pages repository
[linuxjm/LDP_man-pages.git] / draft / man2 / syscall.2
diff --git a/draft/man2/syscall.2 b/draft/man2/syscall.2
deleted file mode 100644 (file)
index 4a21cc1..0000000
+++ /dev/null
@@ -1,204 +0,0 @@
-.\" Copyright (c) 1980, 1991, 1993
-.\"    The Regents of the University of California.  All rights reserved.
-.\"
-.\" %%%LICENSE_START(BSD_4_CLAUSE_UCB)
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\"    notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\"    notice, this list of conditions and the following disclaimer in the
-.\"    documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\"    must display the following acknowledgement:
-.\"    This product includes software developed by the University of
-.\"    California, Berkeley and its contributors.
-.\" 4. Neither the name of the University nor the names of its contributors
-.\"    may be used to endorse or promote products derived from this software
-.\"    without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\" %%%LICENSE_END
-.\"
-.\"     @(#)syscall.2  8.1 (Berkeley) 6/16/93
-.\"
-.\"
-.\" 2002-03-20  Christoph Hellwig <hch@infradead.org>
-.\"    - adopted for Linux
-.\" 2015-01-17, Kees Cook <keescook@chromium.org>
-.\"    Added mips and arm64.
-.\"
-.\"*******************************************************************
-.\"
-.\" This file was generated with po4a. Translate the source file.
-.\"
-.\"*******************************************************************
-.\"
-.\" Japanese Version Copyright (c) 2002 Yuichi SATO
-.\"         all rights reserved.
-.\" Translated Tue Aug  6 03:43:25 JST 2002
-.\"         by Yuichi SATO <ysato@h4.dion.ne.jp>
-.\" Updated 2013-05-06, Akihiro MOTOKI <amotoki@gmail.com>
-.\" Updated 2013-07-24, Akihiro MOTOKI <amotoki@gmail.com>
-.\"
-.TH SYSCALL 2 2015\-01\-22 Linux "Linux Programmer's Manual"
-.SH 名前
-syscall \- 間接システムコール
-.SH 書式
-.nf
-\fB#define _GNU_SOURCE\fP         /* feature_test_macros(7) 参照 */
-\fB#include <unistd.h>\fP
-\fB#include <sys/syscall.h>   \fP/* SYS_xxx の定義用 */
-
-\fBlong syscall(long \fP\fInumber\fP\fB, ...);\fP
-.fi
-.SH 説明
-\fBsyscall\fP() は、システムコールを起動する小さなライブラリ関数で、 \fInumber\fP
-で指定されたアセンブリ言語インターフェースのシステムコールを、指定された引き数をつけて実行する。 \fBsyscall\fP() が役に立つのは、例えば C
-ライブラリにラッパー関数が存在しないシステムコールを呼び出したい場合である。
-
-\fBsyscall\fP() は、システムコールを行う前に CPU
-レジスターを保存し、システムコールから返った際にレジスターを復元し、エラーが発生した場合はシステムコールが返したエラーコードを \fBerrno\fP(3)
-に格納する。
-
-システムコールのシンボル定数は、ヘッダーファイル \fI<sys/syscall.h>\fP に書かれている。
-.SH 返り値
-返り値は呼び出されたシステムコールによって定義される。 一般に、返り値 0 は成功を表す。 \-1 はエラーを表し、エラーコードは \fIerrno\fP
-に入れられる。
-.SH 注意
-\fBsyscall\fP()  は 4BSD で最初に登場した。
-.SS アーキテクチャー固有の要件
-各アーキテクチャーの ABI には、 システムコールの引き数のカーネルへの渡し方に関する独自の要件がある。
-(ほとんどのシステムコールのように) glibc ラッパー関数があるシステムコールでは、 glibc
-が詳細を処理し、アーキテクチャーに応じた方法で引き数が適切なレジスターにコピーされる。 しかし、 システムコールを呼び出すのに \fBsyscall\fP()
-を使う場合には、 呼び出し側でアーキテクチャー依存の詳細を処理しなければならない場合がある。 これはいくつかの 32
-ビットアーキテクチャーでは非常によくあることだ。
-
-例えば、ARM アーキテクチャーの Embedded ABI (EABI) では、 (\fIlong long\fP などの) 64
-ビット値は偶数番地のレジスターのペアに境界があっていなければならない。したがって、 glibc が提供するラッパー関数ではなく \fBsyscall\fP()
-を使う場合には、 \fBreadahead\fP() システムコールは ARM アーキテクチャーの EABI では以下のようにして起動されることになる。
-
-.in +4n
-.nf
-syscall(SYS_readahead, fd, 0,
-        (unsigned int) (offset >> 32),
-        (unsigned int) (offset & 0xFFFFFFFF),
-        count);
-.fi
-.in
-.PP
-オフセット引き数は 64 ビットで、最初の引き数 (\fIfd\fP) は \fIr0\fP で渡されるので、呼び出し側では手動で 64
-ビット値を分割して境界を合わせて、 64 ビット値が \fIr2\fP/\fIr3\fP レジスターペアで渡されるようにしなければならない。このため、 \fIr1\fP
-(2 番目の引数 0) としてダミー値を挿入している。
-
-.\" Mike Frysinger: this issue ends up forcing MIPS
-.\" O32 to take 7 arguments to syscall()
-同様のことが、 MIPS の O32 ABI、 PowerPC の 32 ビット ABI や Xtensa でも起こりうる。
-
-次のシステムコールに影響がある: \fBfadvise64_64\fP(2), \fBftruncate64\fP(2), \fBposix_fadvise\fP(2),
-\fBpread64\fP(2), \fBpwrite64\fP(2), \fBreadahead\fP(2), \fBsync_file_range\fP(2),
-\fBtruncate64\fP(2)
-.SS アーキテクチャー毎の呼び出し規約
-各アーキテクチャーには、それぞれ独自のシステムコール起動方法とカーネルへの引き数の渡し方がある。 各種のアーキテクチャーの詳細を以下の 2
-つの表にまとめる。
-
-最初の表は、 カーネルモードに遷移するのに使用される命令、 システムコール番号を示すのに使用されるレジスター、
-システムコールの結果を返すのに使用されるレジスターの一覧である (なお、 ここに載っているカーネルモードに遷移するのに使用される命令は、
-カーネルモードに遷移する最速や最善の方法でない場合もあるので、 \fBvdso\fP(7) を参照する必要があるかもしれない)。
-.if  t \{\
-.ft CW
-\}
-.TS
-l l1 l l1 l.
-arch/ABI       instruction     syscall #       retval  Notes
-_
-arm/OABI       swi NR  \-      a1      NR はシステムコール番号
-arm/EABI       swi 0x0 r7      r0
-arm64  svc #0  x8      x0
-blackfin       excpt 0x0       P0      R0
-i386   int $0x80       eax     eax
-ia64   break 0x100000  r15     r8      下記参照
-mips   syscall v0      v0      下記参照
-parisc ble 0x100(%sr2, %r0)    r20     r28
-s390   svc 0   r1      r2      下記参照
-s390   svc 0   r1      r2      下記参照
-sparc/32       t 0x10  g1      o0
-sparc/64       t 0x6d  g1      o0
-x86_64 syscall rax     rax
-.TE
-.PP
-s390 と s390x では、 NR (システムコール番号) が 256 未満の場合 "svc NR" で NR が直接渡される場合がある。
-
-少ないがいくつかのアーキテクチャーでは、 システムコールの失敗を示す単純な真偽値がレジスターを使って通知される。この用途に ia64 は \fIr10\fP
-を使用し、 mips は \fIa3\fP を使用する。
-.if  t \{\
-.in
-.ft P
-\}
-.PP
-2 つ目の表は、システムコールの引き数を渡すのに使用されるレジスターの一覧である。
-.if  t \{\
-.ft CW
-\}
-.TS
-l l2 l2 l2 l2 l2 l2 l2 l.
-arch/ABI       arg1    arg2    arg3    arg4    arg5    arg6    arg7    備考
-_
-arm/OABI       a1      a2      a3      a4      v1      v2      v3
-arm/EABI       r0      r1      r2      r3      r4      r5      r6
-arm64  x0      x1      x2      x3      x4      x5      \-
-blackfin       R0      R1      R2      R3      R4      R5      \-
-i386   ebx     ecx     edx     esi     edi     ebp     \-
-ia64   out0    out1    out2    out3    out4    out5    \-
-mips/o32       a0      a1      a2      a3      \-      \-      \-      下記参照
-mips/n32,64    a0      a1      a2      a3      a4      a5      \-
-parisc r26     r25     r24     r23     r22     r21     \-
-s390   r2      r3      r4      r5      r6      r7      \-
-s390x  r2      r3      r4      r5      r6      r7      \-
-sparc/32       o0      o1      o2      o3      o4      o5      \-
-sparc/64       o0      o1      o2      o3      o4      o5      \-
-x86_64 rdi     rsi     rdx     r10     r8      r9      \-
-.TE
-.PP
-mips/o32 のシステムコールの規約では、 ユーザースタックに引き数を 5 個から 8 個渡す。
-.if  t \{\
-.in
-.ft P
-\}
-.PP
-これらの表にはすべての呼び出し規約が記載されているわけではない点に注意すること \(em
-アーキテクチャーによっては、ここに記載されていない他のレジスターが見境なく上書きされる場合もある。
-.SH 例
-.nf
-#define _GNU_SOURCE
-#include <unistd.h>
-#include <sys/syscall.h>
-#include <sys/types.h>
-#include <signal.h>
-
-int
-main(int argc, char *argv[])
-{
-    pid_t tid;
-
-    tid = syscall(SYS_gettid);
-    tid = syscall(SYS_tgkill, getpid(), tid, SIGHUP);
-}
-.fi
-.SH 関連項目
-\fB_syscall\fP(2), \fBintro\fP(2), \fBsyscalls\fP(2), \fBerrno\fP(3), \fBvdso\fP(7)
-.SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部
-である。プロジェクトの説明とバグ報告に関する情報は
-http://www.kernel.org/doc/man\-pages/ に書かれている。