OSDN Git Service

長音記号の修正を release に反映
[linuxjm/LDP_man-pages.git] / release / man3 / makecontext.3
index d4a17aa..a6ff395 100644 (file)
 .\" 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
 .\"
-.TH MAKECONTEXT 3 2013\-02\-12 GNU "Linux Programmer's Manual"
+.TH MAKECONTEXT 3 2014\-05\-28 GNU "Linux Programmer's Manual"
 .SH 名前
-makecontext, swapcontext \- ユーザコンテキストを操作する
+makecontext, swapcontext \- ã\83¦ã\83¼ã\82¶ã\83¼ã\82³ã\83³ã\83\86ã\82­ã\82¹ã\83\88ã\82\92æ\93\8dä½\9cã\81\99ã\82\8b
 .SH 書式
 \fB#include <ucontext.h>\fP
 .sp
 \fBvoid makecontext(ucontext_t *\fP\fIucp\fP\fB, void (*\fP\fIfunc\fP\fB)(),\fP \fBint
 \fP\fIargc\fP\fB, ...);\fP
 .sp
-\fBint swapcontext(ucontext_t *\fP\fIoucp\fP\fB, ucontext_t *\fP\fIucp\fP\fB);\fP
+\fBint swapcontext(ucontext_t *\fP\fIoucp\fP\fB, const ucontext_t *\fP\fIucp\fP\fB);\fP
 .SH 説明
 System V 的な環境では、 \fBmcontext_t\fP および \fBucontext_t\fP という 2 つの型と、
 \fBgetcontext\fP(3), \fBsetcontext\fP(3), \fBmakecontext\fP(), \fBswapcontext\fP()  という
 4 つの関数が \fI<ucontext.h>\fP で定義されており、あるプロセス内部で制御下にある複数のスレッド間で、
-ユーザレベルのコンテキスト切替えができるようになっている。
\83¦ã\83¼ã\82¶ã\83¼ã\83¬ã\83\99ã\83«ã\81®ã\82³ã\83³ã\83\86ã\82­ã\82¹ã\83\88å\88\87æ\9b¿ã\81\88ã\81\8cã\81§ã\81\8dã\82\8bã\82\88ã\81\86ã\81«ã\81ªã\81£ã\81¦ã\81\84ã\82\8bã\80\82
 .LP
 これらの型と、最初の 2 つの関数については、 \fBgetcontext\fP(3) を参照のこと。
 .LP
-\fBmakecontext\fP()  関数は、ポインタ \fIucp\fP が指すコンテキストを変更する (\fIucp\fP は以前の
+\fBmakecontext\fP()  関数は、ポインタ \fIucp\fP が指すコンテキストを変更する (\fIucp\fP は以前の
 \fBgetcontext\fP(3)  呼び出しで得られたものである)。 \fBmakecontext\fP()
 を起動する前には、呼び出し者は、このコンテキスト用に 新しいスタックを確保し、そのアドレスを \fIucp\->uc_stack\fP に代入し、
 さらに後継のコンテキストを定義し、そのアドレスを \fIucp\->uc_link\fP に 代入しなければならない。
 
 このコンテキストが将来 (\fBsetcontext\fP(3)  または \fBswapcontext\fP()  によって)  有効にされると、関数
 \fIfunc\fP が呼ばれ、 引き数として \fIargc\fP 以降の整数 (\fIint\fP)  引き数の列が渡される。 呼び出し者は \fIargc\fP
-にこれらの引き数の個数を指定しなければならない。 この関数が戻ると、後継のコンテキストが有効になる。 後継コンテキストのポインタが NULL
\81«ã\81\93ã\82\8cã\82\89ã\81®å¼\95ã\81\8dæ\95°ã\81®å\80\8bæ\95°ã\82\92æ\8c\87å®\9aã\81\97ã\81ªã\81\91ã\82\8cã\81°ã\81ªã\82\89ã\81ªã\81\84ã\80\82 ã\81\93ã\81®é\96¢æ\95°ã\81\8cæ\88»ã\82\8bã\81¨ã\80\81å¾\8cç¶\99ã\81®ã\82³ã\83³ã\83\86ã\82­ã\82¹ã\83\88ã\81\8cæ\9c\89å\8a¹ã\81«ã\81ªã\82\8bã\80\82 å¾\8cç¶\99ã\82³ã\83³ã\83\86ã\82­ã\82¹ã\83\88ã\81®ã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\81\8c NULL
 の場合、そのスレッドが終了する。
 .LP
-\fBswapcontext\fP()  関数は現在のコンテキストを ポインタ \fIoucp\fP が指す構造体に保存し、 ポインタ \fIucp\fP
+\fBswapcontext\fP()  関数は現在のコンテキストを ポインター \fIoucp\fP が指す構造体に保存し、 ポインター \fIucp\fP
 が指すコンテキストを有効にする。
 .SH 返り値
 成功すると、 \fBswapcontext\fP()  は返らない (しかし後に \fIoucp\fP が有効になった場合には返ることがある。 このときには
@@ -76,23 +76,26 @@ System V 的な環境では、 \fBmcontext_t\fP および \fBucontext_t\fP と
 スタックに割り当てる空間が残っていない。
 .SH バージョン
 \fBmakecontext\fP()  と \fBswapcontext\fP()  は、バージョン 2.1 以降の glibc で提供されている。
+.SH 属性
+.SS "マルチスレッディング (pthreads(7) 参照)"
+関数 \fBmakecontext\fP() と \fBswapcontext\fP() はスレッドセーフである。
 .SH 準拠
 SUSv2, POSIX.1\-2001.  POSIX.1\-2008 では、移植性の問題から \fBmakecontext\fP()  と
 \fBswapcontext\fP()  の仕様が削除されている。 代わりに、アプリケーションを POSIX スレッドを使って書き直すことが 推奨されている。
 .SH 注意
 \fIucp\->uc_stack\fP の解釈は \fBsigaltstack\fP(2)  の場合と同じである。 すなわちこの構造体には、
-スタックとして用いられるメモリ領域の開始アドレスと長さが含まれ、 これはスタックが伸びる方向がどちらであるかには関係しない。
-したがって、ユーザプログラムはこの件については心配しなくてよい。
+スタックとして用いられるメモリ領域の開始アドレスと長さが含まれ、 これはスタックが伸びる方向がどちらであるかには関係しない。
\81\97ã\81\9fã\81\8cã\81£ã\81¦ã\80\81ã\83¦ã\83¼ã\82¶ã\83¼ã\83\97ã\83­ã\82°ã\83©ã\83 ã\81¯ã\81\93ã\81®ä»¶ã\81«ã\81¤ã\81\84ã\81¦ã\81¯å¿\83é\85\8dã\81\97ã\81ªã\81\8fã\81¦ã\82\88ã\81\84ã\80\82
 
-\fIint\fP とポインタ型が同じ大きさであるアーキテクチャでは (x86\-32 はその例であり、両方の型とも 32 ビットである)、
-\fBmakecontext\fP()  の \fIargc\fP 以降の引き数としてポインタを渡してもうまく動くかもしれない。
-しかしながら、このようにすると、移植性は保証されず、 標準に従えば動作は未定義であり、ポインタが \fIint\fP
-よりも大きいアーキテクチャでは正しく動作しないことだろう。 それにも関わらず、バージョン 2.8 以降の glibc では、
-\fBmakecontext\fP()  に変更が行われ、(x86\-64 などの) いくつかの 64 ビットアーキテクチャで
-引き数としてポインタを渡すことができるようになっている。
+\fIint\fP とポインター型が同じ大きさであるアーキテクチャーでは (x86\-32 はその例であり、両方の型とも 32 ビットである)、
+\fBmakecontext\fP()  ã\81® \fIargc\fP ä»¥é\99\8dã\81®å¼\95ã\81\8dæ\95°ã\81¨ã\81\97ã\81¦ã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\82\92渡ã\81\97ã\81¦ã\82\82ã\81\86ã\81¾ã\81\8få\8b\95ã\81\8fã\81\8bã\82\82ã\81\97ã\82\8cã\81ªã\81\84ã\80\82
\81\97ã\81\8bã\81\97ã\81ªã\81\8cã\82\89ã\80\81ã\81\93ã\81®ã\82\88ã\81\86ã\81«ã\81\99ã\82\8bã\81¨ã\80\81移æ¤\8dæ\80§ã\81¯ä¿\9d証ã\81\95ã\82\8cã\81\9aã\80\81 æ¨\99æº\96ã\81«å¾\93ã\81\88ã\81°å\8b\95ä½\9cã\81¯æ\9cªå®\9a義ã\81§ã\81\82ã\82\8aã\80\81ã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\81\8c \fIint\fP
\82\88ã\82\8aã\82\82大ã\81\8dã\81\84ã\82¢ã\83¼ã\82­ã\83\86ã\82¯ã\83\81ã\83£ã\83¼ã\81§ã\81¯æ­£ã\81\97ã\81\8få\8b\95ä½\9cã\81\97ã\81ªã\81\84ã\81\93ã\81¨ã\81 ã\82\8dã\81\86ã\80\82 ã\81\9dã\82\8cã\81«ã\82\82é\96¢ã\82\8fã\82\89ã\81\9aã\80\81ã\83\90ã\83¼ã\82¸ã\83§ã\83³ 2.8 ä»¥é\99\8dã\81® glibc ã\81§ã\81¯ã\80\81
+\fBmakecontext\fP()  ã\81«å¤\89æ\9b´ã\81\8cè¡\8cã\82\8fã\82\8cã\80\81(x86\-64 ã\81ªã\81©ã\81®) ã\81\84ã\81\8fã\81¤ã\81\8bã\81® 64 ã\83\93ã\83\83ã\83\88ã\82¢ã\83¼ã\82­ã\83\86ã\82¯ã\83\81ã\83£ã\83¼ã\81§
+å¼\95ã\81\8dæ\95°ã\81¨ã\81\97ã\81¦ã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\82\92渡ã\81\99ã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\82\8bã\82\88ã\81\86ã\81«ã\81ªã\81£ã\81¦ã\81\84ã\82\8bã\80\82
 .SH 例
 .PP
-以ä¸\8bã\81®ã\82µã\83³ã\83\97ã\83«ã\83»ã\83\97ã\83­ã\82°ã\83©ã\83 ã\81¯ã\80\81 \fBgetcontext\fP(3), \fBmakecontext\fP(), \fBswapcontext\fP()
+以下のサンプルプログラムは、 \fBgetcontext\fP(3), \fBmakecontext\fP(), \fBswapcontext\fP()
 の使用方法の例を示すものである。 このプログラムを実行すると、以下のような出力が得られる:
 .in +4n
 .nf
@@ -173,6 +176,6 @@ main(int argc, char *argv[])
 \fBsigaction\fP(2), \fBsigaltstack\fP(2), \fBsigprocmask\fP(2), \fBgetcontext\fP(3),
 \fBsigsetjmp\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.54 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.78 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。