.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH GETCONTEXT 3 2009\-03\-15 Linux "Linux Programmer's Manual"
+.\"
+.\" Japanese Version Copyright (c) 2013 Akihiro MOTOKI
+.\" all rights reserved.
+.\" Translated 2013-03-25, Akihiro MOTOKI <amotoki@gmail.com>
+.\"
+.TH GETCONTEXT 3 2014\-04\-08 Linux "Linux Programmer's Manual"
.SH 名前
-getcontext, setcontext \- ユーザコンテキストを取得/設定する
+getcontext, setcontext \- ã\83¦ã\83¼ã\82¶ã\83¼ã\82³ã\83³ã\83\86ã\82ã\82¹ã\83\88ã\82\92å\8f\96å¾\97/è¨å®\9aã\81\99ã\82\8b
.SH 書式
\fB#include <ucontext.h>\fP
.sp
System V 的な環境では、 \fImcontext_t\fP および \fIucontext_t\fP という 2 つの型と、
\fBgetcontext\fP(), \fBsetcontext\fP(), \fBmakecontext\fP(3), \fBswapcontext\fP(3) という
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
\fImcontext_t\fP 型はマシン依存で、外部からは隠蔽されている。 \fIucontext_t\fP 型は構造体で、少なくとも以下の 4
つのフィールドを持つ。
.fi
.in
\fIsigset_t\fP と \fIstack_t\fP は \fI<signal.h>\fP で定義されている。 ここで \fIuc_link\fP は、
-現在のコンテキストが終了したとき、 続いて切り替わるコンテキストへのポインタである (現在のコンテキストが \fBmakecontext\fP(3)
+ç\8f¾å\9c¨ã\81®ã\82³ã\83³ã\83\86ã\82ã\82¹ã\83\88ã\81\8cçµ\82äº\86ã\81\97ã\81\9fã\81¨ã\81\8dã\80\81 ç¶\9aã\81\84ã\81¦å\88\87ã\82\8aæ\9b¿ã\82\8fã\82\8bã\82³ã\83³ã\83\86ã\82ã\82¹ã\83\88ã\81¸ã\81®ã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\81§ã\81\82ã\82\8b (ç\8f¾å\9c¨ã\81®ã\82³ã\83³ã\83\86ã\82ã\82¹ã\83\88ã\81\8c \fBmakecontext\fP(3)
で生成されたものの場合)。 \fIuc_sigmask\fP はこのコンテキストでブロックされている シグナル群である (\fBsigprocmask\fP(2)
を見よ)。 \fIuc_stack\fP はこのコンテキストが用いているスタックである (\fBsignalstack\fP(2) を見よ)。
-\fIuc_mcontext\fP は保存されているコンテキストの マシン特有の表現形式であり、 ここには呼び出したスレッドのマシンレジスタが格納される。
+\fIuc_mcontext\fP ã\81¯ä¿\9då\98ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\82³ã\83³ã\83\86ã\82ã\82¹ã\83\88ã\81® ã\83\9eã\82·ã\83³ç\89¹æ\9c\89ã\81®è¡¨ç\8f¾å½¢å¼\8fã\81§ã\81\82ã\82\8aã\80\81 ã\81\93ã\81\93ã\81«ã\81¯å\91¼ã\81³å\87ºã\81\97ã\81\9fã\82¹ã\83¬ã\83\83ã\83\89ã\81®ã\83\9eã\82·ã\83³ã\83¬ã\82¸ã\82¹ã\82¿ã\83¼ã\81\8cæ ¼ç´\8dã\81\95ã\82\8cã\82\8bã\80\82
.LP
-\fBgetcontext\fP() 関数は、 ポインタ \fIucp\fP が指す構造体を、 現在アクティブなコンテキストに初期化する。
+\fBgetcontext\fP() 関数は、 ポインター \fIucp\fP が指す構造体を、 現在アクティブなコンテキストに初期化する。
.LP
-\fBsetcontext\fP() 関数は、ポインタ \fIucp\fP が指すユーザコンテキストをリストアする。 呼び出しに成功すると返らない。
+\fBsetcontext\fP() 関数は、ポインター \fIucp\fP が指すユーザーコンテキストをリストアする。 呼び出しに成功すると返らない。
このコンテキストは、以前に \fBgetcontext\fP() または \fBmakecontext\fP(3) で得られたものか、
あるいはシグナルの第三引数として与えられたものになる。
.LP
\fBmakecontext\fP(3) 呼び出しの第一引数で指定されていた \fIucp\fP 構造体の \fIuc_link\fP メンバで継続する。 このメンバが
NULL だった場合は、そのスレッドは終了する。
.LP
-コンテキストがシグナルハンドラの呼び出しによって得られていたものの場合は、 古い標準によれば
+ã\82³ã\83³ã\83\86ã\82ã\82¹ã\83\88ã\81\8cã\82·ã\82°ã\83\8aã\83«ã\83\8fã\83³ã\83\89ã\83©ã\83¼ã\81®å\91¼ã\81³å\87ºã\81\97ã\81«ã\82\88ã\81£ã\81¦å¾\97ã\82\89ã\82\8cã\81¦ã\81\84ã\81\9fã\82\82ã\81®ã\81®å ´å\90\88ã\81¯ã\80\81 å\8f¤ã\81\84æ¨\99æº\96ã\81«ã\82\88ã\82\8cã\81°
「プログラムの実行はシグナルによって割り込まれた命令の次の命令から継続される」。 しかしこの文は SUSv2 で削除されたので、
現在の判断は「結果は定義されていない」である。
.SH 返り値
を返し、\fIerrno\fP をエラーに応じて設定する。
.SH エラー
定義されていない。
+.SH 属性
+.SS "マルチスレッディング (pthreads(7) 参照)"
+関数 \fBgetcontext\fP() と \fBsetcontext\fP() はスレッドセーフである。
.SH 準拠
SUSv2, POSIX.1\-2001. POSIX.1\-2008 では、移植性の問題から \fBgetcontext\fP() の仕様が削除された。
代わりに、アプリケーションを POSIX スレッドを使って書き直すことが 推奨されている。
これらにはシグナルコンテキストの取り扱いが定義されていなかったので、 次の段階では \fBsigsetjmp\fP(3)/\fBsiglongjmp\fP(3)
のペアが現われた。 現在の機構ではずっと細かな制御ができる。 一方 \fBgetcontext\fP() から返ったとき、 これが最初の呼び出しであったか、
それとも \fBsetcontext\fP() 呼び出しからのものであるかを 区別する容易な方法がなくなってしまった。
-ã\83¦ã\83¼ã\82¶ã\81¯ã\80\8cã\81\97ã\81\8aã\82\8aã\80\8dæ©\9fæ§\8bã\82\92è\87ªå\88\86ã\81§ä½\9cã\82\89ã\81ªã\81\91ã\82\8cã\81°ã\81ªã\82\89ã\81ªã\81\84ã\80\82 ã\83¬ã\82¸ã\82¹ã\82¿å¤\89æ\95°ã\81¯ (ã\83¬ã\82¸ã\82¹ã\82¿はリストアされてしまうので) これをやってくれない。
+ã\83¦ã\83¼ã\82¶ã\83¼ã\81¯ã\80\8cã\81\97ã\81\8aã\82\8aã\80\8dæ©\9fæ§\8bã\82\92è\87ªå\88\86ã\81§ä½\9cã\82\89ã\81ªã\81\91ã\82\8cã\81°ã\81ªã\82\89ã\81ªã\81\84ã\80\82 ã\83¬ã\82¸ã\82¹ã\82¿ã\83¼å¤\89æ\95°ã\81¯ (ã\83¬ã\82¸ã\82¹ã\82¿ã\83¼はリストアされてしまうので) これをやってくれない。
.LP
-ã\82·ã\82°ã\83\8aã\83«ã\81\8cç\99ºç\94\9fã\81\99ã\82\8bã\81¨ã\80\81 ç\8f¾å\9c¨ã\81®ã\83¦ã\83¼ã\82¶ã\82³ã\83³ã\83\86ã\82ã\82¹ã\83\88ã\81¯ä¿\9då\98ã\81\95ã\82\8cã\80\81 ã\82·ã\82°ã\83\8aã\83«ã\83\8fã\83³ã\83\89ã\83©ç\94¨ã\81®ã\82³ã\83³ã\83\86ã\82ã\82¹ã\83\88ã\81\8cã\82«ã\83¼ã\83\8dã\83«ã\81«ã\82\88ã\81£ã\81¦ç\94\9fæ\88\90ã\81\95ã\82\8cã\82\8bã\80\82 ä»\8aå¾\8cã\81¯ã\83\8fã\83³ã\83\89ã\83©に
+ã\82·ã\82°ã\83\8aã\83«ã\81\8cç\99ºç\94\9fã\81\99ã\82\8bã\81¨ã\80\81 ç\8f¾å\9c¨ã\81®ã\83¦ã\83¼ã\82¶ã\83¼ã\82³ã\83³ã\83\86ã\82ã\82¹ã\83\88ã\81¯ä¿\9då\98ã\81\95ã\82\8cã\80\81 ã\82·ã\82°ã\83\8aã\83«ã\83\8fã\83³ã\83\89ã\83©ã\83¼ç\94¨ã\81®ã\82³ã\83³ã\83\86ã\82ã\82¹ã\83\88ã\81\8cã\82«ã\83¼ã\83\8dã\83«ã\81«ã\82\88ã\81£ã\81¦ç\94\9fæ\88\90ã\81\95ã\82\8cã\82\8bã\80\82 ä»\8aå¾\8cã\81¯ã\83\8fã\83³ã\83\89ã\83©ã\83¼に
\fBlongjmp\fP(3) を使わせないこと: この関数のコンテキスト下での動作は定義されていない。 代わりに \fBsiglongjmp\fP(3) か
\fBsetcontext\fP() を使うこと。
.SH 関連項目
\fBsigaction\fP(2), \fBsigaltstack\fP(2), \fBsigprocmask\fP(2), \fBlongjmp\fP(3),
\fBmakecontext\fP(3), \fBsigsetjmp\fP(3)
.SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.52 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man\-pages/ に書かれている。