自定义 linux 内核的 ioctl 突然停止响应并在几分钟后重新启动
Posted
技术标签:
【中文标题】自定义 linux 内核的 ioctl 突然停止响应并在几分钟后重新启动【英文标题】:custom linux kernel's ioctl stops responding abruptly and starts again in few minutes 【发布时间】:2012-03-14 16:29:53 【问题描述】:设置: 我有一个调用 IOCTL 的 CP 进程。然后内核 IOCTL 处理程序将某些内容写入硬件并返回结果。这种看门狗打孔以周期性间隔发生。
问题: 使用调试打印我验证了 CP 进程和内核模块同时停止打印调试。内核模块总是完成它的任务。几分钟后,调试再次开始打印。虽然存在问题,但我通过运行 ls、top 等验证了内核本身没有挂起。
我了解内核模块可能没有问题。那么我从哪里开始寻找呢?
【问题讨论】:
【参考方案1】:您的 IOCTL 处理程序是否使用阻塞 IO 访问硬件?如果 IOCTL 处理程序必须等待硬件响应,则时间可能会超过看门狗时间限制并导致看门狗重新启动。也许检查如何访问硬件是一个开始的方向。
【讨论】:
【参考方案2】:那么我从哪里开始寻找呢?
我将首先使用strace -eioctl ...
检查是否在问题存在时调用。
【讨论】:
以上是关于自定义 linux 内核的 ioctl 突然停止响应并在几分钟后重新启动的主要内容,如果未能解决你的问题,请参考以下文章
Linux 内核 4.8.0-53-generic Linux Mint 64 位中 IOCTL 函数的不兼容指针初始化错误