• ベストアンサー

ITRONプログラミングについて

はじめまして。 ITRONでネットワークプログラムの勉強をしています。 質問内容は以下の通りです。 snd_dtq();の関数を使ってタスク間メッセージをしています。 フレーム送信、受信のイベントをそれで通知しています。 ただ、しばらくするとキューエラーで通信できなくなってしまいます。 どうも、キューが枯渇しているようなのですが。。。 snd_dtq();、rcv_dtq();を使う場合、キューの獲得、解放は関数内で 行っていないのでしょうか?実装者が行う必要があるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

> ただ、しばらくするとキューエラーで通信できなくなってしまいます。 > どうも、キューが枯渇しているようなのですが。。。 snd_dtqでキューが枯渇した場合は待ち状態に移行するはずですので、エラーにはなりません。別の理由かと思います。 > snd_dtq();、rcv_dtq();を使う場合、キューの獲得、解放は関数内で > 行っていないのでしょうか?実装者が行う必要があるのでしょうか? キューの獲得・解放というのが領域の割付け・解放の意味であれば、割付けはcre_dtq/acre_dtq/CRE_DTQのいずれかで行います。その際、自分で割り付けた領域を指定することもできますし、NULLを指定してカーネルに割付けを任せることもできます。カーネルが割付けた領域の解放はdel_dtqで行います。