Windows版 iTRONサービスコールの作成 (ランデブポート)
(その1)

概要

組み込みソフトウェアで利用されているOS「iTRON」のサービスコールをWindows上で動作させるためのライブラリです。

タスク間同期機能の『ランデブポート』の実装を説明します。

ランデブポートとは、あるタスクから別のタスクに処理依頼をし、その処理結果の返却までを一連の手続きとしてサポートするオブジェクトです。

ランデブポートの具体的な動作は以下のようになります。

  1. タスクAは、タスクBからの処理依頼が発生するのを待っています。(タスクAはスリープしています。)
  2. タスクBがタスクAに対して処理依頼を行い、タスクAからの処理結果を待ちます。(タスクBはスリープします。)
  3. タスクAは、タスクBからの処理依頼でタスクを起床し、依頼された処理を実行し、実行結果をタスクBに返します。
  4. タスクBは、タスクAに依頼した処理が完了するとタスクを起床し、処理結果をタスクAから受け取ります。

ランデブには「回送」と呼ばれる機能があり、処理依頼を受けたタスクは、その処理依頼を別にタスクに任せることが出来ます。

上記の例でいうと、タスクBからの処理依頼を受けたタスクAは、ランデブをタスクCに回送し、タスクCが依頼された処理を実行します。

タスクCは依頼された処理が終了すると、処理依頼をしたタスクBに直接、処理結果を返却します。

最初に処理依頼を受け付けたタスクAは、ランデブをタスクCに回送した時点で、ランデブの一連の処理とは切り離され、他の処理を実行できるようになります。

サービスコール

 

Ver3.0のランデブポート機能で提供されるサービスコールは以下のとおりです。

サービスコール名説明
cre_por

ランデブポートを生成します。

del_por

ランデブポートを削除します。

cal_por / tcal_por

ランデブの呼び出し。

acp_por / pacp_por / tacp_por

ランデブの受け付け。

fwd_por

ランデブの回送。

rpl_rdv

ランデブを終了します。

ref_por

ランデブポートの状態を参照します。


 

Ver4.0のランデブポート機能で提供されるサービスコールは以下のとおりです。

サービスコール名説明
cre_por / acre_por

ランデブポートを生成します。

del_por

ランデブポートを削除します。

cal_por / tcal_por

ランデブの呼び出し。

acp_por / pacp_por / tacp_por

ランデブの受け付け。

fwd_por

ランデブの回送。

rpl_rdv

ランデブを終了します。

ref_por / ref_rdv

ランデブポートの状態を参照します。



Windowsは米国Microsoft Corporationの登録商標です。