【发布时间】:2014-03-24 00:50:39
【问题描述】:
我是 Linux 内核的新手。我正在阅读“Linux Kernel Development,Robert Love 3rd Edition,第 7 章中断和中断处理程序”中的 Linux 内核。为了注册一个中断处理程序,Linux 使用 request_irq() 函数:
int request_irq(
unsigned int irq ,
irq_handler_t handler,
unsigned long flags ,
const char *name,
void *dev)
由于我是 Linux Kernel 的新手,所以我对 Linux 中的中断有一些疑问:
Q1 -> Are interrupt lines are software or hardware ?
Q2 -> "irq" , first argument passed to request_irq() , is it interrupt line number or interrupt number ?
Q3 -> If interrupt line is hardware then , is it the criteria to limit the number of different interrupts an OS can support , if it is not then how we limit the number of different interrupts an OS can support ?
还有一个帮助,当我阅读时,我被以下几行打动了:
"请注意,request_irq() 可以休眠,因此不能从中断上下文或其他代码无法阻塞的情况下调用。当休眠不安全时调用 request_irq() 是常见的错误。部分原因是request_irq() 可以阻塞:确实很清楚。(页码:117)"
我无法理解这些行的含义,为什么 request_irq() 不安全以及如何?而且我也无法理解中断上下文的确切含义?
如有任何帮助,我将不胜感激!
谢谢!
【问题讨论】:
-
您目前如何回答这些问题?请尝试自己回答,我们无法告诉您是否正确。但请先向我们展示您自己完成的一些工作。
-
@JohannesH。 ,嘿....非常感谢你,真的是一个很好的建议。我在我的大学学习过操作系统课程,我真的无法自己回答这些问题,我问过......但我真的很感谢你的建议。
标签: linux linux-kernel