首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查是否在核心转储中持有自旋锁。

检查是否在核心转储中持有自旋锁。
EN

Stack Overflow用户
提问于 2015-01-02 08:40:01
回答 3查看 1.6K关注 0票数 4

我试图分析Linux内核内核转储中的自旋锁变量。在互斥锁的情况下,如果互斥锁住了,计数变量的值应该是0。如果是自旋锁,spinlock_t my_lock的字段如下

代码语言:javascript
运行
复制
(struct raw_spinlock) rlock
      (arch_spinlock_t) raw_lock
            (unsigned int) lock 
      (unsigned int) break_lock

整数变量的值为0。如果锁被拿走了,会不会有不同的值?是否有其他方法检查自旋锁变量的转储,以确定它是否已被接受?价值体系结构是依赖的吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-01-09 05:19:26

在调用die()之后,我收集了一个核心转储,并检查了die_lock自旋锁变量的状态,该变量在die()发生时被锁在traps.c中。锁定情况下锁的值为1。这说明了一些问题。

但是也有带有大整数值的锁。还在努力弄清楚。

票数 0
EN

Stack Overflow用户

发布于 2015-01-02 16:14:53

尝试使用spin_is_locked()

(以Spinlock.h定义)

票数 0
EN

Stack Overflow用户

发布于 2015-01-09 09:28:33

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27739481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档