4.18 __raise()

rt_misc.h で定義される __raise() 関数は、ランタイム異常を示すシグナルを生成します。

C ライブラリ標準にはありませんが、 ARM® C ライブラリでは拡張機能としてサポートされています。

構文

int __raise(int signal, int type);
各項目には以下の意味があります。
signal
シグナルの番号を保持する整数です。
タイプ
一部のシグナルの種類で、シグナルが生成された状況に関する追加情報を表す、整数、文字列定数、または変数です。

使用法

ユーザーが signal() の呼び出しによって信号の処理を設定した場合、__raise() はユーザーが指定したアクションを実行します。つまり、信号を無視するかユーザーが供給したハンドラ関数を呼び出します。それ以外の場合は、__raise()__default_signal_handler() を呼び出して、デフォルトの信号処理動作を使用します。
__raise() 関数は、以下を定義することによって置き換えられます。
int __raise(intsignal, inttype);
この定義によって、C 信号メカニズムとデータを消費する信号ハンドラベクタをバイパスできますが、それ以外には基本的に以下と同じインタフェースが提供されます。
int __default_signal_handler(int signal, inttype);
ライブラリのデフォルトのシグナルハンドラは __raise() type パラメータを使用して、出力するメッセージを変化させます。

戻り値

__raise() には、以下の 3 つの復帰条件が考えられます。
復帰しない
ハンドラによって長距離のジャンプまたは再起動が実行されます。
0
シグナルが処理されたことを示します。
ゼロ以外
呼び出しコードによって戻り値を終了コードに渡す必要があります。デフォルトのライブラリの実装では、__raise() によってゼロ以外の復帰コード rc が返されると、_sys_exit(rc) が呼び出されます。
関連する概念
1.5.11 ARM C ライブラリでのスレッドセーフティ
関連する参考文書
4.5 __default_signal_handler()
4.49 _ttywrch()
4.39 _sys_exit()
4.28 __rt_raise()
1.23.3 C ライブラリの signal() 関数と追加の型引数によりサポートされる ISO 準拠のシグナルの実装
1.6.6 C ライブラリ関数の間接セミホスティング依存関数
非機密扱いPDF file icon PDF 版ARM DUI0808CJ
Copyright © 2014, 2015 ARM.All rights reserved.