|
|
1
2
这是一条诊断信息,旨在引起注意可能的死锁。 在这种特殊情况下,有一个由旋转锁保护的传输队列。除了这个锁之外,传输队列还维护一个“所有者”字段,该字段包含一个在持有这个spinlock时设置的cpuid。 正如您可能知道的,如果请求的锁已经被占用,spin lock将始终在CPU上旋转。 所以 at this location 代码检查CPU是否与锁定spinlock的CPU相同。 如果它不在同一个CPU上,它将执行可能需要获取锁的操作。 另一方面,如果它是同一个CPU,有些事情是不正确的,即我们实际上应该在旋转等待锁。可能是因为一个错误的中断处理程序/下半部分。 因为这表示可能出现死锁,所以会打印一条诊断消息:)。 |
|
|
2
0
调试?你的意思是,需要知道 where in the source ? |
|
|
3
0
好的,明白了。 当您在Linux内核的单个执行上下文(例如,SoftIRQ的单个实例等)中两次输入相同的函数(引用相同的内核资源)时,通常会发生这种情况。 解决此问题的方法是确保在同一执行上下文中不重复输入函数两次。如果发生这种情况,这是代码中的一个错误。 |
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 1 年前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
Bobby · 复合字面值总是左值吗? 1 年前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 1 年前 |