OSDN Git Service

(split) LDP: Release pages for LDP v3.39.
[linuxjm/LDP_man-pages.git] / release / man3 / makecontext.3
index 6d34e47..91624a1 100644 (file)
@@ -1,3 +1,4 @@
+
 .\" Copyright (C) 2001 Andries Brouwer (aeb@cwi.nl)
 .\" and Copyright (C) 2006 Michael Kerrisk <mtk.manpages@gmail.com>
 .\"
 .\" the source, must acknowledge the copyright and authors of this work.
 .\" 2006-08-02, mtk, Added example program
 .\"
-.\" Japanese Version Copyright (c) 2001 NAKANO Takeo all rights reserved.
-.\" Translated Sat Dec 15 2001 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
-.\" Updated 2008-12-24, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v3.15
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.TH MAKECONTEXT 3 2009-03-31 "GNU" "Linux Programmer's Manual"
+.\"*******************************************************************
+.TH MAKECONTEXT 3 2009\-03\-31 GNU "Linux Programmer's Manual"
 .SH 名前
 makecontext, swapcontext \- ユーザコンテキストを操作する
 .SH 書式
-.B #include <ucontext.h>
+\fB#include <ucontext.h>\fP
 .sp
-.BI "void makecontext(ucontext_t *" ucp ", void (*" func )(),
-.BI "int " argc ", ...);"
+\fBvoid makecontext(ucontext_t *\fP\fIucp\fP\fB, void (*\fP\fIfunc\fP\fB)(),\fP \fBint
+\fP\fIargc\fP\fB, ...);\fP
 .sp
-.BI "int swapcontext(ucontext_t *" oucp ", ucontext_t *" ucp );
+\fBint swapcontext(ucontext_t *\fP\fIoucp\fP\fB, ucontext_t *\fP\fIucp\fP\fB);\fP
 .SH 説明
-System V 的な環境では、
-\fBmcontext_t\fP および \fBucontext_t\fP という 2 つの型と、
-.BR getcontext (2),
-.BR setcontext (2),
-.BR makecontext (),
-.BR swapcontext ()
-という 4 つの関数が
-.I <ucontext.h>
-で定義されており、あるプロセス内部で制御下にある複数のスレッド間で、
+System V 的な環境では、 \fBmcontext_t\fP および \fBucontext_t\fP という 2 つの型と、
+\fBgetcontext\fP(2), \fBsetcontext\fP(2), \fBmakecontext\fP(), \fBswapcontext\fP()  という
+4 つの関数が \fI<ucontext.h>\fP で定義されており、あるプロセス内部で制御下にある複数のスレッド間で、
 ユーザレベルのコンテキスト切替えができるようになっている。
 .LP
-これらの型と、最初の 2 つの関数については、
-.BR getcontext (2)
-を参照のこと。
+これらの型と、最初の 2 つの関数については、 \fBgetcontext\fP(2)  を参照のこと。
 .LP
-.BR makecontext ()
-関数は、ポインタ \fIucp\fP が指すコンテキストを変更する
-(\fIucp\fP は以前の
-.BR getcontext (2)
-呼び出しで得られたものである)。
-.BR makecontext ()
-を起動する前には、呼び出し者は、このコンテキスト用に
-新しいスタックを確保し、そのアドレスを \fIucp\->uc_stack\fP に代入し、
-さらに後継のコンテキストを定義し、そのアドレスを \fIucp\->uc_link\fP に
-代入しなければならない。
+\fBmakecontext\fP()  関数は、ポインタ \fIucp\fP が指すコンテキストを変更する (\fIucp\fP は以前の
+\fBgetcontext\fP(2)  呼び出しで得られたものである)。 \fBmakecontext\fP()
+を起動する前には、呼び出し者は、このコンテキスト用に 新しいスタックを確保し、そのアドレスを \fIucp\->uc_stack\fP に代入し、
+さらに後継のコンテキストを定義し、そのアドレスを \fIucp\->uc_link\fP に 代入しなければならない。
 
-このコンテキストが将来
-.RB ( setcontext (2)
-または
-.BR swapcontext ()
-によって)
-有効にされると、関数 \fIfunc\fP が呼ばれ、
-引き数として
-.I argc
-以降の整数
-.RI ( int )
-引き数の列が渡される。
-呼び出し者は
-.I argc
-にこれらの引き数の個数を指定しなければならない。
-この関数が戻ると、後継のコンテキストが有効になる。
-後継コンテキストのポインタが NULL の場合、そのスレッドが終了する。
+このコンテキストが将来 (\fBsetcontext\fP(2)  または \fBswapcontext\fP()  によって)  有効にされると、関数
+\fIfunc\fP が呼ばれ、 引き数として \fIargc\fP 以降の整数 (\fIint\fP)  引き数の列が渡される。 呼び出し者は \fIargc\fP
+にこれらの引き数の個数を指定しなければならない。 この関数が戻ると、後継のコンテキストが有効になる。 後継コンテキストのポインタが NULL
+の場合、そのスレッドが終了する。
 .LP
-.BR swapcontext ()
-関数は現在のコンテキストを
-ポインタ \fIoucp\fP が指す構造体に保存し、
-ポインタ \fIucp\fP が指すコンテキストを有効にする。
+\fBswapcontext\fP()  関数は現在のコンテキストを ポインタ \fIoucp\fP が指す構造体に保存し、 ポインタ \fIucp\fP
+が指すコンテキストを有効にする。
 .SH 返り値
-成功すると、
-.BR swapcontext ()
-は返らない
-(しかし後に \fIoucp\fP が有効になった場合には返ることがある。
-このときには
-.BR swapcontext ()
-は 0 を返すように見える。)
-失敗すると、
-.BR swapcontext ()
-は \-1 を返し、
+成功すると、 \fBswapcontext\fP()  は返らない (しかし後に \fIoucp\fP が有効になった場合には返ることがある。 このときには
+\fBswapcontext\fP()  は 0 を返すように見える。)  失敗すると、 \fBswapcontext\fP()  は \-1 を返し、
 \fIerrno\fP をエラーに応じて設定する。
 .SH エラー
-.TP
-.B ENOMEM
+.TP 
+\fBENOMEM\fP
 スタックに割り当てる空間が残っていない。
 .SH バージョン
-.BR makecontext ()
-と
-.BR swapcontext ()
-は、バージョン 2.1 以降の glibc で提供されている。
+\fBmakecontext\fP()  と \fBswapcontext\fP()  は、バージョン 2.1 以降の glibc で提供されている。
 .SH 準拠
-SUSv2, POSIX.1-2001.
-POSIX.1-2008 では、移植性の問題から
-.BR makecontext ()
-と
-.BR swapcontext ()
-の仕様が削除されている。
-代わりに、アプリケーションを POSIX スレッドを使って書き直すことが
-推奨されている。
+SUSv2, POSIX.1\-2001.  POSIX.1\-2008 では、移植性の問題から \fBmakecontext\fP()  と
+\fBswapcontext\fP()  の仕様が削除されている。 代わりに、アプリケーションを POSIX スレッドを使って書き直すことが 推奨されている。
 .SH 注意
-\fIucp\->uc_stack\fP の解釈は
-.BR sigaltstack (2)
-の場合と同じである。
-すなわちこの構造体には、
-スタックとして用いられるメモリ領域の開始アドレスと長さが含まれ、
-これはスタックが伸びる方向がどちらであるかには関係しない。
+\fIucp\->uc_stack\fP の解釈は \fBsigaltstack\fP(2)  の場合と同じである。 すなわちこの構造体には、
+スタックとして用いられるメモリ領域の開始アドレスと長さが含まれ、 これはスタックが伸びる方向がどちらであるかには関係しない。
 したがって、ユーザプログラムはこの件については心配しなくてよい。
 
-.I int
-とポインタ型が同じ大きさであるアーキテクチャでは
-(x86-32 はその例であり、両方の型とも 32 ビットである)、
-.BR makecontext ()
-の
-.I argc
-以降の引き数としてポインタを渡してもうまく動くかもしれない。
-しかしながら、このようにすると、移植性は保証されず、
-標準に従えば動作は未定義であり、ポインタが
-.I int
-よりも大きいアーキテクチャでは正しく動作しないことだろう。
-それにも関わらず、バージョン 2.8 以降の glibc では、
-.BR makecontext ()
-に変更が行われ、(x86-64 などの) いくつかの 64 ビットアーキテクチャで
+\fIint\fP とポインタ型が同じ大きさであるアーキテクチャでは (x86\-32 はその例であり、両方の型とも 32 ビットである)、
+\fBmakecontext\fP()  の \fIargc\fP 以降の引き数としてポインタを渡してもうまく動くかもしれない。
+しかしながら、このようにすると、移植性は保証されず、 標準に従えば動作は未定義であり、ポインタが \fIint\fP
+よりも大きいアーキテクチャでは正しく動作しないことだろう。 それにも関わらず、バージョン 2.8 以降の glibc では、
+\fBmakecontext\fP()  に変更が行われ、(x86\-64 などの) いくつかの 64 ビットアーキテクチャで
 引き数としてポインタを渡すことができるようになっている。
 .SH 例
 .PP
-以下のサンプル・プログラムは、
-.BR getcontext (2),
-.BR makecontext (),
-.BR swapcontext ()
-の使用方法の例を示すものである。
-このプログラムを実行すると、以下のような出力が得られる:
+以下のサンプル・プログラムは、 \fBgetcontext\fP(2), \fBmakecontext\fP(), \fBswapcontext\fP()
+の使用方法の例を示すものである。 このプログラムを実行すると、以下のような出力が得られる:
 .in +4n
 .nf
 
-.RB "$" " ./a.out"
+$\fB ./a.out\fP
 main: swapcontext(&uctx_main, &uctx_func2)
 func2: started
 func2: swapcontext(&uctx_func2, &uctx_func1)
@@ -169,27 +109,27 @@ main: exiting
 
 static ucontext_t uctx_main, uctx_func1, uctx_func2;
 
-#define handle_error(msg) \\
+#define handle_error(msg) \e
     do { perror(msg); exit(EXIT_FAILURE); } while (0)
 
 static void
 func1(void)
 {
-    printf("func1: started\\n");
-    printf("func1: swapcontext(&uctx_func1, &uctx_func2)\\n");
+    printf("func1: started\en");
+    printf("func1: swapcontext(&uctx_func1, &uctx_func2)\en");
     if (swapcontext(&uctx_func1, &uctx_func2) == \-1)
         handle_error("swapcontext");
-    printf("func1: returning\\n");
+    printf("func1: returning\en");
 }
 
 static void
 func2(void)
 {
-    printf("func2: started\\n");
-    printf("func2: swapcontext(&uctx_func2, &uctx_func1)\\n");
+    printf("func2: started\en");
+    printf("func2: swapcontext(&uctx_func2, &uctx_func1)\en");
     if (swapcontext(&uctx_func2, &uctx_func1) == \-1)
         handle_error("swapcontext");
-    printf("func2: returning\\n");
+    printf("func2: returning\en");
 }
 
 int
@@ -213,17 +153,14 @@ main(int argc, char *argv[])
     uctx_func2.uc_link = (argc > 1) ? NULL : &uctx_func1;
     makecontext(&uctx_func2, func2, 0);
 
-    printf("main: swapcontext(&uctx_main, &uctx_func2)\\n");
+    printf("main: swapcontext(&uctx_main, &uctx_func2)\en");
     if (swapcontext(&uctx_main, &uctx_func2) == \-1)
         handle_error("swapcontext");
 
-    printf("main: exiting\\n");
+    printf("main: exiting\en");
     exit(EXIT_SUCCESS);
 }
 .fi
 .SH 関連項目
-.BR getcontext (2),
-.BR sigaction (2),
-.BR sigaltstack (2),
-.BR sigprocmask (2),
-.BR sigsetjmp (3)
+\fBgetcontext\fP(2), \fBsigaction\fP(2), \fBsigaltstack\fP(2), \fBsigprocmask\fP(2),
+\fBsigsetjmp\fP(3)