MAKECONTEXT(3) | FreeBSD Library Functions Manual | MAKECONTEXT(3) |
名称
makecontext, swapcontext — ユーザスレッドのコンテキストを変更して交換するライブラリ
Standard C Library (libc, -lc)書式
#include < ucontext.h> void
makecontext( ucontext_t *ucp, void (*func)(void), int argc, ...);
int
swapcontext( ucontext_t *oucp, const ucontext_t *ucp);
解説
makecontext() 関数は、 ucp によって指されたユーザスレッドのコンテキストを変更します。 ucp は、前もって、 getcontext(3) を呼び出して初期化されていなければなりません、そしてそれは、スタックを割り付けられます。コンテキストは、引数で提供されている func() を呼び出すことによって実行を続けるように変更されます。 argc 引数は、 makecontext() に提供された追加引数の数と等しくて、また、 func() への引数の数と等しくなければなりません、そうでなければ振る舞いは、未定義です。ucp->uc_link 引数は、 makecontext() を呼び出す前に、初期化しなければならなくて、 func() が返るときに取る行動を決定します: NULL, と等しいなら、プロセスは、終了します。そうでなければ、 setcontext( ucp->uc_link) が暗黙のうちに呼び出されます。
swapcontext() 関数は、 *oucp 中の現在のスレッドのコンテキストを保存して、 *ucp を現在のアクティブなコンテキストにします。
戻り値
成功すれば、 swapcontext() は、0 を返します。そうでなければ、-1 を返し、グローバル変数 errno を適切に設定します。エラー
swapcontext() 関数は、次の場合に失敗します:- [ ENOMEM]
- 操作を終了するために ucp で十分なスタックスペースがありません。
September 10, 2002 | FreeBSD |