diff options
Diffstat (limited to 'documentation/manual-pages/ja/man2/sigaltstack.2')
-rw-r--r-- | documentation/manual-pages/ja/man2/sigaltstack.2 | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/documentation/manual-pages/ja/man2/sigaltstack.2 b/documentation/manual-pages/ja/man2/sigaltstack.2 new file mode 100644 index 0000000000..7dceafe73f --- /dev/null +++ b/documentation/manual-pages/ja/man2/sigaltstack.2 @@ -0,0 +1,159 @@ +.\" Copyright (c) 1983, 1991, 1992, 1993 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)sigaltstack.2 8.2 (Berkeley) 5/1/95 +.\" %FreeBSD: src/lib/libc/sys/sigaltstack.2,v 1.21 2002/12/18 09:22:31 ru Exp % +.\" +.\" $FreeBSD$ +.Dd May 1, 1995 +.Dt SIGALTSTACK 2 +.Os +.Sh 名称 +.Nm sigaltstack +.Nd シグナルスタックコンテキストの設定や入手 +.Sh ライブラリ +.Lb libc +.Sh 書式 +.In signal.h +.Bd -literal +typedef struct sigaltstack { + char *ss_sp; + size_t ss_size; + int ss_flags; +} stack_t; +.Ed +.Ft int +.Fn sigaltstack "const stack_t * restrict ss" "stack_t * restrict oss" +.Sh 解説 +.Fn sigaltstack +システムコールを使用することにより、ユーザはシグナルを処理する別のスタックを +定義できます。 +.Fa ss +が 0 でない場合、シグナルを配信する +.Em シグナルスタック +へのポインタとサイズが指定され、プロセスがそのスタックで +動作中であるかどうかがシステムに伝えられます。 +ハンドラがシグナルスタックで動作する必要があることを +シグナルのアクションが示す場合 ( +.Xr sigaction 2 +システムコールで指定)、システムは、プロセスがそのスタックで +動作中であるかどうかをチェックします。 +プロセスがシグナルスタックで動作していない場合、システムは、 +シグナルハンドラの動作中はシグナルスタックを適切なものに切り替えます。 +.Pp +.Dv SS_DISABLE +が +.Fa ss_flags +で設定されていると、 +.Fa ss_sp +と +.Fa ss_size +は無視されてシグナルスタックは無効になります。 +アクティブなスタックを無効にしようとすると、 +.Fn sigaltstack +は -1 を戻し +.Va errno +を +.Er EINVAL +に設定します。 +スタックが無効になると、すべてのシグナルは通常の +ユーザスタックで動作するようになります。 +スタックが後で有効にると、代替スタックで処理するように指定された +すべてのシグナルは、その指定どおりに再開されます。 +.Pp +.Fa oss +を 0 以外にすると、現在のシグナルスタックの状態が戻されます。 +.Fa ss_flags +フィールドの値は、プロセスが現在シグナルスタックにある場合は +.Dv SS_ONSTACK +に、シグナルスタックが現在無効である場合は +.Dv SS_DISABLE +になります。 +.Sh 注 +値 +.Dv SIGSTKSZ +は、代替スタック領域を割り当てる一般的なケースで使用する +バイト数 / 文字数に定義されます。 +代替スタックの割り当てには、一般的に以下のようなコードが使用されます。 +.Bd -literal -offset indent +if ((sigstk.ss_sp = malloc(SIGSTKSZ)) == NULL) + /* error return */ +sigstk.ss_size = SIGSTKSZ; +sigstk.ss_flags = 0; +if (sigaltstack(&sigstk,0) < 0) + perror("sigaltstack"); +.Ed +デフォルトサイズ以外の特定量のスタックスペースを必要とする +シグナルハンドラを使用するプログラムでは、別の方法が使用できます。 +値 +.Dv MINSIGSTKSZ +は、代替スタックの実行にオペレーティングシステムが +必要とするバイト数 / 文字数に定義されています。 +代替スタックのサイズを算出する場合は、プログラムでスタック要件に +.Dv MINSIGSTKSZ +を追加し、オペレーティングシステムのオーバヘッドを許容する必要があります。 +.Pp +シグナルスタックは、スタックの拡大傾向とアラインメント要件に従って +自動的に調整されます。 +シグナルスタックは、ハードウェアで保護されることもされないこともあり、 +通常のスタックのように自動的に ``拡大'' しません。 +スタックがオーバフローし、スペースが保護されていない場合は、 +予期せぬ結果となることがあります。 +.Sh 戻り値 +.Rv -std sigaltstack +.Sh エラー +以下のうち 1 つが発生すると、 +.Fn sigaltstack +システムコールは処理を失敗し、シグナルスタックコンテキストは変更されずに +残ります。 +.Bl -tag -width Er +.It Bq Er EFAULT +.Fa ss +か +.Fa oss +が、プロセスアドレス空間の有効な部分でないメモリを指しています。 +.It Bq Er EINVAL +アクティブなスタックを無効にしようとしました。 +.It Bq Er ENOMEM +代替スタック領域のサイズが +.Dv MINSIGSTKSZ +以下になっています。 +.El +.Sh 関連項目 +.Xr sigaction 2 , +.Xr setjmp 3 +.Sh 歴史 +.Fn sigaltstack +の前バージョンである +.Fn sigstack +システムコールは +.Bx 4.2 +で登場しました。 |