SIGSTACK(2) — UNIX Programmer’s Manual
名称
sigstack − シグナルスタックのコンテクストをセットする/取り出す
形式
#include <signal.h>
struct sigstack {
caddr_tss_sp;
intss_onstack;
};
sigstack(ss, oss);
struct sigstack ∗ss, ∗oss;
解説
sigstack コールを 使用することによって、 ユーザは、 シグナルの処理が行われる、 切り替え可能なスタックを定義することができます。 ss は、 ゼロ以外である場合には、 シグナルスタック (signal stack)を 指定します。 このスタックへシグナルが送られ、 プロセスが現在そのスタックで実行されているかどうかがシステムに伝えられます。 あるシグナルが、 シグナルスタックでそのシグナルのハンドラを 実行する必要があることを 示した場合(これは sigvec(2) コールで指定)、 システムは、 プロセスが現在そのスタックで実行されているかどうかを チェックします。 そのシグナルスタックでプロセスが実行されていなければ、 システムは、 シグナルハンドラが実行できるようにシグナルスタックの切り替えを 行います。 oss がゼロ以外である場合には、 現在のシグナルスタックの状態が返されます。
注意事項
シグナルスタックは、 通常のスタックのように自動的に“成長”することはありません。 スタックがオーバーフローした場合には、 予期されない結果が生じます。
リターン値
正常終了した場合には、 値 0 が返されます。 そうでない場合には、 値 −1 が返され、 errno がエラーを 示すようにセットされます。
エラー
次の項目が発生した場合には、 sigstack は失敗し、 シグナルスタックのコンテクストは変更されません。
[EFAULT] ss または oss が、 プロセスのアドレススペースの有効な部分にはないメモリを 指し示している。
関連事項
NEWS-OSRelease 3.3