(toppers-users 2790) Re: メールボックスの機能について

M.Sugiyama sugiyama @ ap.chugoku-pc.ac.jp
2008年 8月 7日 (木) 14:55:41 JST


みなさん

 ご教授ありがとうございます。

実験中、どうにも気になりまして、お騒がせしました。
正しくは、必要なパケットを事前に確保し、受け取り確認後に
書き換える処理をしないと お作法違反のようですね、

 普通は、恥の書きついでに以下のようにすればよいのでしょうか??

#include <t_services.h>
#include "kernel_id.h"
#include "sample1.h"
/*
        メール送受信用のバッファ
*/
typedef struct
{
        T_MSG pk_msg;
        char buf[64];
        INT  n;
}MESSAGE;

/*
 *  メインタスク
 *  メールボックス機能を使ってデータを送信する
 */
void main_task(VP_INT exinf){

        act_tsk(TASK1);
        act_tsk(TASK2);
        act_tsk(TASK3);

    syslog(LOG_NOTICE,"start");
    slp_tsk();
}
/*
        送信タスク
*/
void send_task(VP_INT exinf){
        MESSAGE *msg;   //送信パケット
        VP              p_blk;  //送信用固定メモリプール
        INT i;

        for(i=0;i<10;i++){
                get_mpf(MPF_BOX,(VP*)&p_blk);
                msg=(MESSAGE*)p_blk;
                msg->n=i;
                strcpy(msg->buf,"thie is test message from task \r\n");
                snd_mbx(MAILBOX,(T_MSG*)msg);
        }
}

/*
        受信タスク
        タスクは2つ生成している
*/
void task(VP_INT exinf){
MESSAGE *msg;
    //受信処理
    syslog(LOG_NOTICE,"waiting");
        while(1){
                rcv_mbx(MAILBOX,(T_MSG**)&msg);
                syslog(LOG_NOTICE,"message %d",exinf);
                syslog(LOG_NOTICE,"%s  %d",msg->buf,msg->n);
                rel_mpf(MPF_BOX,msg);
        }
}

       ======================================================
      _|  __|
    _/_| _/_| E-mail:sugiyama @ ap.chugoku-pc.ac.jp 
   _/ _|_/ _| 中国能力開発大学校 生産情報システム技術科
  _/  __/  _| 杉山 誠
 _/        _|akoto.Sugiyama  ================================