**你好,我是一个新手,在LINUX中使用3 16550 UART芯片为基于串行PCI的板编码驱动程序。每个芯片支持4个通道(4个串口)
在我的Linux驱动程序代码中,我已经想到为每个端口使用线程,即总共4x3=12端口。你认为给每个端口一个专用线程是一个好主意吗?我可以使用一个特定的通道来实现一个零调制解调器,其他通道RS422,其他通道RS485等等
我认为线程编程的原因是所有线程都是独立操作的,每个线程返回的每个端口可能是活动的或不使用的。因此,我的目标是使它们尽可能地相互独立。
请让我知道这种类型的驱动程序的整体设计应该是什么样的。请提供链接/来源,以防此类类似的实现。
这是我第一次做这样的事。我的逻辑是正确的/不正确的,还是只是一个错误的流程,只是无效的,听起来绝对可怕谢谢你的问候**Linux内核有很多为处理串行IO而设计的体系结构代码。据我所知,没有明确需要线程,因为通知等是由内核通过回调等完成的。选择一本关于Linux驱动程序开发的书可能不会有什么坏处。
我猜在每个端口上你会有一些协议运行,在这种情况下,每个端口1个线程的设计在IMO上很有意义,因为它允许你清晰地构建协议驱动程序。
我们已经使用这样的设计多年了,由于历史原因,我们使用System V消息将协议线程与dispatcher/supervisor线程连接起来。SysV消息并非没有自己的问题(例如,它们不支持select()
),因此您可能需要查看这篇so文章以获取替代方案。