作者roylee17 (把我id还我阿......)
看板LinuxDev
标题Re: [问题] 关於interrupt是否需要lock的问题
时间Sat Feb 20 18:11:29 2010
※ 引述《musicguitar ()》之铭言:
: 想请问.
: 如果使用一个share的interrupt.也就是除了我自己的装置会触发这个中断
: 其他装置也会触发.
: (实际上这个是X86里的IRQ9.ACPI interrupt,我需要知道GPE0 触发讯号)
: 我是否需要做spin lock或是semaphore去做lock的动作.
需要 lock 与否,是取决你要存取的资料是否共享
而不是因为 irq 是不是共用
: 因为我在kernel 2.6.32使用这两个lock都会出现kernel error(类似kernel bug)的讯息.
: 我的ISR所做的事是去动作I2C.读取device的暂存器.
^^^^^^^^^^^^^^^^^^
除了你的 ISR 外,有其他的 code flow 会存取这个暂存器吗?
另外,ISR 中,不适用 semaphore
或是其他需要 process context 的同步机制
spin lock 应该是没问题的(需不需要是另外一回事)
如果你的 lock 是自己建的,记得初始化
如果是 lock 系统中现有的某个 lock,
那要检查一下整个 lock 的使用情况,
你有没有 double lock/unlock
error message 可以贴上来
: 另外.我曾在kernel 2.6.29中.semaphore不会出现error.只有spin lock会!
: 所以我觉得奇怪.ISR中.到底需不需要再做lock的动作.
: 因为我一lock就当机了!!!所以我现在是把lock都拿掉了!!
: 不知道会不会出问题...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.104.145.90