顯示廣告
隱藏 ✕
看板 SuperTree
作者 dick51207 (dick51207.bbs@ptt.cc)
標題 Re: [問題] Linux Kernel 的 preempt 問題
時間 2018年03月07日 Wed. PM 05:46:24


※ 本文轉寄自 dick51207.bbs@ptt.cc

看板 LinuxDev
作者 tassader (ppp)
標題 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
sk2:感謝解答1F 09/22 01:43
zwai:SA_INTERRUPT現在已經改用IRQF_DISABLED囉~2F 09/22 23:09
tassader:感謝樓上指正3F 09/23 18:17

--
※ 看板: SuperTree 文章推薦值: 0 目前人氣: 0 累積人氣: 16 
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇