SIGRETURN(2) |
FreeBSD System Calls Manual |
SIGRETURN(2) |
名称
sigreturn —
シグナルから復帰する
ライブラリ
Standard C Library (libc, -lc)
書式
#include < signal.h>
int
sigreturn( const ucontext_t *scp);
解説
sigreturn() システムコールによって、ユーザは、不可分にマスクの解除、スタックの切り替え、シグナルのコンテキストから復帰することができます。スレッドのシグナルのマスクとスタックの状態は、
scp によって指されるコンテキスト構造から復旧します。システムコールは、返りません。ユーザのスタックポインタ、フレームポインタ、引数ポインタとプロセッサ状態のロングワードは、コンテキストから復旧されます。実行は、指定された pc で再開します。このシステムコールは、以前に実行していたプログラムに、シグナルから復帰するとき、トランポリンコードと
longjmp(3) によって使用されます。
戻り値
成功するなら、システムコールは、返りません。そうでなければ、-1 の値が返され、
errno は、エラーを示す値に設定されます。
エラー
sigreturn() システムコールは、次のうちの 1 つが生じるなら、失敗し、スレッドのコンテキストは、変わらないままとなります。
-
[
EFAULT]
-
scp 引数が、プロセスのアドレス空間の有効な部分でないメモリを指しています。
-
[
EINVAL]
-
プロセス状態のロングワードが無効であるか、またはプロセスの特権レベルを不適切に上げています。
歴史
sigreturn() システムコールは、
4.3BSD で登場しました。