关于6.2.1串口驱动程序的讨论

前段时间在6.2.1下调试串口通讯,遇到一个问题:串口发送会停滞大约12秒时间.
最近拿到了部分6.2.1下的串口驱动原码,发现里面存在一个逻辑问题.
有原码的可以看下程序,问题主要出在里面的发送定时器(50ms)和中断服务程序会存在临界资源被修改.发送定时器的记数变量(tx_timer)在定时函数(timer_tick)中需要判断并做减减(–)操作具体的操作为(if(tx_timer && --tx_timer==0)),而中断服务程序(inter)中会对该变量进附值操作(tx_timer=0),这样中断服务程序就很可能在if判断的两个条件中间修改tx_timer,当中断退出时if又开始判断第二个条件(–tx_timer==0)这个时候就会产生益出(tx_timer是char型的变量),而在数据发送函数(tto)中需要判断条件(if(tx_timer==0)),从而导致tx_timer减到零的时间需要255*50ms=12.75s.
但是我有查看了6.3.2的串口驱动原码,发现tto里面已经去掉这个条件(if(tx_timer==0))的判断了.
请问QNX官方是不是在以前也发现过这个情况,从而对它进行了修改与完善?
希望大家能就这个问题进行展开讨论.
需要原码的可以把电子邮箱贴出来.

如果问我的话,既然6.3/6.4取消了那个判断的话,很有可能就是个6.2.1的Bug后来被改正了。

不过,如果你想确认的话,可以去 foundry27 网站上发帖子啊,他们可以查内部记录,那个才是“官方回答”。