FreeBSD 系统结构手册
上一页 | 第12章 　通用访问方法SCSI控制器 | 下一页

# 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>.