首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将串口设备驱动程序从Linux 2.6.21移植到2.6.36?

如何将串口设备驱动程序从Linux 2.6.21移植到2.6.36?
EN

Stack Overflow用户
提问于 2012-07-25 02:15:01
回答 1查看 496关注 0票数 3

这两个内核之间的一段时间似乎改变了很多数据结构,这在几个地方破坏了我的驱动程序。

首先,在2.6.21中,结构信息有一个字段"struct uart_info * uart_port“,我在几个地方依赖它。我测试了几个地方,以确保它是非空的,如果非空,我还测试它的子字段(结构tty_struct *tty)是否为非空,并使用这些地方来检查是否启用了流控制,以及是否停止了传输。

在2.6.36中,info反向指针被删除了,我不确定如何获取它,或者我试图做的事情的语义是否还有效,因为唯一使用它的串行驱动程序似乎已经定义了处理它的代码,并另外将所有这些数据保存在自己的结构中(这如何工作,甚至正确地维护内核的状态)?

此外,缺少save_and_cli()和restore_flags()。我看到了新的函数local_irq_save()和local_irq_restore(),我可以直接改用它们吗,或者有什么问题吗?

最后,__ioremap不见了。看起来ioremap_noncache可能是替代品,但我还是不确定是否有任何语义差异或陷阱。我假设我不需要ioremap(),因为我直接与硬件对话,但其他一些驱动程序似乎是这样做的,我不知道为什么它会起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-25 11:54:06

查看使用相同功能的树内驱动程序在两个版本之间的变化通常是最好的方法。例如,ioc4_serial驱动程序在kernel 2.6.21中使用struct uart_portinfo成员,但已由kernel 2.6.36切换为使用struct uart_state *state成员。

该驱动程序通过以下方式获取tty_struct

代码语言:javascript
复制
state = the_port->state;
tty = state->port.tty;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11636860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档