(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 ================================