(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