(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);
> }
> }
>
> ですかね(あくまでテストプロとして)
>
> 固定長メモリプールを使用する場合は、提示されたコードでよいと思います。
>
>
>
>