看板 SuperTree
作者 標題 Re: [問題] Linux Kernel 的 preempt 問題
時間 2018年03月07日 Wed. PM 05:46:24
※ 本文轉寄自 dick51207.bbs@ptt.cc
看板 LinuxDev
作者 標題 Re: [問題] Linux Kernel 的 preempt 問題
時間 Sat Sep 19 18:58:18 2009
※ 引述《sk2 (夏天來了)》之銘言:
: ※ [本文轉錄自 C_and_CPP 看板]
: 作者: sk2 (夏天來了) 看板: C_and_CPP
: 標題: [問題] Linux Kernel 的 preempt 問題
: 時間: Sat Sep 19 16:04:33 2009
: 最近在寫 Linux kernel module 遇到了一些疑惑,
: 想請教一下板上的各位先進,
: 程式執行的環境是 embedded 的 Linux,只有一顆 ARM9 的 CPU
: Kernel 的 Preemtible 選項是關閉的。
: 1. ISR (interrupt service routine) 會被同一個 IRQ 的 ISR 打斷嗎?
: 2. ISR 會被不同 IRQ 的 ISR 打斷嗎?
: 3. 一般的 Kernel Thread 在沒有 sleep 的狀態下會被 ISR 打斷嗎?
: 4. 由 User 層呼叫 ioctl 或是 read/write,其在 Kernel 層執行的其間,
: 在沒有 sleep 的狀態下,會被 ISR 打斷嗎?
: 感謝各位 :)
中斷發生進入ISR是硬體的動作 如果沒去把他mask掉的話
無論什麼東西都有可能被ISR中斷
不過同一個IRQ的話 在開始進到各個driver的interrupt handler之前
該IRQ就會被mask掉了 所以ISR是不會被同IRQ的ISR再中斷的
不同IRQ的ISR的話 就要看註冊IRQ的時候 有沒有以SA_INTERRUPT的flag去註冊
如果有的話 就不會被不同IRQ的ISR中斷 反之 則有可能被其他IRQ中斷
(以該flag註冊IRQ 在進入interrupt handler之前 所有其他的IRQ都會被mask)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.25.4.157
推 :感謝解答1F 09/22 01:43
→ :SA_INTERRUPT現在已經改用IRQF_DISABLED囉~2F 09/22 23:09
→ :感謝樓上指正3F 09/23 18:17
--
※ 看板: SuperTree 文章推薦值: 0 目前人氣: 0 累積人氣: 16
回列表(←)
分享