**你好,我是一名新手编写的驱动程序,用于在LINUX中使用3 16550 UART芯片的基于PCI的串行板。每个uart芯片支持4个通道(4个串行端口)。
在我的Linux驱动程序代码中,我想过为每个端口使用线程,即共4x3 = 12个端口。你认为为每个端口提供一个专用线程是个好主意,我可能会使用一个特定的通道来实现一个零调制解调器,其他通道RS422其他一些通道RS485等等
我认为线程编程的原因是所有线程都要独立运行,每个线程 - 每个端口都可能处于活动状态或未使用。所以我的目标是让它们尽可能地彼此独立。
请让我知道这种类型的驱动程序的总体设计应该是什么样的。请提供类似的链接/来源。
这是我第一次做这样的事情..我的逻辑是正确的/不正确的还是只是一个错误的流程,这是无效的,听起来绝对可怕 谢谢和问候**
答案 0 :(得分:0)
我猜测在每个端口上你都会运行一些协议,在这种情况下,每个端口有一个线程的设计很有意义IMO,因为它允许你干净地构建协议驱动程序。
我们多年来一直在使用这样的设计,并且由于历史原因,我们使用System V消息将协议线程与调度程序/管理程序线程连接起来。 SysV消息并非没有自己的问题(例如,它们不具有select()
能力),因此您可能希望查看this SO article替代方案。
答案 1 :(得分:0)
Linux内核有许多用于处理串行IO的架构代码。据我所知,没有明确需要线程,因为内核通过回调等来完成通知等。拿起一本关于Linux驱动程序开发的书可能不会有什么坏处。