【发布时间】:2013-02-13 05:14:16
【问题描述】:
我正在尝试使在 2.6.32 内核上运行的内核模块在 3.6 内核上运行。我们使用 IOCTL 调用来更新 Linux 内核模块中的结构。这些调用在 2.6.32 内核中运行良好。
当我在 3.6 内核中尝试相同的操作时,只要从用户空间应用程序进行 ioctl 调用,我就会面临内核挂起。它是基于套接字的接口而不是基于文件的接口,因此我们使用 struct proto_ops 下的 ioctl。
由于没有生成核心转储,我该如何调试这种情况。要从用户空间复制数据,我正在使用 copy_from_user 命令。
任何调试此场景的指针都会非常有帮助
【问题讨论】:
-
系统挂起后系统日志有什么特别的地方吗?挂起可能是内核 oops 或恐慌等的迹象。即使内核崩溃,您是否尝试过通过串行控制台输出系统日志以可靠地获取它?此外,如果您可以在此处发布代码的相关部分,这可能有助于找出问题所在。
标签: linux module linux-kernel ioctl