Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/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 旋转锁定irqsave和分配在rcu读取锁定内_Linux_Linux Kernel_Spinlock_Rcu - Fatal编程技术网

Linux 旋转锁定irqsave和分配在rcu读取锁定内

Linux 旋转锁定irqsave和分配在rcu读取锁定内,linux,linux-kernel,spinlock,rcu,Linux,Linux Kernel,Spinlock,Rcu,你好, 我有一个驱动程序代码,它应该对接口上接收到的某些数据包起作用。驱动程序使用spin_lock_irqsave来管理并行请求,然后再将其发送给硬件。 为了处理数据包,它需要一些由我正在编写的内核模块提供的上下文信息。可以使用受rcu保护的hlist管理多个上下文信息。现在,当数据包到达时,该模块应该使用rcu_read_lock()中的数据包签名查找上下文信息,然后将数据包和找到的上下文提供给驱动程序。 现在,我已经读到内核线程/模块不应该在rcu_read_lock()中阻塞/休

你好,

我有一个驱动程序代码,它应该对接口上接收到的某些数据包起作用。驱动程序使用spin_lock_irqsave来管理并行请求,然后再将其发送给硬件。

为了处理数据包,它需要一些由我正在编写的内核模块提供的上下文信息。可以使用受rcu保护的hlist管理多个上下文信息。现在,当数据包到达时,该模块应该使用rcu_read_lock()中的数据包签名查找上下文信息,然后将数据包和找到的上下文提供给驱动程序。

现在,我已经读到内核线程/模块不应该在rcu_read_lock()中阻塞/休眠,我应该如何管理它

谢谢你的帮助?

可以在RCU读取侧部分内使用自旋锁。当然,互斥锁和其他“可解析”的东西是不允许的。这类似于中断处理程序的规则,等等。这是因为,自旋锁在锁可用之前不会休眠和自旋吗?好的,是的。它不会将当前CPU分配给任何其他任务。