Linux 旋转锁定irqsave和分配在rcu读取锁定内
你好, 我有一个驱动程序代码,它应该对接口上接收到的某些数据包起作用。驱动程序使用spin_lock_irqsave来管理并行请求,然后再将其发送给硬件。 为了处理数据包,它需要一些由我正在编写的内核模块提供的上下文信息。可以使用受rcu保护的hlist管理多个上下文信息。现在,当数据包到达时,该模块应该使用rcu_read_lock()中的数据包签名查找上下文信息,然后将数据包和找到的上下文提供给驱动程序。 现在,我已经读到内核线程/模块不应该在rcu_read_lock()中阻塞/休眠,我应该如何管理它 谢谢你的帮助?Linux 旋转锁定irqsave和分配在rcu读取锁定内,linux,linux-kernel,spinlock,rcu,Linux,Linux Kernel,Spinlock,Rcu,你好, 我有一个驱动程序代码,它应该对接口上接收到的某些数据包起作用。驱动程序使用spin_lock_irqsave来管理并行请求,然后再将其发送给硬件。 为了处理数据包,它需要一些由我正在编写的内核模块提供的上下文信息。可以使用受rcu保护的hlist管理多个上下文信息。现在,当数据包到达时,该模块应该使用rcu_read_lock()中的数据包签名查找上下文信息,然后将数据包和找到的上下文提供给驱动程序。 现在,我已经读到内核线程/模块不应该在rcu_read_lock()中阻塞/休
可以在RCU读取侧部分内使用自旋锁。当然,互斥锁和其他“可解析”的东西是不允许的。这类似于中断处理程序的规则,等等。这是因为,自旋锁在锁可用之前不会休眠和自旋吗?好的,是的。它不会将当前CPU分配给任何其他任务。