[问题] shared handlers时参数dev的用途是什么?

楼主: karta298905 (hay)   2016-02-27 13:38:34
小弟最近在学习linux kernel,然后有在阅读linux kernel development这本书
http://moodle2.insa-lyon.fr/pluginfile.php/16715/course/section/4469/
Linux%20Kernel%20Development%203rd%20Edition%20-%20Love%20-%202010.pdf
对于shared handlers中的参数dev有一些疑问
由116页可以知道利用下面的function可以注册一个handler
int request_irq(unsigned int irq,
irq_handler_t handler,
unsigned long flags,
const char *name,
void *dev)
然后对于指标dev在书上有两个解释,
(1) dev, is used for shared interrupt lines.When an interrupt handler
is freed, dev provides a unique cookie to enable the removal of only
the desired interrupt handler from the interrupt line. Without this
parameter, it would be impossible for the kernel to know which
handler to remove on a given interrupt line. (page 117)
(2) If this value (dev) is unique, it can act as a cookie to
differentiate between multiple devices potentially using the same
interrupt handler.
以下是小弟个人的解释:
第一个解释是在说当不同handler share同一个interrupt line的情况下dev
可以判断哪一个handler是要被移除的,而第二个则是说在多个device使用
相同handler之下,dev可以帮忙分辨是哪一个device。
如果上面的解释是对的那么指标dev真正的用途是什么呢?
是在区分同一个interrupt line上的handler还是区分同一个handler中的device?
其他书籍好像都没有对这点特别做解释。
另外,在第二点中有提到multiple device,是指完全一样的device吗?(同厂牌同
型号)还是不同的device可以用相同的handler呢? 感谢各位大大帮忙解惑
作者: aweilin   2016-03-08 08:10:00
可以传入自己定义的资料结构,透过读取Reg去看是哪一个中断源

Links booklink

Contact Us: admin [ a t ] ucptt.com