(57)【要約】  デバイス・ドライバがユーザ・モードのレベルで動作することができるフレームワークを提供するシステム及び方法である。プラットフォーム（例えば、ＡＰＩＣ）又はバス（ＰＣＩバス）のジェネリックな特徴を用い、ユーザ・レベルのドライバを待機してデバイス割り込みをクリアすることを必要とせずに、ＣＰＵを割り込みモードから取り出す。これにより、ユーザ空間において完全なデバイス・ドライバを書くことが可能になる。デバイス・ドライバは、依然として割り込みに関する告知を受け取るが、割り込みの優先順位においてではない。同じ方式を共有された割り込みにも拡張することができ、その場合には、複数のデバイスが単一の割り込みラインを共有する。
2008541306.tif 000002
【特許請求の範囲】
【請求項１】
デバイスと独立に割り込みを処理する方法であって、
デバイス・ドライバをオペレーティング・システムに登録するステップと、
デバイスと独立な割り込みサービスをカーネル・サービスとして提供するステップと、
前記ドライバによってコールされるインターフェースを露出（expose）し、割り込みをイネーブルするステップと、
前記割り込みを受け取り、ジェネリックな割り込みサービス・ルーチンをランするステップと、
前記割り込みを前記デバイス・ドライバによって処理するステップと、
を含むことを特徴とする方法。
【請求項２】
請求項１記載の方法において、
前記割り込みサービス・ルーチンをランする前に、前記割り込みをプロセッサにおいてマスクするステップと、
前記割り込みを前記プロセッサよりも低いレベルでディセーブルして、前記割り込みが前記プロセッサに到達することを防止するステップと、
前記割り込みを前記プロセッサにおいてマスク解除するステップと、
前記割り込みを処理した後で前記プロセッサよりも低いレベルで前記割り込みをイネーブルするステップと、
を更に含むことを特徴とする方法。
【請求項３】
請求項２記載の方法において、前記割り込みを消勢（ディセーブル）するステップはＡＰＩＣ又はバス・コントローラの一方において生じることを特徴とする方法。
【請求項４】
請求項１記載の方法において、
前記割り込みを共有するスケジュリング機構を提供するステップと、
前記割り込みを共有するすべてのドライバをコールするステップと、
すべてのドライバが前記割り込みの処理から復帰するまで前記割り込みの前記消勢を維持するステップと、
を更に含むことを特徴とする方法。
【請求項５】
請求項４記載の方法において、前記割り込みを共有するドライバの数にカウンタを設定するステップを更に含むことを特徴とする方法。
【請求項６】
請求項５記載の方法において、前記割り込みをイネーブルする前に前記カウンタをゼロにデクリメントするステップを更に含むことを特徴とする方法。
【請求項７】
請求項４記載の方法において、第２のドライバがカーネル・モード・レベルにおいて提供され、この方法はユーザ・モード・ドライバとカーネル・モード・ドライバとの両方に対して実行されることを特徴とする方法。
【請求項８】
請求項１記載の方法において、前記カーネル・サービスは前記ドライバによって処理されるデバイスとは独立である一般的（generic）なサービスであり、前記ドライバはユーザ・モード・ドライバであることを特徴とする方法。
【請求項９】
ユーザ・モードのデバイス・ドライバの処理方法であって、
ユーザ・モードのデバイス・ドライバをオペレーティング・システムに登録するステップと、
前記ユーザ・モードのデバイス・ドライバによってコールされるインターフェースを露出する一般的な割り込みサービスをカーネル・サービスとして提供するステップと、
前記一般的な割り込みサービス・ルーチンをランする前に前記割り込みをプロセッサにおいてマスクするステップと、
前記割り込みを前記プロセッサよりも低いレベルでディセーブルして、前記割り込みが前記プロセッサに到達することを防止するステップと、
を含むことを特徴とする方法。
【請求項１０】
請求項９記載の方法において、
ユーザ・モードのデバイス・ドライバが前記インターフェースをコールすると、前記割り込みをイネーブルするステップと、
適切なユーザ・モードのデバイス・ドライバが前記割り込みを処理した後で、前記プロセッサよりも低い前記レベルで前記割り込みをイネーブルするステップと、
を更に含むことを特徴とする方法。
【請求項１１】
請求項１０記載の方法において、前記割り込みを消勢（ディセーブル）するステップはＡＰＩＣ又はバス・コントローラの一方において生じることを特徴とする方法。
【請求項１２】
請求項１０記載の方法において、
割り込みを共有するスケジュリング機構を提供するステップと、
前記共有された割り込みと関連するすべてのユーザ・モードのデバイス・ドライバをコールするステップと、
すべてのユーザ・モードのデバイス・ドライバが前記割り込みの処理から復帰するまで前記割り込みの前記消勢を維持するステップと、
を更に含むことを特徴とする方法。
【請求項１３】
請求項１２記載の方法において、
未登録又は未知のデバイスのために前記スケジュリング機構を実行するステップと、
前記未登録又は未知のデバイスをディセーブルするステップと、
を更に含むことを特徴とする方法。
【請求項１４】
請求項９記載の方法において、カーネル・モードのデバイス・ドライバが提供され、この方法は前記ユーザ・モードのデバイス・ドライバと前記カーネル・モードのデバイス・ドライバとの両方に対して実行されることを特徴とする方法。
【請求項１５】
ユーザ・モードのデバイス・ドライバを処理するための命令が記憶されているコンピュータ可読な媒体であって、前記命令は、
ユーザ・モードのデバイス・ドライバをオペレーティング・システムに登録するステップと、
割り込みサービスをカーネル・サービスとして提供するステップであって、前記割り込みサービスは前記ユーザ・モードのデバイス・ドライバによってコールされるインターフェースを露出する、ステップと、
前記ユーザ・モードのデバイス・ドライバと関連するデバイスとは独立でありジェネリックな割り込みサービス・ルーチンを提供するステップと、
を含む方法を実行することを特徴とするコンピュータ可読な媒体。
【請求項１６】
請求項１５記載のコンピュータ可読な媒体であって、
ユーザ・モードのデバイス・ドライバが前記インターフェースをコールすると前記割り込みをイネーブルするステップと、
プロセッサよりも低いレベルにおいて、前記ジェネリックな割り込みサービス・ルーチンを実行し前記割り込みが前記プロセッサに到達することを防止した後で、前記割り込みをディセーブルするステップと、
前記ジェネリックな割り込みサービスがランされた後で前記割り込みをイネーブルするステップと、
を実行するための命令を更に含むことを特徴とするコンピュータ可読な媒体。
【請求項１７】
請求項１６記載のコンピュータ可読な媒体において、前記割り込みの消勢（ディセーブル）はＡＰＩＣ又はバス・コントローラの一方において生じることを特徴とするコンピュータ可読な媒体。
【請求項１８】
請求項１６記載のコンピュータ可読な媒体において、
共有された割り込みのためのスケジュリング機構を提供するステップと、
前記共有された割り込みと関連するすべてのユーザ・モードのデバイス・ドライバをコールするステップと、
すべてのユーザ・モードのデバイス・ドライバが前記割り込みの処理から復帰するまで前記割り込みの前記消勢を維持するステップと、
のための命令を更に含むことを特徴とするコンピュータ可読な媒体。
【請求項１９】
請求項１８記載のコンピュータ可読な媒体において、
未登録又は未知のデバイスのために前記スケジュリング機構を実行するステップと、
前記未登録又は未知のデバイスをディセーブルするステップと、
のための命令を更に含むことを特徴とするコンピュータ可読な媒体。
【請求項２０】
請求項１８記載のコンピュータ可読な媒体において、カーネル・モードのデバイス・ドライバが提供され、前記命令は、前記ユーザ・モードのデバイス・ドライバとカーネル・モードのデバイス・ドライバとの両方に対して実行されることを特徴とするコンピュータ可読な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータ・ハードウェアのデバイス・ドライバの分野に関係する。特に、本発明は、カーネル・モードではなくユーザ・モードにおいて割り込みを提供及び処理するシステム及び方法に関する。
【背景技術】
【０００２】
マイクロソフト社のウィンドウズ（登録商標）オペレーティング・システム及びそれ以外のオペレーティング・システムは、ユーザ・モード又はカーネル・モードで動作することができる。ユーザ・モードのドライバは、非特権的なプロセッサ・モード中で動作し、その場合、保護されたサブシステム・コードを含む他のアプリケーション・コードが動作する。ユーザ・モードのドライバは、ＡＰＩをコールしＡＰＩがシステム・サービスをコールする場合以外には、システム・データへのアクセスを獲得することができない。カーネル・モードのドライバは、オペレーティング・システムのエギュゼキュティブの一部として動作するが、これは、１又は複数の保護されたサブシステムをサポートする下位にあるオペレーティング・システムのコンポーネントである。
【０００３】
ユーザ・モード及びカーネル・モードのドライバは、異なる構造と、異なる入口点と、異なるシステム・インターフェースを有する。デバイスがユーザ・モードを要求するかカーネル・モードを要求するかは、デバイスのタイプと、オペレーティング・システムにおいてそのために既に提供されているサポートとに左右される。ほとんどのデバイス・ドライバはカーネル・モードで動作する。カーネル・モードのドライバは、ある保護された動作を実行することができ、また、ユーザ・モードのドライバがアクセスできないシステム構造にアクセスできる。
【０００４】
ハードウェア・デバイスがＣＰＵに割り込みをするときには、ＣＰＵは、（ＣＰＵレベルでの）すべての割り込みを内部的にマスクし、割り込みをサービスするように設計されたオペレーティング・システム例外処理ルーチンを呼び出す（invoke）ことにより、応答する。典型的には、このルーチンは、ＡＰＩＣを、現在の割り込みのレベルにおける及びそれよりも低いレベルの割り込みをマスクし、ＣＰＵレベルにおける割り込みを再びイネーブルするようにプログラムする。次に、割り込みを生成したデバイスをサービスするドライバのための割り込みサービス・ルーチン（ＩＳＲ）が呼び出される。共有の割り込みの場合には、ＩＳＲは、ＩＳＲのうちの１つまで順番に呼ばれるだろう、それが割り込みを扱ったことを示す。この時点で、割り込みが処理されるべきであり、また、ＯＳルーチンはＡＰＩＣレベルで割り込みを取り除き、元に戻る。この全過程は、割り込みが生じた時、実行しているスレッドのコンテキストにおいて動作し、上昇されたＩＲＱＬにおいて動作する。ＩＳＲコードは、したがって、高度に制御された環境において動作し、これは、カーネル・モードのコードに対して適切である。（つまり実行されたコード、また、ページは、コードによってアクセスされたデータにつけられてはならない。コードは閉鎖することなどができない、など）割り込みを処理する必要のあるデバイスドライバは、従来通りに扱うためのサポートの不足のためにカーネル・モードに流れる、ユーザ・モード中で中断する。
【０００５】
従って、追加のクラスのデバイスがユーザ・モード・ドライバを使用するかもしれないように、オペレーティング・システム機構がユーザ・モード中の割り込みを伝える必要がある。本発明は、そのような解決策を提供する。
【発明の概要】
【０００６】
本発明は、デバイス・ドライバがユーザ・モード・レベルで走ることを可能にするためのシステムおよび方法に導かれる。ユーザ・モードＩＳＲが装置割り込みを取り除く予定でありえるまで、総括的な特徴が慣れているプラットホーム（例えばＡＰＩＣ）かバス（ＰＣＩバス）は、割り込みをマスクする。割り込みハンドラーは、このように標準ユーザ・モード環境中でユーザ・モード・コードとして書くことができる。これは、ユーザ・モードに運ばれるために純粋に割り込みを扱うそれらの必要のために、以前にカーネル・モード・ドライバとして書かれなければならなかったドライバのクラスを許可する。デバイス・ドライバは、まだ割込み優先順位のではなく割り込み中の通知を受け取る。同じスキームは共有される割り込みまで延長することができる。そこでは、多数のデバイスは単一の割込ラインを共有する。
【０００７】
発明の特徴によれば、核心サービスは、それが総括的な割り込み機能性として働くと規定される。ＩＰＣ機構は、成分が互いと通信することを可能にする。Ｉ／Ｏマネージャーは、成分の資源割振り／ブートストラップ／オーケストレーションを行なう。ドライバに判決を下される割り込みオブジェクトを割り付けるために、割込サービスはＩ／Ｏマネージャーに工場インターフェースを供給する。割込サービスは、割り込みを受け取る準備ができている場合ユーザ・モード・ドライバが呼ぶかもしれない別のインターフェースを露出する。この呼び出しから返ることは、ハードウェア割り込みが生じており、ドライバがデバイスを伝達するべき／操作するべきであることを示唆する。
【０００８】
発明の追加機構および利点は、添附図面に関して進む、実例となる具体化の次の詳述から明白になるだろう。
【発明を実施するための最良の形態】
【０００９】
典型的なコンピュータ環境
図１は、発明が実行されるかもしれない適切な計算（コンピューティング）システム環境１００の例を例証する。計算機システム環境１００は適切なコンピュータ環境の単なる１つの例で、使用あるいは発明の機能性のスコープに関してどんな制限も示唆するようには意図されない。また、コンピュータ環境１００はどんな従属性あるいは任意のものあるいは典型的な操作環境１００に例証された成分の組合せに関係のある要求も持っているとは解釈されるべきでない。
【００１０】
本発明は、多数の他の汎用または専用の計算機システム環境か構成で使用可能である。有名な計算機システムの例、環境、または、構成、それは発明加算を備えた使用にふさわしいかもしれない、しかし制限されていないが、パーソナルコンピュータ、サーバコンピュータ、携帯型のデバイスあるいはラップトップ・デバイス、マルチプロセッサーシステム、マイクロプロセッサ・ベース・システム、セットトップ・ボックス、プログラム可能な家電、ネットワークＰＣ、ミニコンピュータ、メインフレーム・コンピュータ、分散コンピューティング環境など、上記のシステムあるいはデバイスのうちのどれもを含む。
【００１１】
本発明は、コンピュータの一般情勢に述べられるかもしれないプログラムモジュールのような実行可能命令、コンピュータによって実行されること。一般に、プログラムモジュールは、特別のタスクか道具項目抽象データ型を行なうルーチン、プログラム、オブジェクト、成分、データ構造などを含んでいる。その発明も、通信網あるいは他のデータ伝送媒体によってリンクされる遠隔処理デバイスによってタスクが行なわれる分散コンピューティング環境中で実行されるかもしれない。分散コンピューティング環境では、プログラムモジュールおよび他のデータは、記憶装置デバイスを含むローカル・リモートコンピュータ記憶媒体の両方に位置するかもしれない。
【００１２】
図１に関して、発明を実行するための典型的なシステムは汎用コンピューティング装置をコンピュータ１１０の形で含んでいる。コンピュータ１１０の成分は含んでいるかもしれない、しかし制限されない、演算処理装置１２０、システムメモリ１３０、および演算処理装置１２０へのシステムメモリを含む様々なシステムコンポーネントを連結するシステム・バス１２１。システム・バス１２１は、様々なバス方式のうちのどれでも使用して、メモリバスかメモリコントローラー、周辺バスおよびローカルバスを含むいくつかのタイプのバス構造のいずれかかもしれない。制限ではなく例経由で、そのようなアーキテクチャは産業標準アーキテクチャ（ＩＳＡ）バス（マイクロチャネル・アーキテクチャ（ＭＣＡ）バス）を含んでいる、ＩＳＡ（ＥＩＳＡ）バスを向上させた、ビデオエレクトロニクス標準組織（ＶＥＳＡ）ローカルバス、周辺の構成要素の相互接続（ＰＣＩ）バス（さらにメザニーン・バスとして知られている）、周辺機器相互接続エクスプレス（ＰＣＩ−Ｅｘｐｒｅｓｓ）およびシステム管理バス（ＳＭＢｕｓ）を相互に連結させる。
【００１３】
コンピュータ１１０は典型的には様々なコンピュータ読取り可能な媒体を含んでいる。コンピュータ読取り可能な媒体は、コンピュータ１１０によってアクセスすることができ、揮発性・不揮発性の媒体、取外し可能および非リムーバブル・メディアを含んでいるあらゆる利用可能な媒体になりえる。制限ではなく例経由で、コンピュータ読取り可能な媒体はコンピュータ記憶装置媒体および通信メディアを含むかもしれない。コンピュータ記憶装置媒体は揮発性、コンピュータ読取り可能な命令、データ構造、プログラムモジュールあるいは他のデータのような情報の記憶のための任意の方法あるいはテクノロジー中でインプリメントされた不揮発性で、取外し可能および非リムーバブル・メディアの両方を含んでいる。コンピュータ記憶装置媒体は含んでいる、しかし制限されない、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリあるいは他のメモリ技術、ＣＤ−ＲＯＭディジタル・バーサタイル・ディスク（ＤＶＤ）あるいは他の光学ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置あるいは他の磁気記憶装置、あるいは希望情報を格納するために使用することができ、できる他のミディアム、コンピュータ１１０によってアクセスされた。通信メディアは、典型的にはコンピュータ読取り可能な命令、データ構造、プログラムモジュールあるいは他のデータを搬送波あるいは他の移送機構のような変調データ信号で具体化し、どんな情報配送媒体も含む。用語「変調データ信号」とは、信号中のエンコード情報にような方法で１つあるいはその特性のそれ以上のをセットするか変更される信号を意味する。制限ではなく例経由で、通信メディア、有線ネットワークか直接の有線接続のようなインターネットを利用している媒体および無線メディアを含んでいる、のように、音響、ＲＦ、赤外線および他の無線メディア。上記のもののうちのいずれかの組合せもコンピュータ読取り可能な媒体の範囲内で含まれる。
【００１４】
システムメモリ１３０は、揮発性のことのフォームおよび（または）ＲＯＭ１３１およびＲＡＭ１３２のような不揮発性メモリにコンピュータ記憶装置媒体を含んでいる。始動中にのようにコンピュータ１１０内のエレメント間の情報を転送するのを支援する基本ルーチンを含んでいる基本入出力システム１３３（ＢＩＯＳ）は、ＲＯＭ１３１に典型的に格納される。ＲＡＭ１３２は典型的にはデータおよび（または）直ちにアクセス可能なプログラムモジュールを含んでいる、に、または演算処理装置１２０によってまもなく作動されること。制限ではなく例経由で、図１はオペレーティング・システム１３４、アプリケーション・プログラム１３５、他のプログラムモジュール１３６および番組データ１３７を例証する。
【００１５】
コンピュータ１１０はさらに他のものを含んでいるかもしれない、取外し可能な／非取外し可能な揮発性の／不揮発性のコンピュータ記憶装置媒体。例のみ経由で、図１は、非取外し可能で不揮発性の磁気媒体から読むか、書くハードディスク・ドライブ１４１、取外し可能で不揮発性の磁気ディスク１５２から読むか、書く磁気ディスク装置１５１、および読むか書く光ディスクドライブ１５５を例証する、に、１つの、取外し可能、ノナ−ＣＤ−ＲＯＭまたは他の光学の媒体のような揮発性の光ディスク１５６。取外し可能な／非取外し可能な他のもの、揮発性の／不揮発性のコンピュータ記憶装置媒体、それは典型的な操作環境加算の中で使用することができるが、制限されない、磁気カセットテープ、フラッシュ・メモリカード、ディジタル・バーサタイル・ディスク、デジタルビデオテープ、固形状ＲＡＭ、固形状ＲＯＭ、など。ハードディスク・ドライブ１４１は、インターフェース１４０のような非取外し可能なメモリインターフェースを通ってシステム・バス１２１に典型的に接続される。また、磁気ディスク装置１５１および光ディスクドライブ１５５はインターフェース１５０のようなリムーバブルメモリ・インターフェースによってシステム・バス１２１に典型的に接続される。
【００１６】
上に議論され、図１に例証されたドライブおよびそれらの関連するコンピュータ記憶装置媒体は、コンピュータ１１０のためにコンピュータ読取り可能な命令、データ構造、プログラムモジュールおよび他のデータの記憶を提供する。図１では、例えば、ハードディスク・ドライブ１４１は、オペレーティング・システム１４４、アプリケーション・プログラム１４５、他のプログラムモジュール１４６および番組データ１４７の格納として例証される。これらの成分が同じでありえることに注目する、として、あるいはオペレーティング・システム１３４、アプリケーション・プログラム１３５、他のプログラムモジュール１３６および番組データ１３７と異なる。オペレーティング・システム１４４、アプリケーション・プログラム１４５、他のプログラムモジュール１４６および番組データ１４７は、最小では、それらが異なるコピーであることを例証するためにここで異なる数を与えられる。ユーザは、マウス、トラックボールあるいはタッチパッドと一般に呼ばれるキーボード１６２のような入力装置およびポインティング・デバイス１６１によってコンピュータ１１０へコマンドと情報を入力してもよい。他の入力装置（図示せず）はマイクロホン、ジョイスティック、ゲーム・パッド、衛星放送アンテナ、スキャナーなどを含んでいるかもしれない。これらおよび他の入力装置は、ユーザ入力によって演算処理装置１２０にしばしば接続される、システム・バスにつながれるが、パラレルポート、ゲームポートあるいはユニバーサル・シリアル・バス（ＵＳＢ）のような、他のインターフェースおよびバス構造によって接続されるかもしれない１６０を接続する。モニタ１９１あるいは他のタイプの表示装置もビデオインタフェース１９０のようなインターフェース経由でシステム・バス１２１に接続される。モニタに加えて、コンピュータは、さらにスピーカー１９７およびプリンター１９６のような他の周辺の出力デバイスを含んでいるかもしれない。それはアウトプット周辺インタフェース１９５によって接続されるかもしれない。
【００１７】
コンピュータ１１０は、リモートコンピュータ１８０のような１つ以上のリモートコンピュータへの論理結合を使用して、ネットワーク化された環境中で作動する。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、貴族デバイスあるいは他の共通ネットワークノードで典型的には多数含んでいる。あるいは、要素はすべて上に記述した、記憶装置デバイス１８１だけは図１に例証されたが、コンピュータ１１０に関連のある。描かれた論理結合はローカルエリアネットワーク（ＬＡＮ）１７１およびワイドエリアネットワーク（ＷＡＮ）１７３を含んでいるが、さらに他のネットワークを含んでいるかもしれない。そのようなネットワーキング環境は、オフィス、企業全体に渡るコンピュータネットワーク、イントラネットおよびインターネットで普通である。
【００１８】
ＬＡＮネットワーキング環境の中で使用された時、コンピュータ１１０はネットワークインターフェイスまたはアダプターの１７０によってＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境の中で使用された時、コンピュータ１１０は典型的にはモデム１７２あるいはインターネットのようなＷＡＮ１７３の上のコミュニケーションを確立するための他の手段を含んでいる。モデム１７２（それは内部かもしれないか外部かもしれない）は、ユーザ入力インターフェース１６０経由のシステム・バス１２１、あるいは他の適切な機構に接続されるかもしれない。ネットワーク化された環境では、コンピュータ１１０（すなわちそれの部分）へのプログラムモジュールに描かれた関係詞は、遠隔記憶記憶装置に格納されるかもしれない。制限ではなく例経由で、図１はメモリ・デバイス１８１上で駐在するとして遠隔のアプリケーション・プログラム１８５を例証する。示されたネットワーク接続がコンピュータ間の通信リンクが使用されてもよいと確証する典型的・他の手段であることが認識されるだろう。
典型的な実施例
本発明は、プラットホーム（例えばＡＰＩＣ）かバス（ＰＣＩバス）を使用するシステムと方法をインプリメントする、ユーザ・モード・ドライバが装置割り込みを取り除くのを待つ必要なしに、割込モードからＣＰＵ１２０を取り出す総括的な特徴。これは、デバイス・ドライバがユーザ・モード中で書かれることを有利に可能にする。ユーザ・モード・デバイス・ドライバは、高い割込み優先順位のではなく割り込みに関する通知を受け取る。下記に述べられるように、本発明は共有される割り込みまで延長されるかもしれない。そこでは、多数のデバイスは単一の割込ラインを共有する。
【００１９】
ここで、図２を参照すると、コンピューティング装置内に典型的なアーキテクチャが示される。１つ以上のＣＰＵ１２０が、Ｉ／ＯＡＰＩＣ２００（つまりＩ／Ｏコントローラ）およびＰＣＩバス／ブリッジ２０２に接続される。インテル社製のアーキテクチャでは、システム上に８つものＩ／ＯＡＰＩＣがありうる。それらはＩ／Ｏ装置から割込み信号を集めて、それらのデバイスが中断する必要がある場合、ローカルのＡＰＩＣにメッセージを送信する。Ｉ／ＯＡＰＩＣにはそれぞれ割り込みインプット（あるいはＩＲＱ）の任意数がある。
【００２０】
様々なシステム・バス１２１は、ＩＳＡバス、ＰＣＩバス２０３（デバイス２０４はそれに接続される）２１０のように提供される。芸術における通常の熟練のものによって知られているように、ＰＣＩバス２０３に接続されるデバイス２０４はＰＣＩレジスター２０５を含んでいる。デバイス２０４によって生成された割り込みは、割込みコントローラ２００、および結局ＣＰＵ１２０に徹底的に打ち破られる。ＣＰＵからデバイス２０４までパスがある。したがって、ＣＰＵ１２０の上で実行するドライバはハードウェアデバイス２０４をアクセスすることができる／操作することができる。
【００２１】
図３を参照して、割り込みを扱う従来手法用のスケジュールが例証される。そこでは、デバイス・ドライバはカーネル・モードに存在する。当初は、デバイス・ドライバはプリアンブル・ステージでその割り込みサービスルーチン（ＩＳＲ）を登録する。割り込みがＴ０で生じる場合、プロセッサが連続的に中断されないように、それはＴ１でＣＰＵによってマスクされる。Ｔ２で、オペレーティング・システムドライバＩＳＲをコールし、ドライバは、Ｔ３において割り込みを処理して割り込みをクリアする。Ｔ４では、コントロールはＩＳＲから返る。また、Ｔ５では、オペレーティング・システムは必要ならば、次の割り込みを扱うことができるように割り込みをマスクすることをやめる。
【００２２】
図３の従来型の処理では、ＩＳＲが呼ばれるドライバが高くしたＩＲＱＬで生じる。したがって、モデルは、ユーザ・モード中で書かれたＩＳＲコードを考慮に入れない。ユーザ・モードＩＳＲに備えるために、ユーザ・モードＩＳＲコードを予定することができるまで、我々が割り込み（できるだけデバイスに近いレベルの）をマスクすることができることは必要とされる。本発明は、１つ以上のデバイス・ドライバをみておく、ユーザ・モード・プログラム／工程として実行されるかもしれない。カーネル・サービスは、それが総括的な割り込み機能性として働くと規定される。中断する、下位レベル（つまり、下記に述べられるように、ＣＰＵレベル以下に）で覆われる、まで、ユーザ・モード・ドライバ中でコード化する、起きて、割り込みを扱う。
【００２３】
本発明による割込サービスは、割り込みを受け取る準備ができているときにユーザ・モード・ドライバによってコールされるインターフェース（例えば、「wait_for_interrupt」）を露出する。ドライバに送られる割り込みオブジェクトを配分するため、割込サービスはＩ／Ｏマネージャーにインターフェースを供給する。デバイス・ドライバを始める場合、Ｉ／Ｏマネージャーは割り込みオブジェクトを作成するインターフェースを使用し、それをそれに特定の割込ラインへのアクセスを与えるデバイス・ドライバへ渡す。割り込みを受け取る準備ができておりかつ、または、１つ予期する場合、ドライバは「wait_for_interrupt」をコールする。この呼び出しから返ることは、ハードウェア割り込みが生じており、ドライバがデバイスを伝達するべき／操作するべきであることを示唆する。
【００２４】
wait_for_interruptをコールして次の割り込みを待機する前に、ドライバは、それがデバイス用に行なっているどんなアクティビティでもむしろ完成する、また原因から装置割り込みを取り除く。次の装置割り込みはこのwait_for_interruptをリターンする。専用のスレッド（むしろ、ない、メインスレッド）はこの待機プロセスに使用される。また、高い優先順位は、それに適用されるかもしれない。割込サービスは、ユーザ・モード・ドライバ用のデバイスインディペンデントの方法でＣＰＵに達することからの割り込みをマスクする。例えば、特別の割込ラインは、典型的なＡＰＩＣの中で覆われる場合がある。ＰＣＩ２．３のようなあるバスは、バスに特有の方法で無効になることができる／可能になることができるコンフィグ・スペースの中にトグルを持っている。
【００２５】
本発明（デバイス中の割込マスク）によると、デバイスとは独立の態様での割り込みマスクは、デバイスに特有の方法でデバイスをプログラムせずに、デバイス（あるいは、それらを覆って）上の割り込みを不能にするための機構である。下記に述べられるように、ユーザ・モードＩＳＲはユーザ・モード・スレッドのコンテキストの中に捜し出される割り込みサービスルーチンのためのコードで、走る。図４は、共有されていないユーザ・モード割り込み機構用のスケジュールを例証する。割込ラインを共有していないデバイスのためのこの機構工場、メッセージを使用するデバイスは信号した、中断する、あるいは、割込ライン（ユーザまたはカーネルドライバを備えた）を共有するデバイスについては、だが支援するバスにおいては、マスキング部材用のデバイスインデペンデント機構は中断する。
【００２６】
図４を指さずに、割込サービスは、プリアンブル・ステージでデバイスインディペンデントの方法で割り込みをすべて不能にするかマスクすることにより外にスタートする。ドライバがサービスにスレッドを置くためにＴ０でwait_for_interruptをコールする場合には、特にその割り込みはＴ１で可能になり／暴露される。ドライバに関連したデバイスが割り込みを引き起こす場合、出来事が生じる。あるいは、割り込みがＴｌで可能になった時、１つは未決だった。また、ＣＰＵはＴ２で中断される。出来事は取り除かれるために自動車リセットされるかもしれない。
【００２７】
割り込みのために登録された総括的なカーネル・モード割り込みハンドラは、Ｔ３でコールされる。それはＴ４で割込ラインを不能にする／再度マスクする。これは、ＣＰＵ（例えば、Ｉ／ＯＡＰＩＣ２００、ＰＣＩバス／ブリッジ２０２、オペレーティング・システムなど）よりも下位レベルで行われる。言いかえれば、Ｔ４で可能なものとして、デバイス２０４に接近しているものとして、装置割り込みはむしろ無効になる。その後、プロセッサはＴ５で割込モードを出る。また、ユーザ・モード割り込みスレッドはＴ６でその割り込みを待つドライバを呼ぶ予定である。ドライバはＴ７とリターンで割り込みを処理する。割込ラインは、次の割り込みのために再び可能になる。
【００２８】
ユーザレベルＩＳＲのための共有する割り込みに関する問題は待ち時間問題である。一般に、最短の量の可能な時に割り込みを覆っておくことは望ましい。ユーザ・モードＩＳＲの場合には、ＩＳＲが走るまで、割り込みは覆われる。これは、時間の重要な金額をとるかもしれない。ラインのための割り込みが再び暴露されるまで、同じ割込ラインを共有するデバイスはその割り込みを阻む。したがって、もし与えられた割込ラインを共有するユーザ・モードＩＳＲを備えたドライバがすべて、割り込みを待っていなければ、ラインはマスクされる。
【００２９】
ここで図５を参照すると、装置割り込みマスキングにつき支援しないバスで共有のユーザ・モード割り込み機構のための典型的な時刻表（タイムライン）がある。当初は、割り込みを共有するデバイスのそれぞれに対する割り込みは、バス又はデバイスレベルでマスクされる。ここで、再び、可能な最下位レベルで割り込みをマスクすることは望ましい。しかし、時には、１レベルあるいは別のレベルでマスクするほうが便利である。この場合、本発明はデバイスレベル、あるいはバス・レベルでマスクする場合がある。バス・レベルにマスクすることは、与えられたデバイスによって生成されたマスク割り込みへの道を提供する特徴である、これはデバイスレベル粒状度と共に、バス特徴である。このように装置割り込みをマスクすることによって、ユーザ・モードＩＳＲコードがデバイスの特定の方法でデバイスレベルで割り込みを取り除く予定でありえるまで、システムは作動し続けることができる。
【００３０】
その後、Ｔ０で、デバイスのためのユーザ・モード・ドライバはその割り込みオブジェクト上のWaitForInterrupt（割り込み待機）法を呼ぶことにより割り込みを待機する。ドライバが割り込み待機法をコールするごとにディクリメントされるカウンタ（当初は割り込みを共有するドライバの数へのセット）があり、スレッド、続いて、ブロックオン、与えられた割込ライン用のイベントオブジェクト。与えられた割込ラインを共有するユーザ・モード・デバイス・ドライバがすべて割り込みを待っていることを意味して、上に言及されたカウンターが０まで行く時、割り込み待機法は制御されている（Ｔ１）デバイスのための割り込みを暴露する。
【００３１】
一度に、装置割り込みが暴露された後、割り込みが生じる場合がある（Ｔ２）。割り込みが生じる時、割り込みのために登録された総括的なカーネル・モード割り込みサービスルーチン（ＩＳＲ）は呼び出されるだろう（Ｔ３）。システムはこの割り込みを本質的に扱う、同じ方法カーネル・モードは中断する、従来の方式で処理される。ＩＳＲは最初に再度装置割り込み（Ｔ４）を覆い、次に、ユーザ・モードＩＳＲが閉鎖される出来事を示すだろう。その後、割込ラインごとのカウンターは割込ラインを共有するドライバの数にリセットされる。その後、プロセッサは割込モード（Ｔ５）を出る。ユーザ・モード・スレッドはすべて今起きるだろう（Ｔ６）。スレッドはそれぞれ、それがコントロールしているハードウェアが割り込みを生成したかどうかテストし、そうならば、割り込み（Ｔ７）をサービスする。完成した時、割り込み待機法が再びコールされる。
【００３２】
本発明に従って、ユーザ・モードと核心のモード成分間の割り込みの共有はユーザ・モード成分だけとそれらを共有することに似ている。違いは総括的な核心ＩＳＲがどのように働くかにある。このシナリオでは、総括的なカーネル・モードＩＳＲは、割込ラインを共有するカーネル・モード・ドライバ用のＩＳＲの後に呼び出される。割り込みを生成するデバイスがカーネル・モード・デバイスである場合、この方法、それは、核心中で速くサービスすることができ、ユーザ・モードＩＳＲを起こさないだろう。増加する待ち時間を例外として、割込ラインがよりしばしば覆われるので、カーネルドライバはこのスキームによって影響されない。さらに、カーネル・モード・ドライバはどれだけのドライバが割込ラインを共有しているかの計算に含まれていない。
【００３３】
上記のものに従って、どんな装置割り込みもデバイスについての知識なしで無効になる場合があるとともに、本発明は各デバイスの特定のドライバの必要なしでオペレーティング・システムの総括的なやり方で割り込みを扱うことができる。これは、一般に、オペレーティング・システムがＩ／ＯＡＰＩＣ２００についての知識を持ち、少なくともそのレベルに割り込みを不能にすることができるからである。上に注意されるように、できるだけデバイスに近い割り込みを扱うことは望ましい。
【００３４】
本発明は、さらにオペレーティング・システムで登録しないドライバに備える。割り込みがそのデバイス・ドライバが登録しなかったか未知のデバイスによって生成される場合、割り込みはデバイスレベルで切られる。また、デバイスはそれ以上の割り込みを防ぐために無効になる。あるいは、割り込みがそうであると他の公認のドライバが報告する場合、共通制御スキームの下で、「それらのものではない」その割り込みは有効にデバイスをオフにするために無効になる。
【００３５】
本発明が様々な図面での好適実施例に関して記述されたが、他の同様の実施例が使用されてもよいことは理解されるべきである。あるいは、変更と追加分は、本発明から逸脱することなく、本発明の同じ機能を行なうために記述された具体化になされるかもしれない。例えば、ある当業者が、インターネットを利用しているか無線のかにかかわらず、現在のアプリケーションに述べられているような本発明が任意のコンピューティング装置あるいは環境に当てはまるかもしれないし通信網によって接続していて、ネットワークを介して対話するそのようなコンピューティング装置の任意の数に適用されるかもしれないことを認識するだろう。更に、それは強調されるべきであるが、様々なコンピュータ・プラットフォーム、携帯型のデバイス・オペレーティング・システムおよび他のアプリケーションを含んでいること、特定のオペレーティング・システムは特に無線のネットワーク・デバイスの数として、考慮することができる。まださらに、本発明は多くの処理チップあるいはデバイス中で、あるいはその複数において実行される。また、記憶装置は多くのデバイスを横切って同様に達成されるかもしれない。したがって、本発明はどんな単一の具体化にも制限されたべきでないが、冒頭の特許請求の範囲による範囲をの中に属すると解釈されるべきである。
【図面の簡単な説明】
【００３６】
【図１】本発明の特徴を実装することが可能な例示的なコンピューティング環境を示すブロック図である。
【図２】図１のようなコンピューティング環境の中の典型的なアーキテクチャが示されている。
【図３】デバイス・ドライバがカーネル・モードにある場合に割り込みを処理する従来型の方法におけるタイムラインを図解している。
【図４】本発明による割り込み処理のためのタイムラインを図解している。
【図５】本発明による割り込み処理のためのタイムラインを図解している。
【図１】
2008541306.tif 000003
【図２】
2008541306.tif 000004
【図３】
2008541306.tif 000005
【図４】
2008541306.tif 000006
【図５】
2008541306.tif 000007
【手続補正書】
【提出日】平成20年2月22日(2008.2.22)
【手続補正１】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2008541306.tif 000008
【図２】
2008541306.tif 000009
【図３】
2008541306.tif 000010
【図４】
2008541306.tif 000011
【図５】
2008541306.tif 000012
【国際調査報告】
2008541306.tif 000013