プロが教えるわが家の防犯対策術!

はじめまして。
ITRONでネットワークプログラムの勉強をしています。

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

A 回答 (1件)

> ただ、しばらくするとキューエラーで通信できなくなってしまいます。


> どうも、キューが枯渇しているようなのですが。。。

snd_dtqでキューが枯渇した場合は待ち状態に移行するはずですので、エラーにはなりません。別の理由かと思います。

> snd_dtq();、rcv_dtq();を使う場合、キューの獲得、解放は関数内で
> 行っていないのでしょうか?実装者が行う必要があるのでしょうか?

キューの獲得・解放というのが領域の割付け・解放の意味であれば、割付けはcre_dtq/acre_dtq/CRE_DTQのいずれかで行います。その際、自分で割り付けた領域を指定することもできますし、NULLを指定してカーネルに割付けを任せることもできます。カーネルが割付けた領域の解放はdel_dtqで行います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!