SIGRETURN(2)

名称
sigreturn - シグナルから戻る

ライブラリ
libc

書式
<signal.h> int sigreturn(ucontext_t *scp)

解説
sigreturn() システムコールにより、マスクの解除、スタックの切り替え、 シグナルコンテキストからの復帰を、不可分に実行可能です。 プロセスのシグナルマスクとスタックステータスは、 scp で指されるコンテキスト構造体から復元されます。 システムコールは戻りません。 ユーザのスタックポインタ、フレームポインタ、引数ポインタ、 プロセッサステータスロングワードは、コンテキストから復元されます。 実行は、指定された pc で再開されます。 このシステムコールは、前に実行していたプログラムに シグナルから戻る場合に、トランポリンコードと longjmp(3) で使用されます。

注
このシステムコールは 4.2BSD では使用できないので、下位互換性が必要な場合は使用しないでください。

戻り値
処理が正常に完了すると、このシステムコールは戻りません。 そうでない場合は -1 が返され、エラーを示すために errno が設定されます

エラー
以下のうち 1 つが発生すると、 sigreturn() システムコールは処理を失敗し、プロセスコンテキストは変更されずに残ります。

[EFAULT]
    scp 引数が、プロセスアドレス空間の有効な部分ではない メモリを指しています。

[EINVAL]
    プロセスステータスロングワードが正しくないか、 プロセスの権限レベルを不適切に上げています。

関連項目
sigvec(2), setjmp(3), ucontext(3)

歴史
sigreturn() システムコールは、 4.3BSD で登場しました。