编写设备驱动程序

使用任务队列

在驱动程序中的典型应用是在调用 attach(9E) 时创建任务队列。大多数 taskq_dispatch() 调用都来自中断上下文。

要了解 Solaris 驱动程序中使用的任务队列,请访问 http://hub.opensolaris.org/bin/view/Main/。 在右上角单击 "Source Browser"(源代码浏览器)。在搜索区域的 "Symbol"(符号)字段中,输入 ddi_taskq_create。在 "File Path"(文件路径)字段中输入 amr。在“项目”列表中选择 onnv。单击 "Search"(搜索)按钮。在搜索结果中,应可看到 Dell PERC 3DC/4SC/4DC/4Di RAID 设备的 SCSI HBA 驱动程序 (amr.c)。

单击文件名 amr.c。将在 amr_attach() 入口点中调用 ddi_taskq_create() 函数。ddi_taskq_destroy() 函数将在 amr_detach() 入口点中调用,也会在 amr_attach() 入口点的错误处理部分中调用。ddi_taskq_dispatch () 函数在 amr_done() 函数中调用,而后者在 amr_intr() 函数中调用。amr_intr () 函数是一个中断处理函数,它是 amr_attach() 入口点中的 ddi_add_intr(9F) 函数的参数。