Linux字符设备驱动程序如何检测使用它的程序何时异常退出?
发布时间:2020-12-13 19:06:32 所属栏目:Linux 来源:网络整理
导读:我有一个Linux角色设备驱动程序,它创建一个/ dev / mything条目,然后是一个打开设备并使用它的C / Qt程序.如果该程序正确退出,使用exit(),设备将关闭,驱动程序将自行重置.但是如果程序异常退出,通过segfault或SIGINT或其他东西,设备没有正确关闭. 我目前的解
我有一个Linux角色设备驱动程序,它创建一个/ dev / mything条目,然后是一个打开设备并使用它的C / Qt程序.如果该程序正确退出,使用exit(),设备将关闭,驱动程序将自行重置.但是如果程序异常退出,通过segfault或SIGINT或其他东西,设备没有正确关闭. 我目前的解决方法是在驱动程序陷入“打开”状态时重新加载驱动程序. 驱动程序中的这一行试图阻止多个程序同时使用该设备:
然后这清理它:
我认为exit()导致mything_release被调用但是SIGINT没有被调用.如何在这种情况下使驱动程序更加强大? 编辑: 以下是我实施的操作.也许我错过了什么?
最佳答案
没有必要进行这项测试;问题不在于程序终止异常(从驾驶员的角度来看,这与设备上的正常关闭完全相同),而是在设备的状态保持方面存在问题.换句话说,如果在程序崩溃的确切位置插入close(dev_fd)或甚至exit(0),则会遇到同样的问题.
您应该弄清楚您的驱动程序行为的哪个部分导致它保持繁忙状态并修复它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |