主题 : 锁的问题 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 8904
精华: 0
发帖: 54
金钱: 400 两
威望: 155 点
综合积分: 108 分
注册时间: 2009-09-10
最后登录: 2017-09-13
楼主  发表于: 2009-12-14 14:32

 锁的问题

请问spin_lock_irq怎么使用,使用的时候要注意些什么,我的会出现下面的问题:
BUG: spinlock bad magic on CPU#0, main/864
lock: bf00c5cc, .magic: 00000000, .owner: <none>/-1, .owner_cpu: 0

这是什么原因呢?大家帮帮忙解决一下,谢谢
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2009-12-14 15:14
1. 贴出你用spin_lock_irq()的源代码
2. 贴出出现上面这个错误信息的完整输出。

关于spin_lock的用法,参考LDD3第五章5.5节, http://www.gooth.cn/docs/LDD3/ch05s05.html
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 侠客
UID: 8904
精华: 0
发帖: 54
金钱: 400 两
威望: 155 点
综合积分: 108 分
注册时间: 2009-09-10
最后登录: 2017-09-13
2楼  发表于: 2009-12-14 16:31

 回 1楼(kasim) 的帖子

谢谢总版主,我找到问题了,是初始化的地方不对,用spin_lock_init()初始化的,放到正确的位置可以了,呵呵
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
3楼  发表于: 2009-12-14 16:49

 回 2楼(aoxing) 的帖子

恭喜。不过还是希望你能分享出你的源代码,这样对别人分析问题会很有帮助,谢谢。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 侠客
UID: 8904
精华: 0
发帖: 54
金钱: 400 两
威望: 155 点
综合积分: 108 分
注册时间: 2009-09-10
最后登录: 2017-09-13
4楼  发表于: 2009-12-15 09:17
源码基本上是下面的结构:
spin_lock_irq(x);
memcpy(...);
spin_unlock_irq(x);

在初始化函数中加入初始化x的语句就可以了。