它是一个简单的内核模块——一个小的源文件。我不知道它为什么只对SourceForge大加赞赏,但它对我很有效。最好的一点是,它还可以模拟硬件管脚(rtc/cts dsr/dtr)。它甚至实现了tiocmget/tiocmset和tiocmiwait iotcl命令!
在最近的内核中,您可能会遇到编译错误。这很容易解决。只需在模块/tty0tty.c源的顶部插入几行(在includes之后):
#ifndef init_MUTEX
#define init_MUTEX(x) sema_init((x),1)
#endif
当加载模块时,它会创建4对串行端口。这些设备是/dev/tnt0到/dev/tnt7,其中tnt0连接到tnt1,tnt2连接到tnt3等。
您可能需要修复文件权限才能使用设备。
编辑:
我想我的热情有点快。虽然司机看起来很有前途,但似乎不稳定。我不确定,但我想它把我在家工作的办公室里的一台机器撞坏了。星期一回到办公室之前我不能检查。
第二件事是Tiocmiwait不起作用。代码似乎是从一些“微小的tty”示例代码中复制的。对tiocmiwait的处理似乎已经到位,但它永远不会唤醒,因为缺少相应的wake_up_interruptable()调用。
编辑:
办公室的车祸真是司机的错。初始化丢失,完全未测试的tiocmiwait代码导致了机器崩溃。
我昨天和今天都在重写驱动程序。有很多问题,但现在它对我很有效。驱动程序管理的硬件流控制仍然缺少代码,但我不需要它,因为我将使用用户模式代码中的tiocmget/tiocmset/tiocmiwait自己管理管脚。
若有人对我的代码版本感兴趣,请给我发一条消息,我会把它发给你们。