编写设备驱动程序

中断函数

中断函数包括:

ddi_intr_add_handler(9F)

添加中断处理程序。

ddi_intr_add_softint(9F)

添加软中断处理程序。

ddi_intr_alloc(9F)

为指定类型的中断分配系统资源和中断向量。

ddi_intr_block_disable(9F)

禁用指定范围的中断。仅适用于 MSI。

ddi_intr_block_enable(9F)

启用指定范围的中断。仅适用于 MSI。

ddi_intr_clr_mask(9F)

如果已启用指定的中断,则清除中断屏蔽码。

ddi_intr_disable(9F)

禁用指定的中断。

ddi_intr_dup_handler(9F)

仅适用于 MSI-X。将分配的中断向量的地址和数据对复制到同一设备上未使用的中断向量。

ddi_intr_enable(9F)

启用指定的中断。

ddi_intr_free(9F)

针对指定的中断句柄释放系统资源和中断向量。

ddi_intr_get_cap(9F)

针对指定的中断返回中断功能标志。

ddi_intr_get_hilevel_pri(9F)

返回高级别中断的最低优先级别。

ddi_intr_get_navail(9F)

返回可用于特定硬件设备和给定中断类型的中断的数量。

ddi_intr_get_nintrs(9F)

针对给定的中断类型获取设备支持的中断数。

ddi_intr_get_pending(9F)

读取中断待处理位(如果主桥 (host bridge) 或设备支持)。

ddi_intr_get_pri(9F)

返回指定中断的当前软件优先级设置。

ddi_intr_get_softint_pri(9F)

返回指定中断的软中断优先级。

ddi_intr_get_supported_types(9F)

返回设备和主机均支持的硬件中断类型。

ddi_intr_remove_handler(9F)

删除指定的中断处理程序。

ddi_intr_remove_softint(9F)

删除指定的软中断处理程序。

ddi_intr_set_cap(9F)

为指定的中断设置 DDI_INTR_FLAG_LEVEL 或 DDI_INTR_FLAG_EDGE 标志。

ddi_intr_set_mask(9F)

如果已启用指定的中断,则设置中断屏蔽码。

ddi_intr_set_pri(9F)

设置指定中断的中断优先级别。

ddi_intr_set_softint_pri(9F)

更改指定软中断的相对软中断优先级。

ddi_intr_trigger_softint(9F)

触发指定的软中断。

要利用新框架的功能,请使用上述接口。请勿使用下表中列出的过时接口。保留这些过时接口只是出于兼容性目的。

表 B–3 过时的中断函数

过时的中断函数 

替代函数 

ddi_add_intr(9F)

包含三个步骤的过程: 

  1. ddi_intr_alloc(9F)

  2. ddi_intr_add_handler(9F)

  3. ddi_intr_enable(9F)

ddi_add_softintr(9F)

ddi_intr_add_softint(9F)

ddi_dev_nintrs(9F)

ddi_intr_get_nintrs(9F)

ddi_get_iblock_cookie(9F)

包含三个步骤的过程: 

  1. ddi_intr_alloc(9F)

  2. ddi_intr_get_pri(9F)

  3. ddi_intr_free(9F)

ddi_get_soft_iblock_cookie(9F)

包含三个步骤的过程: 

  1. ddi_intr_add_softint(9F)

  2. ddi_intr_get_softint_pri(9F)

  3. ddi_intr_remove_softint(9F)

ddi_intr_hilevel(9F)

包含三个步骤的过程: 

  1. ddi_intr_alloc(9F)

  2. ddi_intr_get_hilevel_pri(9F)

  3. ddi_intr_free(9F)

ddi_remove_intr(9F)

包含三个步骤的过程: 

  1. ddi_intr_disable(9F)

  2. ddi_intr_remove_handler(9F)

  3. ddi_intr_free(9F)

ddi_remove_softintr(9F)

ddi_intr_remove_softint(9F)

ddi_trigger_softintr(9F)

ddi_intr_trigger_softint(9F)