我想编写一个可以接受一些任意中断的FreeBSD内核模块,在接收到这些中断时,将一些数据输出到任意设备。目前,我面临着几个问题:
request_irq()调用,但是似乎FreeBSD没有类似的API .比如说,我希望能够通过我的内核模块(键盘在irq1上)检测到所有的键盘中断,我该怎么做呢?(在Linux上,可以通过调用free_irq(1, NULL)和request_irq(1, ...)来纠正我的错误。)device_t节点写入设备?)我之所以在内核中这样做,是因为我确实需要命中所有的中断,并且在用户空间中运行它有可能因为内核线程抢占用户线程而丢失中断(中断可能非常频繁)。
如果有人能给我提供一些关于如何实现这个程序的其他想法,我也会很感激(基本上,这个想法是一个内核模块,可以完成微控制器的工作.)
发布于 2017-07-11 22:34:45
您可以向bus_setup_intr注册IRQ处理程序。
通常,在这种情况下,我们要做的是让一个驱动程序收集中断和任何其他有用的数据,然后通过一个设备导出它,然后(可能是实时的?)用户空间中的进程可以从一个设备读取,做它需要做的任何事情,并写入另一个设备。
https://stackoverflow.com/questions/44856038
复制相似问题