OSDN Git Service

(split) LDP: Update release pages
[linuxjm/LDP_man-pages.git] / release / man2 / _syscall.2
index 15837d7..b2a55af 100644 (file)
@@ -1,7 +1,7 @@
-.\"
 .\" Copyright (c) 1993 Michael Haardt (michael@moria.de),
 .\"   Fri Apr  2 11:32:09 MET DST 1993
 .\"
+.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
 .\" This is free documentation; you can redistribute it and/or
 .\" modify it under the terms of the GNU General Public License as
 .\" published by the Free Software Foundation; either version 2 of
@@ -18,9 +18,9 @@
 .\" GNU General Public License for more details.
 .\"
 .\" You should have received a copy of the GNU General Public
-.\" License along with this manual; if not, write to the Free
-.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
-.\" USA.
+.\" License along with this manual; if not, see
+.\" <http://www.gnu.org/licenses/>.
+.\" %%%LICENSE_END
 .\"
 .\" Tue Jul  6 12:42:46 MDT 1993 <dminer@nyx.cs.du.edu>
 .\" Added "Calling Directly" and supporting paragraphs
 .\" 2007-10-23 mtk: created as a new page, by taking the content
 .\" specific to the _syscall() macros from intro(2).
 .\"
-.\" Japanese Version Copyright (c) 2008  Akihiro MOTOKI
-.\"         all rights reserved.
-.\" Translated 2008-02-11, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
-.\" 
-.TH _SYSCALL 2 2007-12-19 "Linux" "Linux Programmer's Manual"
-.SH Ì¾Á°
-_syscall \- ¥é¥¤¥Ö¥é¥ê¤Î¥µ¥Ý¡¼¥È¤Ê¤·¤Ç¥·¥¹¥Æ¥à¥³¡¼¥ë¤òµ¯Æ°¤¹¤ë (ÀΤÎÊýË¡)
-.SH ½ñ¼°
-.B #include <linux/unistd.h>
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH _SYSCALL 2 2007\-12\-19 Linux "Linux Programmer's Manual"
+.SH 名前
+_syscall \- ライブラリのサポートなしでシステムコールを起動する (昔の方法)
+.SH 書式
+\fB#include <linux/unistd.h>\fP
 
 A _syscall macro
 
 desired system call
-.SH ÀâÌÀ
-¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ë´Ø¤·¤Æ¤½¤Î¥×¥í¥È¥¿¥¤¥×¤òÃΤ뤳¤È¤¬½ÅÍפǤ¢¤ë¡£
-°ú¤­¿ô¤Î¸Ä¿ô¡¢¤½¤ì¤é¤Î·¿¡¢ÊÖ¤êÃͤη¿¤òÃΤëɬÍפ¬¤¢¤ë¡£
-¼ÂºÝ¤Î»ÈÍѤˤ¢¤¿¤Ã¤Æ¤Ï¡¢¥·¥¹¥Æ¥à¥³¡¼¥ë¤ò¥·¥¹¥Æ¥à¤Ë¸Æ¤Ó½Ð¤·¤ä¤¹¤¯¤¹¤ë¤¿¤á¤Ë¡¢
-7 ¸Ä¤Î¥Þ¥¯¥í¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¡£¤³¤ì¤é¤Î¥Þ¥¯¥í¤Ï°Ê²¼¤Î·Á¤Ç¤¢¤ë¡£
+.SH 説明
+システムコールに関してそのプロトタイプを知ることが重要である。 引き数の個数、それらの型、返り値の型を知る必要がある。
+実際の使用にあたっては、システムコールをシステムに呼び出しやすくするために、 7 個のマクロが用意されている。これらのマクロは以下の形である。
 .sp
 .RS
-.RI _syscall X ( type , name , type1 , arg1 , type2 , arg2 ,...)
+_syscall\fIX\fP(\fItype\fP,\fIname\fP,\fItype1\fP,\fIarg1\fP,\fItype2\fP,\fIarg2\fP,...)
 .RE
 .PP
-¤³¤³¤Ç
+ここで
 .IP
-\fIX\fP ¤Ï 0¡Á6 ¤Ç¡¢¥·¥¹¥Æ¥à¥³¡¼¥ë¤¬¼è¤ë°ú¤­¿ô¤Î¸Ä¿ô¤Ç¤¢¤ë¡£
+\fIX\fP は 0〜6 で、システムコールが取る引き数の個数である。
 .IP
-\fItype\fP ¤Ï¥·¥¹¥Æ¥à¥³¡¼¥ë¤ÎÊÖ¤êÃͤη¿¤Ç¤¢¤ë¡£
+\fItype\fP はシステムコールの返り値の型である。
 .IP
-\fIname\fP ¤Ï¥·¥¹¥Æ¥à¥³¡¼¥ë¤Î̾Á°¤Ç¤¢¤ë¡£
+\fIname\fP はシステムコールの名前である。
 .IP
-\fItypeN\fP ¤Ï N ÈÖÌܤΰú¤­¿ô¤Î·¿¤Ç¤¢¤ë¡£
+\fItypeN\fP は N 番目の引き数の型である。
 .IP
-\fIargN\fP ¤Ï N ÈÖÌܤΰú¤­¿ô¤Î̾Á°¤Ç¤¢¤ë¡£
+\fIargN\fP は N 番目の引き数の名前である。
 .PP
-¤³¤ì¤é¤Î¥Þ¥¯¥í¤Ï¡¢»ØÄꤷ¤¿°ú¤­¿ô¤ò»ý¤Ä \fIname\fP ¤È¤¤¤¦Ì¾Á°¤Î´Ø¿ô¤òÀ¸À®¤¹¤ë¡£
-°ìÅÙ¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤ÎÃæ¤Ç _syscall() ¤ò¥¤¥ó¥¯¥ë¡¼¥É¤·¤Æ¤ª¤¯¤È¡¢
-¤½¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤ò \fIname\fP ¤È¤¤¤¦Ì¾Á°¤Ç¸Æ¤Ö¤³¤È¤¬¤Ç¤­¤ë¡£
-.SH ¥Õ¥¡¥¤¥ë
-.I /usr/include/linux/unistd.h
-.SH ½àµò
-¤³¤ì¤é¤Î¥Þ¥¯¥í¤Ï Linux ¸ÇÍ­¤Ç¤¢¤ê¡¢¤½¤Î»ÈÍѤÏÈó¿ä¾©¤Ç¤¢¤ë¡£
-.SH Ãí°Õ
-¥«¡¼¥Í¥ë 2.6.18 ¤¢¤¿¤ê¤«¤é¡¢_syscall ¥Þ¥¯¥í·²¤Ï¥æ¡¼¥¶¶õ´Ö¤ËÂФ·¤ÆÄ󶡤µ¤ì¤ë
-¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤«¤éºï½ü¤µ¤ì¤¿¡£Âå¤ï¤ê¤Ë
-.BR syscall (2)
-¤ò»ÈÍѤ¹¤ë¤³¤È¡£
-(¤¤¤¯¤Ä¤«¤Î¥¢¡¼¥­¥Æ¥¯¥Á¥ã¡¢Æäˠia64¡¢¤Ç¤Ï¡¢¤³¤ì¤Þ¤Ç _syscall ¥Þ¥¯¥í¤¬
-Ä󶡤µ¤ì¤¿¤³¤È¤Ï¤Ê¤¤¡£¤³¤Î¤è¤¦¤Ê¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤Ç¤Ï¡¢¾ï¤Ë
-.BR syscall (2)
-¤¬É¬ÍפǤ¢¤Ã¤¿¡£)
+これらのマクロは、指定した引き数を持つ \fIname\fP という名前の関数を生成する。 一度ソースファイルの中で _syscall()
+をインクルードしておくと、 そのシステムコールを \fIname\fP という名前で呼ぶことができる。
+.SH ファイル
+\fI/usr/include/linux/unistd.h\fP
+.SH 準拠
+これらのマクロは Linux 固有であり、その使用は非推奨である。
+.SH 注意
+カーネル 2.6.18 あたりから、_syscall マクロ群はユーザ空間に対して提供される ヘッダファイルから削除された。代わりに
+\fBsyscall\fP(2)  を使用すること。 (いくつかのアーキテクチャ、特に ia64、では、これまで _syscall マクロが
+提供されたことはない。このようなアーキテクチャでは、常に \fBsyscall\fP(2)  が必要であった。)
 
-_syscall() ¥Þ¥¯¥í¤Ï¥×¥í¥È¥¿¥¤¥×¤ò¡ÖÀ¸À®¤·¤Ê¤¤¡×¡£
-¥æ¡¼¥¶¤Ï¥×¥í¥È¥¿¥¤¥×¤ò¼«Ê¬¤Ç½ñ¤«¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤«¤â¤·¤ì¤Ê¤¤¡£
-¤È¤ê¤ï¤± C++ ¥æ¡¼¥¶¤Î¾ì¹ç¤Ï¤½¤¦¤Ç¤¢¤í¤¦¡£
+_syscall() マクロはプロトタイプを「生成しない」。 ユーザはプロトタイプを自分で書かなければならないかもしれない。 とりわけ C++
+ユーザの場合はそうであろう。
 
-¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï¡¢Àµ¤Î¥¨¥é¡¼¥³¡¼¥É¤Î¤ß¡¢¤Þ¤¿¤ÏÉé¤Î¥¨¥é¡¼¥³¡¼¥É¤Î¤ß¤òÊÖ¤¹¤è¤¦¤Ë
-Äê¤á¤é¤ì¤Æ¤¤¤ëÌõ¤Ç¤Ï¤Ê¤¤¡£¤½¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤¬¤É¤Î¤è¤¦¤Ê¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤¹¤«¤ò
-³Îǧ¤¹¤ë¤Ë¤Ï¡¢¤½¤Î¥½¡¼¥¹¥³¡¼¥É¤òÆɤàɬÍפ¬¤¢¤ë¡£¤¿¤¤¤Æ¤¤¤Î¾ì¹ç¤Ï¡¢É¸½à¤Î¥¨¥é¡¼
-¥³¡¼¥É¤òÉé¤Ë¤·¤¿¤â¤Î¤Ç¤¢¤ë (Î㤨¤Ð \-\fBEPERM\fP)¡£
-_syscall() ¥Þ¥¯¥í¤Ï¡¢¤½¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤ÎÊÖ¤êÃÍ \fIr\fP ¤¬Éé¤Ç¤Ê¤¤¾ì¹ç¡¢¤½¤ÎÃÍ
-¤ò¤½¤Î¤Þ¤ÞÊÖ¤¹¡£°ìÊý¡¢\fIr\fP ¤¬Éé¤Î¾ì¹ç¤Ë¤Ï¡¢ÊÑ¿ô
-.I errno
-¤Ë \-\fIr\fP ¤òÀßÄꤷ¡¢\-1 ¤òÊÖ¤¹¡£
-¥¨¥é¡¼¥³¡¼¥É¤Ë¤Ä¤¤¤Æ¤Ï
-.BR errno (3)
-¤ò»²¾È¡£
+システムコールは、正のエラーコードのみ、または負のエラーコードのみを返すように
+定められている訳ではない。そのシステムコールがどのようなエラーコードを返すかを
+確認するには、そのソースコードを読む必要がある。たいていの場合は、標準のエラー コードを負にしたものである (例えば \-\fBEPERM\fP)。
+_syscall() マクロは、そのシステムコールの返り値 \fIr\fP が負でない場合、その値 をそのまま返す。一方、\fIr\fP が負の場合には、変数
+\fIerrno\fP に \-\fIr\fP を設定し、\-1 を返す。 エラーコードについては \fBerrno\fP(3)  を参照。
 
-¥·¥¹¥Æ¥à¥³¡¼¥ë¤òÄêµÁ¤¹¤ëºÝ¡¢°ú¤­¿ô¤Î·¿¤ÏÃÍÅϤ· (by-value) ¤«¡¢
-(¹½Â¤ÂΤΤ褦¤Ë½¸¹çŪ¤Ê¥Ç¡¼¥¿¤Î¾ì¹ç¤Ï) ¥Ý¥¤¥ó¥¿ÅϤ· (by-pointer)
-¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
 .\" The preferred way to invoke system calls that glibc does not know
 .\" about yet is via
 .\" .BR syscall (2).
-.\" However, this mechanism can only be used if using a libc
+.\" However, this mechanism can be used only if using a libc
 .\" (such as glibc) that supports
 .\" .BR syscall (2),
 .\" and if the
@@ -117,7 +100,9 @@ _syscall() 
 .\" header file contains the required SYS_foo definition.
 .\" Otherwise, the use of a _syscall macro is required.
 .\"
-.SH Îã
+システムコールを定義する際、引き数の型は値渡し (by\-value) か、 (構造体のように集合的なデータの場合は) ポインタ渡し
+(by\-pointer)  でなければならない。
+.SH 例
 .nf
 #include <stdio.h>
 #include <stdlib.h>
@@ -127,8 +112,8 @@ _syscall() 
 
 _syscall1(int, sysinfo, struct sysinfo *, info);
 
-/* Note: nroff ¤Î¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤«¤éľÀÜ¥³¥Ô¡¼¤¹¤ëºÝ¤Ë¤Ï¡¢
-printf Ê¸Æâ¤Î;ʬ¤Ê¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤ò˺¤ì¤º¤Ëºï½ü¤¹¤ë¤è¤¦¤Ë¡£ */
+/* Note: nroff のソースファイルから直接コピーする際には、
+printf 文内の余分なバックスラッシュを忘れずに削除するように。 */
 
 int
 main(void)
@@ -137,11 +122,11 @@ main(void)
     int error;
 
     error = sysinfo(&s_info);
-    printf("code error = %d\\n", error);
-    printf("Uptime = %lds\\nLoad: 1 min %lu / 5 min %lu / 15 min %lu\\n"
-           "RAM: total %lu / free %lu / shared %lu\\n"
-           "Memory in buffers = %lu\\nSwap: total %lu / free %lu\\n"
-           "Number of processes = %d\\n",
+    printf("code error = %d\en", error);
+    printf("Uptime = %lds\enLoad: 1 min %lu / 5 min %lu / 15 min %lu\en"
+           "RAM: total %lu / free %lu / shared %lu\en"
+           "Memory in buffers = %lu\enSwap: total %lu / free %lu\en"
+           "Number of processes = %d\en",
            s_info.uptime, s_info.loads[0],
            s_info.loads[1], s_info.loads[2],
            s_info.totalram, s_info.freeram,
@@ -151,7 +136,7 @@ main(void)
     exit(EXIT_SUCCESS);
 }
 .fi
-.SS "Sample Output"
+.SS 出力例
 .nf
 code error = 0
 uptime = 502034s
@@ -161,7 +146,9 @@ Memory in buffers = 5066752
 Swap: total 27881472 / free 24698880
 Number of processes = 40
 .fi
-.SH ´ØÏ¢¹àÌÜ
-.BR intro (2),
-.BR syscall (2),
-.BR errno (3)
+.SH 関連項目
+\fBintro\fP(2), \fBsyscall\fP(2), \fBerrno\fP(3)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.52 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。