编写适用于 Oracle® Solaris 11.2 的设备驱动程序

退出打印视图

更新时间: 2014 年 9 月
 
 

驱动程序上下文

驱动程序上下文是指驱动程序的当前运行环境。上下文会限制驱动程序可执行的操作。驱动程序上下文取决于调用的执行代码。驱动程序代码在以下四种上下文中执行:

  • 用户上下文。用户线程以同步方式调用驱动程序入口点时,此入口点具有用户上下文。即,用户线程会等待系统从调用的入口点返回。例如,通过 read(2) 系统调用来调用驱动程序的 read(9E) 入口点时,此入口点具有用户上下文。在这种情况下,驱动程序可访问用户区域,以在用户线程中复制数据。

  • 内核上下文。通过某部分内核调用驱动程序函数时,此函数具有内核上下文。在块设备驱动程序中,可以通过 pageout 守护进程来调用 strategy(9E) 入口点,以向设备中写入页面。由于页面守护进程与当前用户线程无关,因此在这种情况下 strategy (9E) 具有内核上下文。

  • 中断上下文 中断上下文是一种限制性更强的内核上下文形式。中断上下文是在提供中断服务的情况下调用。驱动程序中断例程在中断上下文中以关联的中断级别运行。回调例程也在中断上下文中运行。有关更多信息,请参见Chapter 8, Interrupt Handlers

  • 高级中断上下文.高级中断上下文是一种限制性更强的中断上下文形式。如果 ddi_intr_hilevel(9F) 指示某中断为高级中断,则驱动程序中断处理程序将在高级中断上下文中运行。有关更多信息,请参见Chapter 8, Interrupt Handlers

手册页的第 9F 节介绍了每个函数所允许的上下文。例如,在内核上下文中,驱动程序不得调用 copyin(9F)