悟空学Linux专栏----第41篇

  为了尽快解决这个问题,悟空打算好好的研究一下该无线的驱动程序,悟空先花费了一晚的时间统计了一下驱动程序,总文件数为55个,总的代码行数为45954行。统计完之后悟空开始研究驱动的代码,可是看来看去,悟空都无法看出这些代码有什么问题,这让悟空头大,悟空打算问问圆方有什么好的思路。

  悟空:我看了一下驱动代码,没有发现这段代码没有什么问题啊?圆方你怎么看呢?

  圆方:如果我们要找出问题的所在,我们先要分析该代码的结构,执行流程,看看无线到底卡在了什么地方。我昨晚好好看了一下代码的执行流程,画出了下面的代码的架构框图。

    

  从我昨晚研究的结果看,数据发送的流程大概是这样的。当系统有数据需要发送的时候,先将数据发送给802.11协议栈,802.11协议栈先判断是否被挂起,如果没有怎将数据传递给驱动程序的发送队列,发送同时判断发送队列中的数据是否超过了水平线,如果超过了则发送挂起信号给802.11协议栈,否则则不会发送挂起信号。而当发送完成之后,硬件会触发一个中断,该中断服务器例程会触发我们昨天讨论的tasklet,由发送的tasklet将发送队列中的数据传递给硬件,同时判断发送队列中的空闲元素是否高于水平线,如果高于则判断802.11协议栈是否挂起,如果挂起怎唤醒。

  悟空:哇,这个设计已经很完美了啊,按理来说部应该再有什么问题了啊?圆方,你怎么看呢?

  圆方:完美是很完美,但是你没发现吗,如果发送队列挂起了,而中断又不唤醒,那么不就数据永远也发送不出去了吗?

  悟空无语。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值