12.3 轮询

static void xxx_poll ( struct cam_sim *sim );

  轮询函数用于当中断子系统不起作用时(例如,系统崩溃或正在创建 系统转储)模拟中断。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有问题,请先阅读文档,如不能解决再联系<questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.