Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux kernel 避免自旋锁死锁_Linux Kernel_Linux Device Driver - Fatal编程技术网

Linux kernel 避免自旋锁死锁

Linux kernel 避免自旋锁死锁,linux-kernel,linux-device-driver,Linux Kernel,Linux Device Driver,假设一个设备函数持有一个自旋锁来控制对设备的访问。当锁被保持时,设备会发出一个中断,导致中断处理程序运行。在访问设备之前,中断处理程序还必须获得锁 假设中断处理程序与最初取出锁的代码在同一处理器中执行 知道持有自旋锁会禁用相关处理器上的抢占,那么持有自旋锁的代码是否可能在另一个处理器上执行(因为该处理器上的抢占)?(我们假设这是一台SMP机器)持有自旋锁的代码是否可能在另一个处理器上执行(因为该处理器上存在抢占)? 不,代码只是一直在等待中断处理程序返回 只要使用spin\u lock\u ir

假设一个设备函数持有一个自旋锁来控制对设备的访问。当锁被保持时,设备会发出一个中断,导致中断处理程序运行。在访问设备之前,中断处理程序还必须获得锁

假设中断处理程序与最初取出锁的代码在同一处理器中执行

知道持有自旋锁会禁用相关处理器上的抢占,那么持有自旋锁的代码是否可能在另一个处理器上执行(因为该处理器上的抢占)?(我们假设这是一台SMP机器)

持有自旋锁的代码是否可能在另一个处理器上执行(因为该处理器上存在抢占)? 不,代码只是一直在等待中断处理程序返回

只要使用
spin\u lock\u irq*()
,或者
spin\u lock\u bh()
,如果您还想防止软irq/tasklet