草庐IT

Linux内核死锁检测工具——Lockdep

文章目录前言配置内核简单的AB-BA死锁案例实际项目中的死锁前言死锁是指两个或多个进程因争夺资源而造成的互相等待的现象,如进程A需要资源X,进程B需要资源Y,而双方都掌握对方所需要的资源,且都不释放,这会导致死锁。在内核开发中,时常要考虑并发设计,即使采用正确的编程思路,也不可能避免会发生死锁。在Linux内核中,常见的死锁有如下两种:递归死锁:如在中断延迟操作中使用了锁,和外面的锁构成了递归死锁。AB-BA死锁:多个锁因处理不当而引发死锁,多个内核路径上的锁处理顺序不一致也会导致死锁。Linux内核在2006年引入了死锁调试模块lockdep,lockdep会跟踪每个锁的自身状态和各个锁之间

c - 如何使用 linux 内核中的 lockdep 功能进行死锁检测

我有一个Linux内核驱动程序和一个与之交互的用户应用程序。内核驱动程序中存在死锁。我在名为“lockdep”的Linux内核中遇到了这个功能。我能够配置它并重新编译我的内核(我确实在/proc中看到了lockdep文件夹)。但我不知道如何推断该工具的输出或如何使用该工具调试驱动程序。任何帮助将不胜感激。谢谢! 最佳答案 要启用lockdep功能,请通过menuconfig编辑.config文件:makemenuconfig并在HackingOptions中启用以下功能:1.[*]DetectHardandSoftLockups2.