12.3. 轮询
上一页 | 第 12 章 通用访问方法SCSI控制器 | 下一页

## 12.3. 轮询

`static void fsfuncxxx_poll (` | struct cam_sim *sim`)`; |

`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 */ }

上一页 | 上一级 | 下一页
12.2. 通用基础结构 | 起始页 | 12.4. 异步事件

本文档和其它文档可从这里下载： ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题，请先阅读 文档，如不能解决再联系 <questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.