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

SHUKUGUCHI Masahiro mshukuguchi @ elec.nara-k.ac.jp
2008年 8月 7日 (木) 16:25:57 JST


柿崎さま みなさま

宿口です。

テストプロの件は、ご指摘の通りです。

このテストプロは、あくまで、”スタックが解放されない”という前提のとき
のみです。( static にする手もありますが、仰るように、タスクを消滅させ
るのであれば危険なことには変わりありません。)

あまり良い例ではないなぁ。と思いつつポストしたのはミスでした。
失礼いたしました。

Shukuguchi

とある本には、”定石として固定長メモリプールを使った例”を示しています。

takaya_kakizaki @ gmx.yamaha.com wrote:
> 杉山さま、宿口さま
> 
> 柿崎です。
> 
> この課題の趣旨とは離れますが、
> 例のバグの回避法として宿口さんの例をださなかったのは
> 
> 「タスク間通信にスタック領域を使うのは危険な香りがする」からです。
> 
> したがって、こういう場合は定石として固定長メモリプールを使った例を
> 覚えておいたほうがよいと思います。
> 
> ----- 以下、想定される危険予知(例) -----
> 1) 以下のコードをFI4に移植しました。
> 2) 送信タスクをdel_tskしました(スタック開放)
> 3) メールボックスがうまく動きません
> 4) 泥沼デバッグ…
> 
> (どちらかというとSWESTネタですね。)
> 
> ------------------------
> 柿崎 貴也
> ヤマハ株式会社 INFOサウンド開発推進室
> E-mail: takaya_kakizaki @ gmx.yamaha.com
> 
> 
> 
> 
> SHUKUGUCHI Masahiro <mshukuguchi @ elec.nara-k.ac.jp> 
> 2008/08/07 15:10
> users @ toppers.jp へ
> 返信してください
> 
> 
> 宛先
> users @ toppers.jp
> cc
> 
> 件名
> (toppers-users 2791) Re: メールボックスの機能について
> 
> 
> 
> 
> 
> 
> 
> Shukuguchi
> 
> PS
> > 普通は、恥の書きついでに以下のようにすればよいのでしょうか??
> 
> いくつかのやり方があります。固定長メモリプールを使用するのも手だと
> 思いますが、手っ取り早くやるなら
> 
> /*
>         送信タスク
> */
> void send_task(VP_INT exinf){
>                  MESSAGE msg_bdy[10];
>         MESSAGE *msg;   //送信パケット
>         VP              p_blk;  //送信用固定メモリプール
>         INT i;
> 
>         for(i=0;i<10;i++){
>                                  msg = &msg_bdy[cnti]
>                 msg->n=i;
>                 strcpy(&msg->buf[0],"thie is test message from task 
> \r\n");
>                 snd_mbx(MAILBOX,(T_MSG*)msg);
>         }
> }
> 
> ですかね(あくまでテストプロとして)
> 
> 固定長メモリプールを使用する場合は、提示されたコードでよいと思います。
> 
> 
> 
>