CN101176084A - 向用户模式驱动程序传递中断的方法 - Google Patents

向用户模式驱动程序传递中断的方法 Download PDF

Info

Publication number
CN101176084A
CN101176084A CNA2006800166994A CN200680016699A CN101176084A CN 101176084 A CN101176084 A CN 101176084A CN A2006800166994 A CNA2006800166994 A CN A2006800166994A CN 200680016699 A CN200680016699 A CN 200680016699A CN 101176084 A CN101176084 A CN 101176084A
Authority
CN
China
Prior art keywords
interruption
driver
user model
interrupt
device driver
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2006800166994A
Other languages
English (en)
Other versions
CN101176084B (zh
Inventor
M·泰鲁利
F·J·史密斯四世
J·L·海文斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN101176084A publication Critical patent/CN101176084A/zh
Application granted granted Critical
Publication of CN101176084B publication Critical patent/CN101176084B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Stored Programmes (AREA)

Abstract

用于提供其中设备驱动程序可在用户模式级运行的构架的系统和方法。平台(例如APIC)或总线(PCI总线)的通用特征被用于在无需等待用户级驱动程序清除设备中断的情况下,使CPU跳出中断模式。这允许在用户空间中编写完整的设备驱动程序。设备驱动程序还获得关于无中断优先级的中断的通知。可将相同的方案扩展至其中多个设备共享单个中断线的共享中断。

Description

向用户模式驱动程序传递中断的方法
技术领域
本发明一般涉及计算机硬件设备驱动程序的领域,尤其涉及在不同于内核模式的用户模式中提供和处理中断的系统和方法。
背景技术
微软WINDOWS操作系统以及其它操作系统中的驱动程序可运行在用户模式或内核模式中。用户模式驱动程序运行于其中执行包括受保护子系统代码的其它应用程序代码的非特权处理机模式中。用户模式驱动程序除通过调用进而调用系统服务的API之外,不能访问系统数据。内核模式驱动程序作为操作系统的执行程序-支持一个或多个受保护子系统的底层操作系统组件的一部分运行。
用户模式和内核模式驱动程序具有不同的结构、不同的入口点以及不同的系统接口。设备需要用户模式还是内核模式驱动器取决于设备的类型以及操作系统中已向其提供的支持。大多数驱动程序在内核模式中运行。内核模式驱动程序可执行特定受保护操作,并且可访问用户模式驱动程序不能访问的系统结构。
当硬件设备中断CPU时,CPU通过在内部屏蔽所有中断(在CPU级)并调用为中断服务设计的操作系统异常处理例程来响应。一般地,此例程将对APIC编程以屏蔽当前中断级及之下的中断,然后再次启用CPU级的中断。接着,将调用为生成中断的设备服务的驱动程序中断服务例程(ISR)。在共享中断的情况下,将依次调用ISR直至ISR之一指示它已处理中断。此时,中断应当已被处理,并且OS例程清除APIC级的中断并返回。当中断发生时,这整个进程运行于线程的上下文中,并且运行于提高的IRQL中。因此,ISR代码在仅适用于内核模式代码的高度受控的环境中运行。(即被执行的代码以及由该代码访问的数据必须是非分页的。代码不能按块记录等)。需要处理中断的设备驱动程序通常在内核模式中运行,因为用户模式中缺少对处理中断的支持。
因此,需要一种在用户模式中传递中断的操作系统机制,从而其它类型的设备可使用用户模式驱动程序。本发明提供了这样一种解决方案。
发明内容
本发明涉及用于允许设备驱动程序在用户模式级运行的系统和方法。平台(例如APIC)或总线(PCI总线)的通用特征是用于屏蔽中断直至可调度用户模式ISR来清除设备中断。因而,在标准用户模式环境中,中断处理程序可编写成用户模式代码。这允许将仅为了处理中断需要而必须预先编写成内核模式驱动程序的一类内核模式驱动程序转成用户模式。设备驱动程序仍接收关于无中断优先级的中断的通知。相同的方案可被扩展到共享中断,其中多个设备共享单个中断线。
根据本发明的一个特征,提供用作普通(generic)中断功能的内核服务。IPC机制允许组件彼此通信。I/O管理器执行组件的资源分配/引导程序/组件的安排(orchestration)。中断服务向I/O管理器提供工厂接口,以便分配要传递给驱动程序的中断对象。中断服务呈现第二接口,当用户模式驱动程序准备好接收中断时可以调用该第二接口。从该调用返回意味着发生了硬件中断,并且驱动程序应该告知/操作设备。
根据以下示例性实施例的详细描述并参考附图,本发明的其它特征和优点将变得显而易见。
附图说明
当结合附图阅读时,将更好地理解以上发明内容以及以下优选实施例的详细描述。为了说明本发明的目的,在附图中示出了本发明的示例性结构;然而,本发明并不限于所公开的特定方法和手段。在附图中:
图1是示出可实现本发明的各方面的示例性计算环境的框图;
图2示出了诸如图1的计算设备内的典型架构;
图3示出了处理中断的常规方法的时间轴,其中设备驱动程序驻留在内核模式中;以及
图4-5示出了根据本发明处理中断的时间轴。
具体实施方式
示例性计算环境
图1示出了其中可实现本发明的合适计算系统环境100的一个示例。计算系统环境100仅作为合适计算环境的一个示例,而非旨在对本发明的使用范围或功能提出任何局限。也不应将计算系统环境100解释为对示例性计算系统环境100中示出的任一组件或其组合的任何依赖或要求。
本发明可在许多其它通用或专用计算系统环境或配置中运行。适用于本发明的众所周知的计算系统、环境和/或配置的示例包括但不限于,个人计算机、服务器计算机、手持式或膝上设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型机、大型机、包括上述系统或设备的任意种类的分布式计算环境等等。
可在由计算机执行的诸如程序模块等的计算机可执行指令的通用上下文中描述本发明。一般而言,程序模块包括例程、程序、对象、组件、数据结构等等,它们执行特定的任务或实现特定的抽象数据类型。也可在其中通过经由通信网络或其它数据传输介质链接的远程处理设备执行任务的分布式计算环境中实践本发明。在分布式计算环境中,程序模块和其它数据可以位于包括存储器存储设备的本地和远程计算机存储介质中。
参看图1,用于实现本发明的示例性系统包括计算机110形式的通用计算设备。计算机110的组件可包括但不限于:处理单元120、系统存储器130以及将包括系统存储器在内的各种系统组件耦合至处理单元120的系统总线121。系统总线121可以是若干种总线结构类型的任一种,包括存储器总线或存储器控制器、外围总线以及使用各种总线体系结构中任一种的局部总线。作为示例而非限制,这些架构包括工业标准体系结构(ISA)总线、微通道结构(MCA)总线、增强ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线、外设部件互连(PCI)总线(也称为Mezzanine总线)、外设组件互连快速总线(PCI-Express)以及系统管理总线(SMBus)。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是可由计算机110访问的任何可用介质,包括易失性和非易失性介质、可移动和不可移动介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以用于储存诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于:RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字通用光盘(DVD)或其它光盘存储器、磁带盒、磁带、磁盘存储或其它磁存储设备、或可以用来储存所期望的信息并可由计算机110访问的任意其它介质。通信介质通常以诸如载波或其它传输机制的已调制数据信号的方式体现计算机可读指令、数据结构、程序模块或其它数据,并包括任意信息传送介质。术语“已调制数据信号”是指以在信号中编码信息的方式设置或改变了其特征中的一个或多个的信号。作为示例而非限制,通信介质包括诸如有线网络或直接连线连接的有线介质,以及诸如声学、RF、红外和其它无线介质的无线介质。上述任意组合应当也可包括在计算机可读介质的范围之内。
系统存储器130包括易失性和/或非易失性存储器形式的计算机存储介质,诸如ROM 131和RAM 132。包含有助于诸如在启动期间在计算机110内的元件之间传递信息的基本例程的基本输入/输出系统(BIOS)133通常被储存在ROM 131中。RAM 132通常包含通过处理单元120直接存取和/或立即操作的数据和/或程序模块。作为示例而非限制,图1示出了操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110还可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作示例,图1示出了对不可移动、非易失性磁介质进行读写的硬盘驱动器141、对可移动、非易失性磁盘152进行读写的磁盘驱动器151以及对诸如CD-ROM或其它光介质的可移动、非易失性光盘156进行读写的光盘驱动器155。可在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于:磁带盒、闪存卡、数字通用光盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器141通常通过诸如接口140的不可移动存储器接口连接到系统总线121,而磁盘驱动器151和光盘驱动器155通常通过诸如接口150的可移动存储器接口连接到系统总线121。
上文讨论并在图1中示出的驱动器及其关联的计算机存储介质向计算机110提供了计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图1中,硬盘驱动器141被示为储存操作系统144、应用程序145、其它程序模块146和程序数据147。注意:这些组件可与操作系统134、应用程序135、其它程序模块136和程序数据137相同或不同。这里对操作系统144、应用程序145、其它程序模块146和程序数据147给予不同的附图标记以说明至少它们是不同的副本。用户可通过输入设备,诸如键盘162和通常称为鼠标、跟踪球或触摸垫的定点设备161来向计算机110输入命令和信息。其它输入设备(未示出)可包括话筒、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等。这些和其它输入设备通常通过耦合至系统总线的用户输入接口160连接至处理单元120,但也可通过诸如并行端口、游戏端口或通用串行总线(USB)的其它接口和总线结构连接。监视器191或其它类型的显示设备也经由诸如视频接口190的接口连接至系统总线121。除监视器之外,计算机还可包括诸如扬声器197和打印机196的其它外围输出设备,,它们通过输出外围接口195连接。
计算机110可以使用到诸如远程计算机180的一个或多个远程计算机的逻辑连接来在网络化环境中操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点,并通常包括以上就计算机110所描述的许多或所有组件,尽管在图1中仅示出了存储器存储设备181。所示逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可包括其它网络。这类网络环境常见于办公室、企业计算机网络、内联网以及因特网。
当在LAN网络环境中使用时,计算机110通过网络接口或适配器170连接至LAN 171。当在WAN网络环境中使用时,计算机110通常包括调制解调器172或用于在诸如因特网的WAN 173上建立通信的其它装置。可以是内置或外置的调制解调器172经由用户输入接口160或其它合适的机制连接至系统总线121。在网络化环境中,就计算机110所描述的程序模块或其一部分可储存在远程存储器存储设备中。作为示例而非限制,图1示出了驻留在存储器设备181上的远程应用程序185。应当理解,所示网络连接是示例性的,并且也可使用在计算机之间建立通信链路的其它手段。
示例性实施例
本发明实现使用平台(例如APIC)或总线(PCI总线)的通用特征来在无需等待用户驱动程序清除设备中断的情况下,使CPU 120跳出中断模式的系统和方法。这方便地允许将设备驱动程序编写在用户模式中。用户模式设备驱动程序接收有关无较高中断优先级的中断的通知。如下所述,本发明可以被扩展到共享中断,其中多个设备共享单个中断线。
现在参看图2,示出了计算设备内的典型架构。一个或多个CPU 120被连接到I/O APIC 200(即I/O控制器)和PCI总线/桥202。在INTEL架构中,在一个系统上可能有多达八个I/O APIC。它们从I/O设备收集中断信号,并且当这些设备需要中断时向本地APIC发送消息。每个I/O APIC具有任意数目的中断输入(或IRQ)。
提供了各种系统总线121,诸如ISA总线210、设备204所连接至的PCI总线203。连接到PCI总线203的设备204包括PCI寄存器205,如本领域普通技术人员所公知的。由设备204生成的中断被路由到中断控制器200,并最终被路由到CPU 120。在从CPU到设备204存在一条通道,从而在CPU 120上执行的驱动程序可访问/操作硬件设备204。
参看图3,示出了处理中断的常规方法的时间轴,其中设备驱动程序驻留在内核模式中。最初,设备驱动程序在开始阶段注册其中断服务例程(ISR)。当在T0处发生中断时,CPU在T1处将中断屏蔽,从而处理器不会被连续地中断。在T2处,操作系统调用驱动程序ISR,而在T3处,驱动程序处理中断以清除中断。在T4处,从ISR返回控制,而在T5处,操作系统停止屏蔽中断,从而可按需处理下一个中断。
由于图3的常规处理,调用驱动程序ISR在经提升的IRQL(raised IRQL)处发生,因而模型不允许将ISR代码编写在用户模式中。为了为用户用户模式提供ISR,需要可屏蔽中断(以尽可能接近设备级)直至可调度用户模式ISR代码。本发明允许一个或多个设备驱动程序可作为用户模式程序/进程运行。提供了用作普通中断功能的内核服务。以较低级(即如下所述的低于CPU级)屏蔽中断直至用户模式驱动程序中的代码唤醒并处理中断。
本发明的中断服务呈现了当用户模式驱动程序准备好接收中断时可通过这些驱动程序调用的接口(例如“wait_for_interrupt(等待中断)”)。中断服务向I/O管理器提供用于分配要传递给驱动程序的中断对象的接口。当启动设备驱动程序时,I/O管理器使用该接口来创建中断对象,并将其传递给赋予其对特定中断线的访问权的设备驱动程序。当驱动程序准备好接收中断和/或期望中断时,它调用wait_for_interrupt。从该调用返回意味着发生了硬件中断,且驱动程序应当告知/操作设备。
在调用wait_for_interrupt以等待下一中断之前,驱动程序较佳地完成其为设备正在执行的任何活动并清除设备中断的原因。下一个设备中断会导致此wait_for_interrupt返回。专用线程(较佳地不是主线程)用于此等待进程,并且可能向其应用提高的优先级。对于设备模式驱动程序,中断服务以与设备无关(device-independent)的方式屏蔽中断使其无法到达CPU。例如,在典型的APIC中可屏蔽特定中断线。诸如PCI 2.3的特定总线在配置空间中具有可以总线专用方式来禁用/启用的触发器。
根据本发明,与设备无关的领域(manor)中的中断屏蔽是用于在无需以设备专用方式对设备进行编程的情况下在设备上禁用中断(或屏蔽它们)的一种机制。用户模式ISR是位于用户模式线程上下文中并在其中运行的中断服务例程的代码,如下所述。图4示出了非共享用户模式中断机制的时间轴。此机制用于不共享中断时间轴的设备、使用消息信号中断的设备或共享中断线(使用用户或内核驱动程序)但是位于支持屏蔽设备中断的设备独立机制的总线上的设备。
现在参看图4,在开始阶段,中断服务从通过以与设备无关的方式禁用或屏蔽所有中断开始。当驱动程序在T0处调用wait_for_interrupt以将线程置于服务中时,在T1处启用/去屏蔽该特定中断。当与驱动程序相关联的设备在T1处启用中断时引发一个中断或者一个中断未决时,则事件发生并在T2处中断CPU。事件可被自动重置来清除。
在T3处调用注册中断普通内核模式中断处理程序,该处理程序在T4处禁用/重新屏蔽中断线。这在比CPU低的级(例如在I/O APIC 200、PCI总线/桥202、操作系统等)进行。换而言之,在T4处较佳地尽可能接近设备204来禁用设备中断。然后,处理器可在T5处退出中断模式,并且在T6处调度用户模式中断线程以便调用等待该中断的驱动程序。驱动程序在T7处处理中断并返回。再次启用中断线以用于一个中断。
关于用户级ISR共享中断的一个问题是等待时间问题。通常,期望尽可能以最短的时间使中断处于屏蔽中。在用户模式ISR的情况下,中断被屏蔽直至ISR运行。这可能会占据相当大的时间量。共享同一中断线的设备会阻止其中断直至该线的中断再次被去屏蔽。因此,除非具有共享给定中断线的用户模式ISR的所有驱动程序都在等待中断,否则该线被屏蔽。
现在参看图5,它是在不支持每个设备中断屏蔽的总线上的共享用户模式中断机制的一个示例性时间轴。最初,在总线或设备级屏蔽共享中断的各个设备的中断。再次,较佳地尽可能在最低级屏蔽中断,然而,有时在某一级或另一级屏蔽则更为方便。在此情况中,本发明可以在设备级或总线级屏蔽。在总线级屏蔽是提供了屏蔽由给定设备所产生的中断的一种方式的特征。这是一种带有设备级粒度(granularity)的总线特征。通过以这种方式屏蔽设备中断,系统可以继续运行直至可调度用户模式ISR代码来在设备级以设备专用方式清除中断。
稍后在T0处,设备的用户模式驱动程序通过在其中断对象上调用WaitForInterrupt方法来等待中断。存在每次驱动程序调用WaitForInterrupt方法时递减的计数器(最初设置成共享中断的驱动程序的数目),随后线程为给定的中断线阻止事件对象。当上述计数器变成零时,意味着共享给定中断线的所有用户模式设备驱动程序都在等待中断,则WaitForInterrupt方法会去屏蔽用于正被控制的设备的中断(T1)。
在去屏蔽设备中断后,可发生中断(T2)。当发生中断时,将调用注册中断的普通内核模式中断服务例程(ISR)(T3)。系统用基本上与常规系统中处理内核模式中断相同的方式来处理中断。ISR将首先重新屏蔽设备中断(T4),然后发信号通知用户模式ISR被阻止的事件。接着,每中断线计数器被重置为共享中断线的驱动程序的数目。然后,处理器退出中断模式(T5)。这时用户模式线程将全部唤醒(T6)。每个线程测试硬件是否控制所产生的中断,如果是,则为中断提供服务(T7)。当完成时,再次调用WaitForInterrupt。
根据本发明,在用户模式和内核模式组件之间共享中断类似于仅在用户模式组件之间共享它们。不同之处是普通内核ISR如何工作。在此情况中,在共享中断线的内核模式驱动程序的ISR之后调用普通内核模式ISR。这样,如果产生中断的设备是内核模式设备,则可在内核中快速获得服务,并且不会唤醒用户模式ISR。除增加等待时间之外,由于更频繁地屏蔽中断线,内核驱动程序不会受到该方案的影响。此外,计算多少驱动程序正在共享中断线并不将内核模式驱动程序包括在内。
根据上述,本发明能够以操作系统通用方式处理中断而无需用于每个设备的专用驱动程序,因为可在不知道设备的情况下禁用任何设备中断。这是因为通常操作系统知道I/O APIC 200,并能够至少在该级禁用中断。如上所述,较佳地尽可能接近设备来处理中断。
本发明也提供了未能向操作系统注册的驱动程序。如果中断由其设备驱动程序未能注册的设备所产生,则就在设备级关闭该中断,并且设备被禁用以防止任何进一步的中断。或者,在共用控制方案中,当其它经注册的驱动程序报告中断“不是它们的”,则禁用中断以有效地关闭设备。
虽然结合各个附图的优选实施例描述了本发明,但是应当理解可以使用其它类似的实施例,可以对所述实施例作出更改或添加以便执行与本发明相同的功能而不背离它。例如,本领域的技术人员将认识到在本申请中所述的本发明可应用到任何计算设备或环境,不管是有线的还是无线的,并且可以应用于经由通信网络连接以及在网络交互操作的任意计算机设备。此外,应当强调的是期望包括手持式设备操作系统和其它应用程序专用操作系统的各种计算机平台,尤其随着无线网络设备的数目的不断激增。另外,本发明可以在多个处理芯片或设备中或者之上实现,并且在多个设备上可类似地实现存储。因此,本发明不应当限于任何单个实施例,而是应该在根据所附权利要求的宽度和范围内进行解释。

Claims (20)

1.一种与设备无关的处理中断的方法,包括:
向操作系统注册设备驱动程序;
提供与设备无关的中断服务作为内核服务;
呈现通过所述驱动程序调用以启用中断的接口;
在接收到所述中断时运行普通中断服务例程;以及
通过所述设备驱动程序处理所述中断。
2.如权利要求1所述的方法,其特征在于,还包括:
在运行所述中断服务例程之前在处理器处屏蔽所述中断;
在比所述处理器低的级禁用所述中断,以防止所述中断到达所述处理器;
在所述处理器处去屏蔽所述中断;以及
在处理所述中断之后,在所述比所述处理器低的级启用所述中断。
3.如权利要求2所述的方法,其特征在于,所述禁用中断发生在APIC或总线控制器之一。
4.如权利要求1所述的方法,其特征在于,还包括:
提供用于共享所述中断的调度机制;
调用共享所述中断的所有驱动程序;以及
维持对所述中断的所述禁用,直至所有驱动程序从所述处理中断返回。
5.如权利要求4所述的方法,其特征在于,还包括将计数器设置成共享所述中断的驱动程序的数目。
6.如权利要求5所述的方法,其特征在于,还包括在启用所述中断之前将所述计数器递减到零。
7.如权利要求4所述的方法,其特征在于,其中在内核模式级提供第二驱动程序,并且对用户模式和内核模式驱动程序执行所述方法。
8.如权利要求1所述的方法,其特征在于,所述内核服务是与由所述驱动程序处理的设备不相关的普通服务,并且其中所述驱动程序是用户模式驱动程序。
9.一种用于处理用户模式设备驱动程序的方法,包括:
向操作系统注册所述用户模式设备驱动程序;
提供普通中断服务作为内核服务,所述中断服务呈现通过所述用户模式设备驱动程序调用的接口;
在运行所述普通中断服务例程之前在处理器处屏蔽所述中断;以及
在比所述处理器低的级禁用所述中断,以防止所述中断达到所述处理器。
10.如权利要求9所述的方法,其特征在于,还包括:
当用户模式设备驱动程序调用所述接口时启用所述中断;以及
在适当的用户模式设备驱动程序处理所述中断之后,在所述比所述处理器低的级处启用所述中断。
11.如权利要求10所述的方法,其特征在于,所述禁用中断发生在APIC或总线控制器之一。
12.如权利要求10所述的方法,其特征在于,还包括:
为共享中断提供调度机制;
调用与所述共享中断相关联的所有用户模式设备驱动程序;以及
维持对所述中断的所述禁用,直至所有用户模式设备驱动程序从处理所述中断返回。
13.如权利要求12所述的方法,其特征在于,还包括:
对未经注册或未知设备执行所述调度机制;以及
禁用所述未经注册或未知设备。
14.如权利要求9所述的方法,其特征在于,其中对所述用户模式设备驱动程序和内核模式设备驱动程序执行内核模式设备驱动程序和所述方法。
15.一种其上存储有用于处理用户模式设备驱动程序的指令的计算机可读介质,所述指令执行的一种方法包括:
向操作系统注册所述用户模式设备驱动程序;
提供中断服务作为内核服务,所述中断服务呈现通过所述用户模式设备驱动程序调用的接口;以及
提供和与所述用户模式设备驱动程序相关联的设备不相关的普通中断服务例程。
16.如权利要求15所述的计算机可读介质,其特征在于,还包括指令用于:
当用户模式设备驱动程序调用所述接口时启用所述中断;以及
在执行所述普通中断服务例程之后,在比处理器低的级禁用所述中断,以防止所述中断到达所述处理器;以及
在所述普通中断服务被运行之后启用所述中断。
17.如权利要求16所述的计算机可读介质,其特征在于,所述禁用中断发生在APIC或总线控制器之一。
18.如权利要求16所述的计算机可读介质,其特征在于,还包括指令用于:
为共享中断提供调度机制;
调用与所述共享中断相关联的所有用户模式设备驱动程序;以及
维持对所述中断的所述禁用,直至所有用户模式设备驱动程序从处理所述中断返回。
19.如权利要求18所述的计算机可读介质,其特征在于,还包括
对未经注册或未知设备执行所述调度机制;以及
禁用所述未经注册或未知设备。
20.如权利要求18所述的计算机可读介质,其特征在于,其中对所述用户模式设备驱动程序和内核模式设备驱动程序执行内核模式设备驱动程序和所述指令。
CN2006800166994A 2005-05-16 2006-05-16 向用户模式驱动程序传递中断的方法和系统 Expired - Fee Related CN101176084B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/129,802 2005-05-16
US11/129,802 US7581051B2 (en) 2005-05-16 2005-05-16 Method for delivering interrupts to user mode drivers
PCT/US2006/018928 WO2006124905A2 (en) 2005-05-16 2006-05-16 Method for delivering interrupts to user mode drivers

Publications (2)

Publication Number Publication Date
CN101176084A true CN101176084A (zh) 2008-05-07
CN101176084B CN101176084B (zh) 2010-05-19

Family

ID=37420515

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006800166994A Expired - Fee Related CN101176084B (zh) 2005-05-16 2006-05-16 向用户模式驱动程序传递中断的方法和系统

Country Status (13)

Country Link
US (1) US7581051B2 (zh)
EP (1) EP1889165B1 (zh)
JP (1) JP4840945B2 (zh)
KR (1) KR20080013914A (zh)
CN (1) CN101176084B (zh)
AT (1) ATE538436T1 (zh)
BR (1) BRPI0610159A2 (zh)
CA (1) CA2608081A1 (zh)
HK (1) HK1112305A1 (zh)
MX (1) MX2007014338A (zh)
NO (1) NO20075837L (zh)
RU (1) RU2417413C2 (zh)
WO (1) WO2006124905A2 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7950022B1 (en) * 2007-06-29 2011-05-24 Emc Corporation Techniques for use with device drivers in a common software environment
US7950025B1 (en) * 2007-06-29 2011-05-24 Emc Corporation Common software environment
US8434098B2 (en) * 2008-02-07 2013-04-30 Microsoft Corporation Synchronizing split user-mode/kernel-mode device driver architecture
US20090210888A1 (en) * 2008-02-14 2009-08-20 Microsoft Corporation Software isolated device driver architecture
US8387075B1 (en) * 2008-03-28 2013-02-26 Emc Corporation Common scheduling and synchronization primitives
US8356130B2 (en) * 2009-08-14 2013-01-15 Advanced Micro Devices, Inc. Mechanism for recording undeliverable user-level interrupts
US8806511B2 (en) 2010-11-18 2014-08-12 International Business Machines Corporation Executing a kernel device driver as a user space process
US9075985B2 (en) * 2013-05-31 2015-07-07 Microsoft Technology Licensing, Llc Restricted transmogrifying driver platform
US9921984B2 (en) * 2014-12-23 2018-03-20 Intel Corporation Delivering interrupts to user-level applications
US9672173B2 (en) * 2015-02-26 2017-06-06 Red Hat Israel, Ltd. Shared PCI interrupt line management
US9465617B1 (en) * 2015-06-29 2016-10-11 Vmware, Inc. Implementing upcall from secure to non-secure mode by injecting exception into non-secure mode
KR102085899B1 (ko) * 2018-12-10 2020-03-06 현대오트론 주식회사 자동차 전자제어장치의 사용량 모니터링 방법 및 모니터링 유닛
EP3819776B1 (en) * 2019-11-05 2021-12-29 Shenzhen Goodix Technology Co., Ltd. Method and apparatus for aborting blocked bus access between a master controller and connected peripherals

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IN171220B (zh) * 1987-07-01 1992-08-15 Digital Equipment Corp
JPH01145751A (ja) * 1987-12-01 1989-06-07 Pfu Ltd 入出力制御方式
JPH02170237A (ja) * 1988-12-23 1990-07-02 Fujitsu Ltd 割り込み制御方式
US5297282A (en) * 1991-05-29 1994-03-22 Toshiba America Information Systems, Inc. Resume processing function for the OS/2 operating system
US5469571A (en) * 1991-07-15 1995-11-21 Lynx Real-Time Systems, Inc. Operating system architecture using multiple priority light weight kernel task based interrupt handling
JPH05108507A (ja) * 1991-10-17 1993-04-30 Ricoh Co Ltd バスエラー処理回路
US5438677A (en) * 1992-08-17 1995-08-01 Intel Corporation Mutual exclusion for computer system
JP3242508B2 (ja) * 1993-11-05 2001-12-25 松下電器産業株式会社 マイクロコンピュータ
US5566346A (en) * 1993-12-21 1996-10-15 Taligent, Inc. System for constructing hardware device interface software systems independent of operating systems including capability of installing and removing interrupt handlers
US6732138B1 (en) * 1995-07-26 2004-05-04 International Business Machines Corporation Method and system for accessing system resources of a data processing system utilizing a kernel-only thread within a user process
US6412035B1 (en) * 1997-02-03 2002-06-25 Real Time, Inc. Apparatus and method for decreasing the response times of interrupt service routines
US6212574B1 (en) * 1997-04-04 2001-04-03 Microsoft Corporation User mode proxy of kernel mode operations in a computer operating system
US5926775A (en) * 1997-10-08 1999-07-20 National Instruments Corporation Mini driver software architecture for a data acquisition system
US6871350B2 (en) * 1998-12-15 2005-03-22 Microsoft Corporation User mode device driver interface for translating source code from the user mode device driver to be executed in the kernel mode or user mode
US6785894B1 (en) * 1999-04-09 2004-08-31 Sun Microsystems, Inc. Virtual device driver
US6598169B1 (en) * 1999-07-26 2003-07-22 Microsoft Corporation System and method for accessing information made available by a kernel mode driver
US6957432B2 (en) * 2000-03-21 2005-10-18 Microsoft Corporation Real-time scheduler
US6766398B2 (en) * 2001-04-17 2004-07-20 International Business Machines Corporation Method for processing PCI interrupt signals in a logically partitioned guest operating system
US7024672B2 (en) * 2002-06-26 2006-04-04 Microsoft Corporation Process-mode independent driver model
CN1208721C (zh) * 2003-09-19 2005-06-29 清华大学 基于PowerPC处理器结构的分级任务切换方法
US7149832B2 (en) * 2004-11-10 2006-12-12 Microsoft Corporation System and method for interrupt handling

Also Published As

Publication number Publication date
CN101176084B (zh) 2010-05-19
RU2417413C2 (ru) 2011-04-27
ATE538436T1 (de) 2012-01-15
CA2608081A1 (en) 2006-11-23
MX2007014338A (es) 2008-02-12
EP1889165A4 (en) 2009-09-16
JP2008541306A (ja) 2008-11-20
EP1889165B1 (en) 2011-12-21
JP4840945B2 (ja) 2011-12-21
EP1889165A2 (en) 2008-02-20
BRPI0610159A2 (pt) 2010-06-01
RU2007142279A (ru) 2009-05-27
WO2006124905A3 (en) 2007-06-07
WO2006124905A2 (en) 2006-11-23
NO20075837L (no) 2007-12-11
US7581051B2 (en) 2009-08-25
US20060259675A1 (en) 2006-11-16
KR20080013914A (ko) 2008-02-13
HK1112305A1 (en) 2008-08-29

Similar Documents

Publication Publication Date Title
CN101176084B (zh) 向用户模式驱动程序传递中断的方法和系统
US7788435B2 (en) Interrupt redirection with coalescing
US7805516B2 (en) Enabling throttling of resources on a virtualization enabled information handling system
US10649875B2 (en) Providing recommendation(s) for a computing device executing a gaming application
CN102567109A (zh) 中断分配方案
US7783811B2 (en) Efficient interrupt message definition
US7725637B2 (en) Methods and apparatus for generating system management interrupts
US11016805B2 (en) Programmatically applying labels to nodes in cluster orchestration platforms
CN104321758A (zh) 经由共享存储器结构的仲裁存储器访问
CN101317171A (zh) 应用程序的延迟启动
US10467052B2 (en) Cluster topology aware container scheduling for efficient data transfer
US10289832B2 (en) System and method for securing embedded controller communications by verifying host system management mode execution
US20110246750A1 (en) Processing capacity on demand
US7734905B2 (en) System and method for preventing an operating-system scheduler crash
US11061730B2 (en) Efficient scheduling for hyper-threaded CPUs using memory monitoring
US20090307403A1 (en) System for executing system management interrupts and methods thereof
US20070033388A1 (en) Computer system and booting method thereof
US7644219B2 (en) System and method for managing the sharing of PCI devices across multiple host operating systems
KR102474986B1 (ko) 클라우드 상의 가상 머신 자원 할당을 지원하는 서버 및 그 제어 방법
US8589551B2 (en) Multiprocessor computer and network computing system processing use and provision of hardware resource via a network
CN114065257A (zh) 地址空间的保护方法、保护装置、设备和存储介质
US11048523B2 (en) Enabling software sensor power operation requests via baseboard management controller (BMC)
JP6885441B2 (ja) ライセンス管理装置、ライセンス管理方法、及び、ライセンス管理プログラム
US10121001B1 (en) System and method for monolithic scheduling in a portable computing device using a hypervisor
WO2022204873A1 (zh) 电子装置、系统级芯片和物理核分配方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150519

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150519

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100519

Termination date: 20210516

CF01 Termination of patent right due to non-payment of annual fee