Windows版 iTRONサービスコールの作成 (セマフォ)
(その1)
組み込みソフトウェアで利用されているOS「iTRON」のサービスコールをWindows上で動作させるためのライブラリです。
タスク間の排他制御で用いられる『セマフォ機能』の実装を説明します。
セマフォとは、共通の資源の数をカウンタとして管理し、同時に利用できる数を制限します。
セマフォの資源を獲得するときにカウンタを-1して、カウンタが0になった時点でセマフォ資源を獲得しようとしたときに、セマフォ資源が獲得できるまでタスクをスリープさせます。
セマフォの資源を返却するとカウンタを+1します。このときセマフォ資源を獲得しようとしてスリープしているタスクがある場合、そのタスクはウェイクアップしてセマフォ資源を獲得できます。
また、セマフォの資源獲得の待ち時間をタイムアウト付きで制限したり、セマフォ資源を獲得できるかどうかを確認して、獲得できないときに待たずに制御を戻すポーリング方式があります。
・Ver3.0のセマフォ機能で提供されるサービスコールは以下のとおりです。
サービスコール名 | 説明 |
---|---|
cre_sem | セマフォを生成します。 |
del_sem | セマフォを削除します。 |
sig_sem | セマフォ資源を返却します。(シグナルを発生させます。) |
wai_sem / pol_sem / twai_sem | セマフォ資源を獲得します。(シグナルの発生を待ちます。) |
ref_sem | セマフォの状態を参照します。 |
・Ver4.0のセマフォ機能で提供されるサービスコールは以下のとおりです。
サービスコール名 | 説明 |
---|---|
cre_sem / acre_sem | セマフォを生成します。 |
del_sem | セマフォを削除します。 |
sig_sem / isig_sem | セマフォ資源を返却します。(シグナルを発生させます。) |
wai_sem / pol_sem / twai_sem | セマフォ資源を獲得します。(シグナルの発生を待ちます。) |
ref_sem | セマフォの状態を参照します。 |