(toppers-users 2787) Re: メールボックスの機能について
M.Sugiyama
sugiyama @ ap.chugoku-pc.ac.jp
2008年 8月 7日 (木) 14:21:17 JST
みさなん
お世話になります。
もろもろ実験中ですが、途中経過のみ。。
プライオリティは、もともとの物には手を加えていません。
従って、5,9、10のままです。
パケットの受け取りの順序を確認すべく、少々ソースに手を
加えてみました。
実行結果はのようになり、最後のパケットを2つのタスクが
受信しているようです。
act_tsk(TASK1),act_task(TASK2)の順序には依存いしてないようです。
言い忘れておりましたがAkiH8 3069F JSP-1.4.3での様子です。
取り急ぎご報告まで。。
start
waiting
waiting
message 2
thie is test message from task
0
<中略>
message 2
thie is test message from task
9
message 1
thie is test message from task
9
=========Cソースファイル========
#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(TASK2);
act_tsk(TASK1);
act_tsk(TASK3);
syslog(LOG_NOTICE,"start");
slp_tsk();
}
/*
送信タスク
*/
void send_task(VP_INT exinf){
MESSAGE msg; //送信パケット
INT i;
for(i=0;i<10;i++){
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);
}
}
==========CFG========
#define _MACRO_ONLY
#include "sample1.h"
INCLUDE("\"sample1.h\"");
CRE_TSK(MAIN_TASK, { TA_HLNG|TA_ACT, (VP_INT) 0, main_task, MAIN_PRIORITY,
STACK_SIZE, NULL });
CRE_TSK(TASK1, { TA_HLNG, (VP_INT) 1, task, MID_PRIORITY,
STACK_SIZE, NULL }); //受信タスク
CRE_TSK(TASK2, { TA_HLNG, (VP_INT) 2, task, HIGH_PRIORITY,
STACK_SIZE, NULL }); //受信タスク
CRE_TSK(TASK3, { TA_HLNG, (VP_INT) 1, send_task, MID_PRIORITY,
STACK_SIZE, NULL }); //送信タスク
CRE_MBX(MAILBOX,{TA_TFIFO,HIGH_PRIORITY,NULL});
#include "../../systask/timer.cfg"
#include "../../systask/serial.cfg"
#include "../../systask/logtask.cfg"
======================================================
_| __|
_/_| _/_| E-mail:sugiyama @ ap.chugoku-pc.ac.jp
_/ _|_/ _| 中国能力開発大学校 生産情報システム技術科
_/ __/ _| 杉山 誠
_/ _|akoto.Sugiyama ================================