错误:'usb_serial_probe'未声明,linux 3.10在设备驱动程序中

Ask*_*mov 0 linux linux-device-driver linux-kernel

我正在尝试编译一个Linux驱动USB转串口设备并获得错误

 /root/moxa_usb_to_serial/mxu11x0/driver/mxu11x0.c:307: error: ‘usb_serial_probe’ undeclared here (not in a function)
 /root/moxa_usb_to_serial/mxu11x0/driver/mxu11x0.c:308: error: ‘usb_serial_disconnect’ undeclared here (not in a function)
Run Code Online (Sandbox Code Playgroud)

我有linux

 Linux host 3.10.33-rt32.34.el6rt.x86_64 #1 SMP PREEMPT RT Wed May 28 09:57:12 CEST 2014 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

司机制造商实际上警告说,3.4以上的驱动程序可能不是可分隔的.然而,驱动程序本身相当小,我相信我可以做一些微不足道的修复.怎么解决这个问题?

saw*_*ust 5

司机制造商实际上警告说,3.4以上的驱动程序可能不是可分隔的.

快速检查一个符号表示内核USB串行接口的这一方面已发生变化.在3.10中,usb_serial_probe()设为静态(参见其3.10交叉引用),因此它不再是内核USB接口的一部分.没有必要去寻找要包含的"正确"头文件.
你做出"一些微不足道的修复"的假设可能会很仓促.

您需要获取3.4 Linux源代码树并找到USB串行接口的示例.
这是使用usb_serial_probe()的3.4驱动程序列表.
您需要找到类似于您尝试移植的驱动程序的3.4驱动程序,例如使用usb_serial_probe()usb_serial_disconnect(),例如usb/serial/generic.c.
然后在3.10源代码中找到该驱动程序的版本,并查看该驱动程序自3.4以来的演变情况(使用diffsdiff).
这些更改将指导您的驱动程序中必须修改的内容.