(toppers-users 2373) Re: 連続データストリームの受信について
ykominami
ykominami @ nifty.com
2006年 4月 1日 (土) 09:01:37 JST
小南と申します。
On Sat, 1 Apr 2006 00:05:52 +0900
Noda <dearliz @ jnb.odn.ne.jp> wrote:
> toppers users各位
>
> こんばんは。はじめまして。
> Nodaと申します。
>
> 私は現在、H8/3069F「AKI-H8/3069F LAN(秋月電子通
> 商)」を
> ターゲットとし、TOPPERS-JSP 1.4.2 + TINET1.3を用いて、
> ストリームデータを受信するアプリを作成中なのですが、
> 連続データを受信すると、システムがハングアップしてしまう現象に
> 悩まされています。
>
> 以下のようなロジックで、連続データを受信しようとしているのですが、
> 最初の500バイト程度は受信するものの、それ以降まったく受信しな
> くなり、
> タスクも停止してしまう状態です。(周期ハンドラだけは動いているよ
> うです)
> 何度かリセットすると、スムーズに動くときもあるのですが、
> 止まってしまうことの方が多い状態です。
> ドキュメントを読んだり、ソースを追ったりしてみたのですが
> まったく原因が掴めません。
>
> ログをとろうと思い、tcp_write_rwbuf(tcp_subr_cs.c)
> の入り口と出口に
> syslogを入れてみたことがあるのですが、その時は非常にスムーズに動
> いて
> しまったので、なおさら解らなくなってしまいました。
>
> TINETを使われている方に、何かお知恵を拝借できればと思い、投稿し
> ました。
> 連続ストリームの受信をTINETを使って実現された方などいらっ
> しゃいましたら、
> ご助言をお願い致します。
> ercd = tcp_rcv_dat( cepid, (VP)buffer, buf_size, TMO_NBLK );
>
> if ( ercd != E_WBLK || ercd == 0 )
> {
> break;
> }
>
> syscall(wai_sem(SEM_STREAM));
連続ストリームの受信というのが、具体的にどういう処理を意図されているのかが
分かりません。
またシステムがハングアップするというのは、具体的にどういう現象が発生したの
でしょうか?
Nodaさんの文面から、システムから意図した動作を示さない、あるいはシステム
からの反応が得られないという状態なのかなと推測したのですが、そうなのでしょう
か。
例えば反応が返ってこないとしても、システムが暴走している場合、タスクが待ち
状態になったまま待ち解除されない場合、タスクが終了してしまった場合,シリアル
通信に失敗しているなどいろいろ考えられます。
具体的にタスクの処理が,ソースファイルのどの部分までは行われ,どの部分は
実行されていないのでしょうか。
上で引用されている部分で言えば,
1)tcp_rcv_dat()から戻ってこない
2)受信に成功してbreakする(その場合ソースコード上のどこに制御が移るので
しょうか)
3)wai_sem()から戻ってこない
のどれが実際に起こっているのでしょうか。
-----------------------------------
小南 ykominami @ nifty.com