データを CPU に渡すには、オペレーティング・システムの割り込みハンドラーを使用します。
一般的に、パラメーターなしの静的関数は、そのアドレスを InstallIntHdlr (オペレーティング・システム依存) のようなオペレーティング・システム操作に渡すことで追加されます。
静的関数は、特殊なシングルトン・オブジェクトであるか、またはパッケージ内に定義された関数です。この操作は、コンパイラー固有のユーティリティーを使用して、レジスターを操作します。最終的にはリターンして、割り込み命令からのリターンを実行する必要があります。
このタスクについて
割り込みハンドラーから CPU にデータを渡すには、以下の方法があります。
- GEN() マクロを使用してイベントを生成する。その後イベントは、オペレーティング・システムを介して (別スレッドにある) リアクティブ・オブジェクトに達する。
- 読み/書きトグル・ロックを持つランデブー・オブジェクトを使用する。割り込みハンドラーは、ロックが書き込み状態かどうかをチェックして、書き込み状態であればデータを更新し、ロックを読み取り状態にする。別のスレッドにいる読み取り者は、定期的にロックをチェックし、読み取り状態のときだけデータを読む。読み取り状態にある場合、読み取り者はデータを読み、ロックを書き込み状態に変更する。
この更新で簡単にキュー構造に拡張できます。
- IBM® Rational® Rhapsody® の外部で、割り込みハンドラーを手動で作成し、オペレーティング・システムのターゲット・スレッドのメッセージ・キューに送信する。一般的に、オペレーティング・システムが割り込みハンドラーを直接サポートしていない場合は、現在の割り込みハンドラーを関数に保存し、その関数のアドレスを割り込みベクター・テーブルの適切な場所に書き込みます。割り込みが発生すると、新しい関数が古い割り込みハンドラーを置き換えるか、新しい割り込みハンドラーが古い割り込みハンドラーにチェーンされます。いずれの場合も、割り込みハンドラーが不要になった際には、ベクター・テーブル中のベクターを元のアドレスで置き換えます。