Windows版iTRONサービスコールの作成 (メールボックス)
(その1)

概要

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

タスク間通信機能の『メールボックス』の実装を説明します。

メールボックスとは、メモリ上に確保されたメッセージ・パケットを受け渡すことによりタスク間の通信を行います。

メールボックスではメッセージ・パケットのヘッダ領域にあるポインタ領域に次のメッセージ・パケットをリンクしていくことでメッセージのキューイングを行いますので、メッセージを送信するときに確保したメッセージ・パケットのメモリはメッセージキューから取り出されるまで有効な領域でなければなりません。

サービスコール

 

・Ver3.0のメールボックス機能で提供されるサービスコールは以下のとおりです。

サービスコール名説明
cre_mbx

メールボックスを生成します。

del_mbx

メールボックスを削除します。

snd_msg

メールボックスにメッセージを送信します。

rcv_msg / prcv_msg / trcv_msg

メールボックスからメッセージを取り出します。

ref_mbx

メールボックスの状態を参照します。

 

・Ver4.0のメールボックス機能で提供されるサービスコールは以下のとおりです。

サービスコール名説明
cre_mbx / acre_mbx

メールボックスを生成します。

del_mbx

メールボックスを削除します。

snd_msg

メールボックスにメッセージを送信します。

rcv_msg / prcv_msg / trcv_msg

メールボックスからメッセージを取り出します。

ref_mbx

メールボックスの状態を参照します。

メールボックスで使用するメッセージ形式について

メールボックスへ送受信するメッセージ・パケットは実装依存となっているので、本ライブラリではメッセージ・パケットをリンクする領域のみ定義し、メッセージ本体のデータ部分はユーザー側で定義するようにします。

メッセージ・パケット構造体は以下のとおりです。

メンバ名説明
nextmsg

次のメッセージ・パケット構造体のポインタ。

msgpri

メッセージの優先度。


ユーザー側のプログラムに合うように、ヘッダファイルの T_MSG 構造体の定義を直接変更されてもよいですし、以下に示すソースコードのようにメッセージ・パケットを含む構造体を新たに定義しても構いません。


    typedef struct {
        T_MSG       msgHdr;
        int         msgSize;
        BYTE        msgBuf[16];
    } T_MSGEX;

    T_MSGEX  msg;
      :
      :
    ercd = snd_msg( msgId, (T_MSG *)(&msg) );
	



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