检查核心转储中是否存在自旋锁

我正在尝试分析Linux内核的核心转储内的自旋锁variables。 在互斥体的情况下,如果互斥锁被locking,则countvariables的值应为0.在自旋锁的情况下,spinlock_t my_lock具有类似

(struct raw_spinlock) rlock (arch_spinlock_t) raw_lock (unsigned int) lock (unsigned int) break_lock 

整数variables的值为0.如果locking被采用,这些值是否会有不同的值? 是否有任何其他方式检查自旋锁variables的转储,看看它是否被采取? 价值体系结构是依赖的吗?

尝试使用spin_is_locked()

(在spinlock.h中定义)

在die()调用之后,我收集了一个core dump,并检查die(lock())发生时die_lock spinlock变量的状态,该变量在traps.c中被锁定。 锁定的情况下,锁的值为1。 这给了一些清晰。

但是也有大整数值的锁。 仍然试图弄清楚。

如果进行锁定,它将有不同的值。 您可以使用代码中的spin_is_locked()来检查。 但是,当你正在分析转储时,请检查spin_lock()是如何实现的。 它将提供有关如何检查和获取锁定的信息。 当然,spin_lock()是体系结构相关的代码,但逻辑是一样的。