[問題] non-reentrant disable_irq
最近在寫device driver,有需要去disable_irq,但和enable_irq不會成對
所以用了一個disable_irq_count來避免reentrance
又為了保護disable_irq_count,使用了spin_lock
後來打開CONFIG_DEBUG_ATOMIC_SLEEP才發現
disable_irq會sleep,所以不能用在spin_lock內
所以想請教一下要用什麼方式才能保護好disable_irq_count,
讓disable_irq只會執行一次
code:
void disableInterrupt() {
spin_lock_saveirq(&lock, flag);
if(disable_irq_count == 0) {
disable_irq(irq);
disable_irq_count++;
}
spin_lock_irqrestore(&lock, flag);
}
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.231.136.142
※ 文章網址: https://www.ptt.cc/bbs/LinuxDev/M.1514778279.A.33A.html
→
01/01 20:06,
7年前
, 1F
01/01 20:06, 1F
→
01/01 20:06,
7年前
, 2F
01/01 20:06, 2F
→
01/01 20:07,
7年前
, 3F
01/01 20:07, 3F
→
01/01 20:07,
7年前
, 4F
01/01 20:07, 4F
→
01/01 20:08,
7年前
, 5F
01/01 20:08, 5F
→
01/01 20:09,
7年前
, 6F
01/01 20:09, 6F
→
01/01 22:12,
7年前
, 7F
01/01 22:12, 7F
→
01/01 22:13,
7年前
, 8F
01/01 22:13, 8F
→
01/01 22:13,
7年前
, 9F
01/01 22:13, 9F
推
01/07 16:16,
7年前
, 10F
01/07 16:16, 10F
→
01/07 16:21,
7年前
, 11F
01/07 16:21, 11F
→
01/07 17:15,
7年前
, 12F
01/07 17:15, 12F
LinuxDev 近期熱門文章
PTT數位生活區 即時熱門文章