EN JA
MAKECONTEXT(3)
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 で十分なスタックスペースがありません。

関連項目

setcontext(3), ucontext(3)
September 10, 2002 FreeBSD