作者b98901056 (岳岳)
看板LinuxDev
标题[问题] 虚拟机keyboard driver更换
时间Sun Feb 4 01:19:59 2018
大家好
小弟目前用虚拟机在练习写一些kernel module
目前在简单的keyboard driver
想法是用interrupt handler(自己写的,而不是i8042这个)去处理 IRQ1
不过目前遇到个问题:
因为i8042就有一个interrupt handler去处理键盘的中断
所以变成每次都会有两个handler去处理(?)
虽然是成功request_irq了 ( cat /proc/interrupts 有看到我写的和i8042)
遇到的问题:
是否有办法先把i8042 在我insmod时用类似free_irq()方式拔掉,
等我rmmod我自己的module时 再把它装回来呢?
(查了一些资料但是好像都没有解)
而我自己尝试free_irq 里面需要的dev_id 我没办法拿i8042的dev_id来用
因为在 i8042.c 这里面他是宣告成static的
另外在这边
http://www.tldp.org/LDP/lkmpg/2.4/html/x1210.html
看他范例给的 free_irq(1, NULL) 好像会把irq1 的handler全部清掉
不过我试了以後 只有得到 trying to free already-free IRQ1
(这样感觉比较合理 因为需dev_id才能知道要free 哪个吧?)
请大家指点 谢谢
--
阿.阿..>///< YOOOOO~ 我们...
ˊ
呜~ ˊ
□ □ □ ˊ
□ □ □ 真的只是...
□□ □□ □□ □□ □□ □□ □□
□ □ □ □□ □ □ □ 俄罗斯方块...
ξhsiao335.
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 155.41.126.177
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/LinuxDev/M.1517678404.A.73C.html
1F:→ galic: 这篇范例阿..他kernel还在2.4 所以他的dev_id才可以传NULL 02/04 12:57
2F:→ galic: 你可以用irq_to_desc(irq)把irq转struct irq_desc 02/04 12:58
3F:→ galic: 里面有个 struct irqaction *action; 就是irq action list 02/04 12:59
4F:→ galic: struct irqaction里面就有dev_id 02/04 12:59
5F:→ galic: 你可以检查name栏位是不是你要free的action (i8042) 02/04 13:02
6F:→ galic: 不是的话可以一路next到NULL为止 02/04 13:06
7F:→ b98901056: 谢谢g大 我研究一下 02/05 03:30