轮询函数用于当中断子系统不起作用时(例如,系统崩溃或正在创建
系统转储)模拟中断。CAM子系统在调用轮询函数前设置适当的中断级别。
因此它所需做全部的只是调用中断例程(或其他方法,轮询例程来 进行实际动作,
而中断例程只是调用轮询例程)。那么为什么要找麻烦
弄出一个单独的函数来呢?这是由于不同的调用约定。 xxx_poll
例程取结构cam_sim的指针作为参量,
而PCI中断例程按照普通约定取的是指向结构 xxx_softc
的指针,ISA中断例程只是取设备号,
因此轮询例程一般看起来像:
static void xxx_poll(struct cam_sim *sim) { xxx_intr((struct xxx_softc *)cam_sim_softc(sim)); /* for PCI device */ }
or
static void xxx_poll(struct cam_sim *sim) { xxx_intr(cam_sim_unit(sim)); /* for ISA device */ }
本文档和其它文档可从这里下载:ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
如果对于FreeBSD有问题,请先阅读文档,如不能解决再联系<[email protected]>.
关于本文档的问题请发信联系 <[email protected]>.