Moxa RealTTY模块在Linux内核3.16上的编译错误

我在Debian 7.0上使用了内核3.2的MOXA设备。 我能够成功编译这个内核的Moxa RealTTY驱动程序,但是当我升级到Debian 8.0内核3.16后,我无法编译它。 我问MOXA最新的司机,但迄今没有答案。 最新的驱动程序是从这个链接下载http://mtsc.moxa.com:8888/Software/DN/NPort/Driver/RealTTY/ ,但这个链接不工作了。

当我运行./mxinst它崩溃的这个错误:====================================== =========================================版权所有(C)2002-2014 Moxa公司。 版权所有。

MOXA NPort Server Real TTY Driver V1.18.33 Installation. System Information: Kernel 3.16.0-4-amd64; Machine x86_64. =============================================================================== Tar files, please wait ... OK! Building driver... If you want to use secure communication with target, you might choose [y] to enable the SSL function. Note: This function support RealCOM with secure mode only. Do you want to enable secure function? [y/N]. n make -C /lib/modules/3.16.0-4-amd64/build SUBDIRS=/opt/moxa.git/npreal2 modules make[1]: Entering directory '/usr/src/linux-headers-3.16.0-4-amd64' Makefile:10: *** mixed implicit and normal rules: deprecated syntax make[1]: Entering directory `/usr/src/linux-headers-3.16.0-4-amd64' CC [M] /opt/moxa.git/npreal2/npreal2.o /opt/moxa.git/npreal2/npreal2.c: In function 'npreal_wait_command_completed': /opt/moxa.git/npreal2/npreal2.c:4744:13: error: implicit declaration of function 'interruptible_sleep_on_timeout' [-Werror=implicit-function-declaration] interruptible_sleep_on_timeout(&nd->cmd_rsp_wait,timeout); ^ cc1: some warnings being treated as errors /usr/src/linux-headers-3.16.0-4-common/scripts/Makefile.build:268: recipe for target '/opt/moxa.git/npreal2/npreal2.o' failed make[4]: *** [/opt/moxa.git/npreal2/npreal2.o] Error 1 /usr/src/linux-headers-3.16.0-4-common/Makefile:1350: recipe for target '_module_/opt/moxa.git/npreal2' failed make[3]: *** [_module_/opt/moxa.git/npreal2] Error 2 Makefile:181: recipe for target 'sub-make' failed make[2]: *** [sub-make] Error 2 Makefile:8: recipe for target 'all' failed make[1]: *** [all] Error 2 make[1]: Leaving directory '/usr/src/linux-headers-3.16.0-4-amd64' Makefile:67: recipe for target 'module' failed make: *** [module] Error 2 Check Driver... FAILED !!! Install Not Completed ! 

我已经上传最新的驱动程序到GitHub( https://github.com/rchovan/npreal2 )。 有人可以帮我修复这个模块在Linux内核3.16和最新?

谢谢

内核版本3.15中删除了函数interruptible_sleep_on_timeout

缺少函数的解决方法可以在许多补丁中找到,例如这个lm-sensors补丁 :

 - timeout = interruptible_sleep_on_timeout(&w1_control_wait, timeout); + prepare_to_wait(&w1_control_wait, &wait, TASK_INTERRUPTIBLE); + timeout = schedule_timeout(timeout); + finish_wait(&w1_control_wait, &wait); 

我根据这个解决方案修补了艾灸驱动程序,并在你的github回购站里提出了一个请求。 请测试它。