在VirtualBox中添加键盘的IRQ处理程序

发布于 2025-01-27 17:15:41 字数 1604 浏览 4 评论 0原文

我正在尝试编写简单的内核模块,该模块可以通过将共享的中断处理程序注册到键盘或鼠标中断并在VirtualBox中读取时间戳,从而为用户提供随机数。问题是找不到VirtualBox如何处理键盘或鼠标中断,我应该使用哪个IRQ编号?

CAT /PROC /中断输出:

          CPU0       
  0:         30   IO-APIC   2-edge      timer
  1:         38   IO-APIC   1-edge      i8042
  8:          0   IO-APIC   8-edge      rtc0
  9:          0   IO-APIC   9-fasteoi   acpi
 12:        158   IO-APIC  12-edge      i8042
 14:          0   IO-APIC  14-edge      ata_piix
 15:        769   IO-APIC  15-edge      ata_piix
 16:        329   IO-APIC  16-fasteoi   enp0s8
 18:        713   IO-APIC  18-fasteoi   vmwgfx
 19:       5387   IO-APIC  19-fasteoi   enp0s3
 20:        327   IO-APIC  20-fasteoi   vboxguest
 21:      28865   IO-APIC  21-fasteoi   ahci[0000:00:0d.0], snd_intel8x0
 22:         26   IO-APIC  22-fasteoi   ohci_hcd:usb1
NMI:          0   Non-maskable interrupts
LOC:      82937   Local timer interrupts
SPU:          0   Spurious interrupts
PMI:          0   Performance monitoring interrupts
IWI:          0   IRQ work interrupts
RTR:          0   APIC ICR read retries
RES:          0   Rescheduling interrupts
CAL:          0   Function call interrupts
TLB:          0   TLB shootdowns
TRM:          0   Thermal event interrupts
THR:          0   Threshold APIC interrupts
DFR:          0   Deferred Error APIC interrupts
MCE:          0   Machine check exceptions
MCP:          3   Machine check polls
ERR:          0
MIS:          0
PIN:          0   Posted-interrupt notification event
NPI:          0   Nested posted-interrupt event
PIW:          0   Posted-interrupt wakeup event

I'm trying to write simple kernel module that can give a random number for user by registering shared interrupt handler to keyboard or mouse interrupts and reading timestamp in virtualbox. The problem is that is can't find out how does virtualbox handle the keyboard or mouse interrupts and which irq number should I use?

cat /proc/interrupts output:

          CPU0       
  0:         30   IO-APIC   2-edge      timer
  1:         38   IO-APIC   1-edge      i8042
  8:          0   IO-APIC   8-edge      rtc0
  9:          0   IO-APIC   9-fasteoi   acpi
 12:        158   IO-APIC  12-edge      i8042
 14:          0   IO-APIC  14-edge      ata_piix
 15:        769   IO-APIC  15-edge      ata_piix
 16:        329   IO-APIC  16-fasteoi   enp0s8
 18:        713   IO-APIC  18-fasteoi   vmwgfx
 19:       5387   IO-APIC  19-fasteoi   enp0s3
 20:        327   IO-APIC  20-fasteoi   vboxguest
 21:      28865   IO-APIC  21-fasteoi   ahci[0000:00:0d.0], snd_intel8x0
 22:         26   IO-APIC  22-fasteoi   ohci_hcd:usb1
NMI:          0   Non-maskable interrupts
LOC:      82937   Local timer interrupts
SPU:          0   Spurious interrupts
PMI:          0   Performance monitoring interrupts
IWI:          0   IRQ work interrupts
RTR:          0   APIC ICR read retries
RES:          0   Rescheduling interrupts
CAL:          0   Function call interrupts
TLB:          0   TLB shootdowns
TRM:          0   Thermal event interrupts
THR:          0   Threshold APIC interrupts
DFR:          0   Deferred Error APIC interrupts
MCE:          0   Machine check exceptions
MCP:          3   Machine check polls
ERR:          0
MIS:          0
PIN:          0   Posted-interrupt notification event
NPI:          0   Nested posted-interrupt event
PIW:          0   Posted-interrupt wakeup event

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文