JP4840945B2 - ユーザ・モード・ドライバへ割り込みを配送する方法 - Google Patents

ユーザ・モード・ドライバへ割り込みを配送する方法 Download PDF

Info

Publication number
JP4840945B2
JP4840945B2 JP2008512442A JP2008512442A JP4840945B2 JP 4840945 B2 JP4840945 B2 JP 4840945B2 JP 2008512442 A JP2008512442 A JP 2008512442A JP 2008512442 A JP2008512442 A JP 2008512442A JP 4840945 B2 JP4840945 B2 JP 4840945B2
Authority
JP
Japan
Prior art keywords
interrupt
computer
user mode
driver
interrupts
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.)
Active
Application number
JP2008512442A
Other languages
English (en)
Other versions
JP2008541306A (ja
JP2008541306A5 (ja
Inventor
タルーリ,マドハスドハン
スミス,フレデリック・ジェイ,ザ・フォース
ヘブンス,ジェフ・エル
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 Corp
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 JP2008541306A publication Critical patent/JP2008541306A/ja
Publication of JP2008541306A5 publication Critical patent/JP2008541306A5/ja
Application granted granted Critical
Publication of JP4840945B2 publication Critical patent/JP4840945B2/ja
Active 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)

Description

本発明は、一般に、コンピュータ・ハードウェアのデバイス・ドライバの分野に関係する。特に、本発明は、カーネル・モードではなくユーザ・モードにおいて割り込みを提供及び処理するシステム及び方法に関する。
マイクロソフト社のウィンドウズ(登録商標)オペレーティング・システム及びそれ以外のオペレーティング・システムは、ユーザ・モード又はカーネル・モードで動作することができる。ユーザ・モードのドライバは、非特権的なプロセッサ・モード中で動作し、その場合、保護されたサブシステム・コードを含む他のアプリケーション・コードが動作する。ユーザ・モードのドライバは、APIをコールしAPIがシステム・サービスをコールする場合以外には、システム・データへのアクセスを獲得することができない。カーネル・モードのドライバは、オペレーティング・システムのエギュゼキュティブの一部として動作するが、これは、1又は複数の保護されたサブシステムをサポートする下位にあるオペレーティング・システムのコンポーネントである。
ユーザ・モード及びカーネル・モードのドライバは、異なる構造と、異なる入口点と、異なるシステム・インターフェースを有する。デバイスがユーザ・モードを要求するかカーネル・モードを要求するかは、デバイスのタイプと、オペレーティング・システムにおいてそのために既に提供されているサポートとに左右される。ほとんどのデバイス・ドライバはカーネル・モードで動作する。カーネル・モードのドライバは、ある保護された動作を実行することができ、また、ユーザ・モードのドライバがアクセスできないシステム構造にアクセスできる。
ハードウェア・デバイスがCPUに割り込みをするときには、CPUは、(CPUレベルでの)すべての割り込みを内部的にマスクし、割り込みをサービスするように設計されたオペレーティング・システム例外処理ルーチンを呼び出す(invoke)ことにより、応答する。典型的には、このルーチンは、APICを、現在の割り込みのレベルにおける及びそれよりも低いレベルの割り込みをマスクし、CPUレベルにおける割り込みを再びイネーブルするようにプログラムする。次に、割り込みを生成したデバイスをサービスするドライバのための割り込みサービス・ルーチン(ISR)が呼び出される。共有の割り込みの場合には、ISRは、ISRのうちの1つまで順番に呼ばれるだろう、それが割り込みを扱ったことを示す。この時点で、割り込みが処理されるべきであり、また、OSルーチンはAPICレベルで割り込みを取り除き、元に戻る。この全過程は、割り込みが生じた時、実行しているスレッドのコンテキストにおいて動作し、上昇されたIRQLにおいて動作する。ISRコードは、したがって、高度に制御された環境において動作し、これは、カーネル・モードのコードに対して適切である。(つまり実行されたコード、また、ページは、コードによってアクセスされたデータにつけられてはならない。コードは閉鎖することなどができない、など)割り込みを処理する必要のあるデバイスドライバは、従来通りに扱うためのサポートの不足のためにカーネル・モードに流れる、ユーザ・モード中で中断する。
従って、追加のクラスのデバイスがユーザ・モード・ドライバを使用するかもしれないように、オペレーティング・システム機構がユーザ・モード中の割り込みを伝える必要がある。本発明は、そのような解決策を提供する。
発明の概要
本発明は、デバイス・ドライバがユーザ・モード・レベルで走ることを可能にするためのシステムおよび方法に導かれる。ユーザ・モードISRが装置割り込みを取り除く予定でありえるまで、総括的な特徴が慣れているプラットホーム(例えばAPIC)かバス(PCIバス)は、割り込みをマスクする。割り込みハンドラーは、このように標準ユーザ・モード環境中でユーザ・モード・コードとして書くことができる。これは、ユーザ・モードに運ばれるために純粋に割り込みを扱うそれらの必要のために、以前にカーネル・モード・ドライバとして書かれなければならなかったドライバのクラスを許可する。デバイス・ドライバは、まだ割込み優先順位のではなく割り込み中の通知を受け取る。同じスキームは共有される割り込みまで延長することができる。そこでは、多数のデバイスは単一の割込ラインを共有する。
発明の特徴によれば、核心サービスは、それが総括的な割り込み機能性として働くと規定される。IPC機構は、成分が互いと通信することを可能にする。I/Oマネージャーは、成分の資源割振り/ブートストラップ/オーケストレーションを行なう。ドライバに判決を下される割り込みオブジェクトを割り付けるために、割込サービスはI/Oマネージャーに工場インターフェースを供給する。割込サービスは、割り込みを受け取る準備ができている場合ユーザ・モード・ドライバが呼ぶかもしれない別のインターフェースを露出する。この呼び出しから返ることは、ハードウェア割り込みが生じており、ドライバがデバイスを伝達するべき/操作するべきであることを示唆する。
発明の追加機構および利点は、添附図面に関して進む、実例となる具体化の次の詳述から明白になるだろう。
典型的なコンピュータ環境
図1は、発明が実行されるかもしれない適切な計算(コンピューティング)システム環境100の例を例証する。計算機システム環境100は適切なコンピュータ環境の単なる1つの例で、使用あるいは発明の機能性のスコープに関してどんな制限も示唆するようには意図されない。また、コンピュータ環境100はどんな従属性あるいは任意のものあるいは典型的な操作環境100に例証された成分の組合せに関係のある要求も持っているとは解釈されるべきでない。
本発明は、多数の他の汎用または専用の計算機システム環境か構成で使用可能である。有名な計算機システムの例、環境、または、構成、それは発明加算を備えた使用にふさわしいかもしれない、しかし制限されていないが、パーソナルコンピュータ、サーバコンピュータ、携帯型のデバイスあるいはラップトップ・デバイス、マルチプロセッサーシステム、マイクロプロセッサ・ベース・システム、セットトップ・ボックス、プログラム可能な家電、ネットワークPC、ミニコンピュータ、メインフレーム・コンピュータ、分散コンピューティング環境など、上記のシステムあるいはデバイスのうちのどれもを含む。
本発明は、コンピュータの一般情勢に述べられるかもしれないプログラムモジュールのような実行可能命令、コンピュータによって実行されること。一般に、プログラムモジュールは、特別のタスクか道具項目抽象データ型を行なうルーチン、プログラム、オブジェクト、成分、データ構造などを含んでいる。その発明も、通信網あるいは他のデータ伝送媒体によってリンクされる遠隔処理デバイスによってタスクが行なわれる分散コンピューティング環境中で実行されるかもしれない。分散コンピューティング環境では、プログラムモジュールおよび他のデータは、記憶装置デバイスを含むローカル・リモートコンピュータ記憶媒体の両方に位置するかもしれない。
図1に関して、発明を実行するための典型的なシステムは汎用コンピューティング装置をコンピュータ110の形で含んでいる。コンピュータ110の成分は含んでいるかもしれない、しかし制限されない、演算処理装置120、システムメモリ130、および演算処理装置120へのシステムメモリを含む様々なシステムコンポーネントを連結するシステム・バス121。システム・バス121は、様々なバス方式のうちのどれでも使用して、メモリバスかメモリコントローラー、周辺バスおよびローカルバスを含むいくつかのタイプのバス構造のいずれかかもしれない。制限ではなく例経由で、そのようなアーキテクチャは産業標準アーキテクチャ(ISA)バス(マイクロチャネル・アーキテクチャ(MCA)バス)を含んでいる、ISA(EISA)バスを向上させた、ビデオエレクトロニクス標準組織(VESA)ローカルバス、周辺の構成要素の相互接続(PCI)バス(さらにメザニーン・バスとして知られている)、周辺機器相互接続エクスプレス(PCI−Express)およびシステム管理バス(SMBus)を相互に連結させる。
コンピュータ110は典型的には様々なコンピュータ読取り可能な媒体を含んでいる。コンピュータ読取り可能な媒体は、コンピュータ110によってアクセスすることができ、揮発性・不揮発性の媒体、取外し可能および非リムーバブル・メディアを含んでいるあらゆる利用可能な媒体になりえる。制限ではなく例経由で、コンピュータ読取り可能な媒体はコンピュータ記憶装置媒体および通信メディアを含むかもしれない。コンピュータ記憶装置媒体は揮発性、コンピュータ読取り可能な命令、データ構造、プログラムモジュールあるいは他のデータのような情報の記憶のための任意の方法あるいはテクノロジー中でインプリメントされた不揮発性で、取外し可能および非リムーバブル・メディアの両方を含んでいる。コンピュータ記憶装置媒体は含んでいる、しかし制限されない、RAM、ROM、EEPROM、フラッシュ・メモリあるいは他のメモリ技術、CD−ROMディジタル・バーサタイル・ディスク(DVD)あるいは他の光学ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置あるいは他の磁気記憶装置、あるいは希望情報を格納するために使用することができ、できる他のミディアム、コンピュータ110によってアクセスされた。通信メディアは、典型的にはコンピュータ読取り可能な命令、データ構造、プログラムモジュールあるいは他のデータを搬送波あるいは他の移送機構のような変調データ信号で具体化し、どんな情報配送媒体も含む。用語「変調データ信号」とは、信号中のエンコード情報にような方法で1つあるいはその特性のそれ以上のをセットするか変更される信号を意味する。制限ではなく例経由で、通信メディア、有線ネットワークか直接の有線接続のようなインターネットを利用している媒体および無線メディアを含んでいる、のように、音響、RF、赤外線および他の無線メディア。上記のもののうちのいずれかの組合せもコンピュータ読取り可能な媒体の範囲内で含まれる。
システムメモリ130は、揮発性のことのフォームおよび(または)ROM131およびRAM132のような不揮発性メモリにコンピュータ記憶装置媒体を含んでいる。始動中にのようにコンピュータ110内のエレメント間の情報を転送するのを支援する基本ルーチンを含んでいる基本入出力システム133(BIOS)は、ROM131に典型的に格納される。RAM132は典型的にはデータおよび(または)直ちにアクセス可能なプログラムモジュールを含んでいる、に、または演算処理装置120によってまもなく作動されること。制限ではなく例経由で、図1はオペレーティング・システム134、アプリケーション・プログラム135、他のプログラムモジュール136および番組データ137を例証する。
コンピュータ110はさらに他のものを含んでいるかもしれない、取外し可能な/非取外し可能な揮発性の/不揮発性のコンピュータ記憶装置媒体。例のみ経由で、図1は、非取外し可能で不揮発性の磁気媒体から読むか、書くハードディスク・ドライブ141、取外し可能で不揮発性の磁気ディスク152から読むか、書く磁気ディスク装置151、および読むか書く光ディスクドライブ155を例証する、に、1つの、取外し可能、ノナ−CD−ROMまたは他の光学の媒体のような揮発性の光ディスク156。取外し可能な/非取外し可能な他のもの、揮発性の/不揮発性のコンピュータ記憶装置媒体、それは典型的な操作環境加算の中で使用することができるが、制限されない、磁気カセットテープ、フラッシュ・メモリカード、ディジタル・バーサタイル・ディスク、デジタルビデオテープ、固形状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へコマンドと情報を入力してもよい。他の入力装置(図示せず)はマイクロホン、ジョイスティック、ゲーム・パッド、衛星放送アンテナ、スキャナーなどを含んでいるかもしれない。これらおよび他の入力装置は、ユーザ入力によって演算処理装置120にしばしば接続される、システム・バスにつながれるが、パラレルポート、ゲームポートあるいはユニバーサル・シリアル・バス(USB)のような、他のインターフェースおよびバス構造によって接続されるかもしれない160を接続する。モニタ191あるいは他のタイプの表示装置もビデオインタフェース190のようなインターフェース経由でシステム・バス121に接続される。モニタに加えて、コンピュータは、さらにスピーカー197およびプリンター196のような他の周辺の出力デバイスを含んでいるかもしれない。それはアウトプット周辺インタフェース195によって接続されるかもしれない。
コンピュータ110は、リモートコンピュータ180のような1つ以上のリモートコンピュータへの論理結合を使用して、ネットワーク化された環境中で作動する。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、貴族デバイスあるいは他の共通ネットワークノードで典型的には多数含んでいる。あるいは、要素はすべて上に記述した、記憶装置デバイス181だけは図1に例証されたが、コンピュータ110に関連のある。描かれた論理結合はローカルエリアネットワーク(LAN)171およびワイドエリアネットワーク(WAN)173を含んでいるが、さらに他のネットワークを含んでいるかもしれない。そのようなネットワーキング環境は、オフィス、企業全体に渡るコンピュータネットワーク、イントラネットおよびインターネットで普通である。
LANネットワーキング環境の中で使用された時、コンピュータ110はネットワークインターフェイスまたはアダプターの170によってLAN171に接続される。WANネットワーキング環境の中で使用された時、コンピュータ110は典型的にはモデム172あるいはインターネットのようなWAN173の上のコミュニケーションを確立するための他の手段を含んでいる。モデム172(それは内部かもしれないか外部かもしれない)は、ユーザ入力インターフェース160経由のシステム・バス121、あるいは他の適切な機構に接続されるかもしれない。ネットワーク化された環境では、コンピュータ110(すなわちそれの部分)へのプログラムモジュールに描かれた関係詞は、遠隔記憶記憶装置に格納されるかもしれない。制限ではなく例経由で、図1はメモリ・デバイス181上で駐在するとして遠隔のアプリケーション・プログラム185を例証する。示されたネットワーク接続がコンピュータ間の通信リンクが使用されてもよいと確証する典型的・他の手段であることが認識されるだろう。
典型的な実施例
本発明は、プラットホーム(例えばAPIC)かバス(PCIバス)を使用するシステムと方法をインプリメントする、ユーザ・モード・ドライバが装置割り込みを取り除くのを待つ必要なしに、割込モードからCPU120を取り出す総括的な特徴。これは、デバイス・ドライバがユーザ・モード中で書かれることを有利に可能にする。ユーザ・モード・デバイス・ドライバは、高い割込み優先順位のではなく割り込みに関する通知を受け取る。下記に述べられるように、本発明は共有される割り込みまで延長されるかもしれない。そこでは、多数のデバイスは単一の割込ラインを共有する。
ここで、図2を参照すると、コンピューティング装置内に典型的なアーキテクチャが示される。1つ以上のCPU120が、I/OAPIC200(つまりI/Oコントローラ)およびPCIバス/ブリッジ202に接続される。インテル社製のアーキテクチャでは、システム上に8つものI/OAPICがありうる。それらはI/O装置から割込み信号を集めて、それらのデバイスが中断する必要がある場合、ローカルのAPICにメッセージを送信する。I/OAPICにはそれぞれ割り込みインプット(あるいはIRQ)の任意数がある。
様々なシステム・バス121は、ISAバス、PCIバス203(デバイス204はそれに接続される)210のように提供される。芸術における通常の熟練のものによって知られているように、PCIバス203に接続されるデバイス204はPCIレジスター205を含んでいる。デバイス204によって生成された割り込みは、割込みコントローラ200、および結局CPU120に徹底的に打ち破られる。CPUからデバイス204までパスがある。したがって、CPU120の上で実行するドライバはハードウェアデバイス204をアクセスすることができる/操作することができる。
図3を参照して、割り込みを扱う従来手法用のスケジュールが例証される。そこでは、デバイス・ドライバはカーネル・モードに存在する。当初は、デバイス・ドライバはプリアンブル・ステージでその割り込みサービスルーチン(ISR)を登録する。割り込みがT0で生じる場合、プロセッサが連続的に中断されないように、それはT1でCPUによってマスクされる。T2で、オペレーティング・システムドライバISRをコールし、ドライバは、T3において割り込みを処理して割り込みをクリアする。T4では、コントロールはISRから返る。また、T5では、オペレーティング・システムは必要ならば、次の割り込みを扱うことができるように割り込みをマスクすることをやめる。
図3の従来型の処理では、ISRが呼ばれるドライバが高くしたIRQLで生じる。したがって、モデルは、ユーザ・モード中で書かれたISRコードを考慮に入れない。ユーザ・モードISRに備えるために、ユーザ・モードISRコードを予定することができるまで、我々が割り込み(できるだけデバイスに近いレベルの)をマスクすることができることは必要とされる。本発明は、1つ以上のデバイス・ドライバをみておく、ユーザ・モード・プログラム/工程として実行されるかもしれない。カーネル・サービスは、それが総括的な割り込み機能性として働くと規定される。中断する、下位レベル(つまり、下記に述べられるように、CPUレベル以下に)で覆われる、まで、ユーザ・モード・ドライバ中でコード化する、起きて、割り込みを扱う。
本発明による割込サービスは、割り込みを受け取る準備ができているときにユーザ・モード・ドライバによってコールされるインターフェース(例えば、「wait_for_interrupt」)を露出する。ドライバに送られる割り込みオブジェクトを配分するため、割込サービスはI/Oマネージャーにインターフェースを供給する。デバイス・ドライバを始める場合、I/Oマネージャーは割り込みオブジェクトを作成するインターフェースを使用し、それをそれに特定の割込ラインへのアクセスを与えるデバイス・ドライバへ渡す。割り込みを受け取る準備ができておりかつ、または、1つ予期する場合、ドライバは「wait_for_interrupt」をコールする。この呼び出しから返ることは、ハードウェア割り込みが生じており、ドライバがデバイスを伝達するべき/操作するべきであることを示唆する。
wait_for_interruptをコールして次の割り込みを待機する前に、ドライバは、それがデバイス用に行なっているどんなアクティビティでもむしろ完成する、また原因から装置割り込みを取り除く。次の装置割り込みはこのwait_for_interruptをリターンする。専用のスレッド(むしろ、ない、メインスレッド)はこの待機プロセスに使用される。また、高い優先順位は、それに適用されるかもしれない。割込サービスは、ユーザ・モード・ドライバ用のデバイスインディペンデントの方法でCPUに達することからの割り込みをマスクする。例えば、特別の割込ラインは、典型的なAPICの中で覆われる場合がある。PCI2.3のようなあるバスは、バスに特有の方法で無効になることができる/可能になることができるコンフィグ・スペースの中にトグルを持っている。
本発明(デバイス中の割込マスク)によると、デバイスとは独立の態様での割り込みマスクは、デバイスに特有の方法でデバイスをプログラムせずに、デバイス(あるいは、それらを覆って)上の割り込みを不能にするための機構である。下記に述べられるように、ユーザ・モードISRはユーザ・モード・スレッドのコンテキストの中に捜し出される割り込みサービスルーチンのためのコードで、走る。図4は、共有されていないユーザ・モード割り込み機構用のスケジュールを例証する。割込ラインを共有していないデバイスのためのこの機構工場、メッセージを使用するデバイスは信号した、中断する、あるいは、割込ライン(ユーザまたはカーネルドライバを備えた)を共有するデバイスについては、だが支援するバスにおいては、マスキング部材用のデバイスインデペンデント機構は中断する。
図4を指さずに、割込サービスは、プリアンブル・ステージでデバイスインディペンデントの方法で割り込みをすべて不能にするかマスクすることにより外にスタートする。ドライバがサービスにスレッドを置くためにT0でwait_for_interruptをコールする場合には、特にその割り込みはT1で可能になり/暴露される。ドライバに関連したデバイスが割り込みを引き起こす場合、出来事が生じる。あるいは、割り込みがTlで可能になった時、1つは未決だった。また、CPUはT2で中断される。出来事は取り除かれるために自動車リセットされるかもしれない。
割り込みのために登録された総括的なカーネル・モード割り込みハンドラは、T3でコールされる。それはT4で割込ラインを不能にする/再度マスクする。これは、CPU(例えば、I/OAPIC200、PCIバス/ブリッジ202、オペレーティング・システムなど)よりも下位レベルで行われる。言いかえれば、T4で可能なものとして、デバイス204に接近しているものとして、装置割り込みはむしろ無効になる。その後、プロセッサはT5で割込モードを出る。また、ユーザ・モード割り込みスレッドはT6でその割り込みを待つドライバを呼ぶ予定である。ドライバはT7とリターンで割り込みを処理する。割込ラインは、次の割り込みのために再び可能になる。
ユーザレベルISRのための共有する割り込みに関する問題は待ち時間問題である。一般に、最短の量の可能な時に割り込みを覆っておくことは望ましい。ユーザ・モードISRの場合には、ISRが走るまで、割り込みは覆われる。これは、時間の重要な金額をとるかもしれない。ラインのための割り込みが再び暴露されるまで、同じ割込ラインを共有するデバイスはその割り込みを阻む。したがって、もし与えられた割込ラインを共有するユーザ・モードISRを備えたドライバがすべて、割り込みを待っていなければ、ラインはマスクされる。
ここで図5を参照すると、装置割り込みマスキングにつき支援しないバスで共有のユーザ・モード割り込み機構のための典型的な時刻表(タイムライン)がある。当初は、割り込みを共有するデバイスのそれぞれに対する割り込みは、バス又はデバイスレベルでマスクされる。ここで、再び、可能な最下位レベルで割り込みをマスクすることは望ましい。しかし、時には、1レベルあるいは別のレベルでマスクするほうが便利である。この場合、本発明はデバイスレベル、あるいはバス・レベルでマスクする場合がある。バス・レベルにマスクすることは、与えられたデバイスによって生成されたマスク割り込みへの道を提供する特徴である、これはデバイスレベル粒状度と共に、バス特徴である。このように装置割り込みをマスクすることによって、ユーザ・モードISRコードがデバイスの特定の方法でデバイスレベルで割り込みを取り除く予定でありえるまで、システムは作動し続けることができる。
その後、T0で、デバイスのためのユーザ・モード・ドライバはその割り込みオブジェクト上のWaitForInterrupt(割り込み待機)法を呼ぶことにより割り込みを待機する。ドライバが割り込み待機法をコールするごとにディクリメントされるカウンタ(当初は割り込みを共有するドライバの数へのセット)があり、スレッド、続いて、ブロックオン、与えられた割込ライン用のイベントオブジェクト。与えられた割込ラインを共有するユーザ・モード・デバイス・ドライバがすべて割り込みを待っていることを意味して、上に言及されたカウンターが0まで行く時、割り込み待機法は制御されている(T1)デバイスのための割り込みを暴露する。
一度に、装置割り込みが暴露された後、割り込みが生じる場合がある(T2)。割り込みが生じる時、割り込みのために登録された総括的なカーネル・モード割り込みサービスルーチン(ISR)は呼び出されるだろう(T3)。システムはこの割り込みを本質的に扱う、同じ方法カーネル・モードは中断する、従来の方式で処理される。ISRは最初に再度装置割り込み(T4)を覆い、次に、ユーザ・モードISRが閉鎖される出来事を示すだろう。その後、割込ラインごとのカウンターは割込ラインを共有するドライバの数にリセットされる。その後、プロセッサは割込モード(T5)を出る。ユーザ・モード・スレッドはすべて今起きるだろう(T6)。スレッドはそれぞれ、それがコントロールしているハードウェアが割り込みを生成したかどうかテストし、そうならば、割り込み(T7)をサービスする。完成した時、割り込み待機法が再びコールされる。
本発明に従って、ユーザ・モードと核心のモード成分間の割り込みの共有はユーザ・モード成分だけとそれらを共有することに似ている。違いは総括的な核心ISRがどのように働くかにある。このシナリオでは、総括的なカーネル・モードISRは、割込ラインを共有するカーネル・モード・ドライバ用のISRの後に呼び出される。割り込みを生成するデバイスがカーネル・モード・デバイスである場合、この方法、それは、核心中で速くサービスすることができ、ユーザ・モードISRを起こさないだろう。増加する待ち時間を例外として、割込ラインがよりしばしば覆われるので、カーネルドライバはこのスキームによって影響されない。さらに、カーネル・モード・ドライバはどれだけのドライバが割込ラインを共有しているかの計算に含まれていない。
上記のものに従って、どんな装置割り込みもデバイスについての知識なしで無効になる場合があるとともに、本発明は各デバイスの特定のドライバの必要なしでオペレーティング・システムの総括的なやり方で割り込みを扱うことができる。これは、一般に、オペレーティング・システムがI/OAPIC200についての知識を持ち、少なくともそのレベルに割り込みを不能にすることができるからである。上に注意されるように、できるだけデバイスに近い割り込みを扱うことは望ましい。
本発明は、さらにオペレーティング・システムで登録しないドライバに備える。割り込みがそのデバイス・ドライバが登録しなかったか未知のデバイスによって生成される場合、割り込みはデバイスレベルで切られる。また、デバイスはそれ以上の割り込みを防ぐために無効になる。あるいは、割り込みがそうであると他の公認のドライバが報告する場合、共通制御スキームの下で、「それらのものではない」その割り込みは有効にデバイスをオフにするために無効になる。
本発明が様々な図面での好適実施例に関して記述されたが、他の同様の実施例が使用されてもよいことは理解されるべきである。あるいは、変更と追加分は、本発明から逸脱することなく、本発明の同じ機能を行なうために記述された具体化になされるかもしれない。例えば、ある当業者が、インターネットを利用しているか無線のかにかかわらず、現在のアプリケーションに述べられているような本発明が任意のコンピューティング装置あるいは環境に当てはまるかもしれないし通信網によって接続していて、ネットワークを介して対話するそのようなコンピューティング装置の任意の数に適用されるかもしれないことを認識するだろう。更に、それは強調されるべきであるが、様々なコンピュータ・プラットフォーム、携帯型のデバイス・オペレーティング・システムおよび他のアプリケーションを含んでいること、特定のオペレーティング・システムは特に無線のネットワーク・デバイスの数として、考慮することができる。まださらに、本発明は多くの処理チップあるいはデバイス中で、あるいはその複数において実行される。また、記憶装置は多くのデバイスを横切って同様に達成されるかもしれない。したがって、本発明はどんな単一の具体化にも制限されたべきでないが、冒頭の特許請求の範囲による範囲をの中に属すると解釈されるべきである。
本発明の特徴を実装することが可能な例示的なコンピューティング環境を示すブロック図である。 図1のようなコンピューティング環境の中の典型的なアーキテクチャが示されている。 デバイス・ドライバがカーネル・モードにある場合に割り込みを処理する従来型の方法におけるタイムラインを図解している。 本発明による割り込み処理のためのタイムラインを図解している。 本発明による割り込み処理のためのタイムラインを図解している。

Claims (17)

  1. コンピュータで実行する、デバイスと独立に割り込みを処理する方法であって、
    ユーザ・モードで実行されるデバイス・ドライバをオペレーティング・システムに登録するステップと、
    デバイスと独立な割り込みサービスをカーネル・サービスとして提供するステップと、
    前記コンピュータが、前記ドライバによってコールされるインターフェースを露出(expose)し、割り込みをイネーブルするステップと、
    前記コンピュータが、前記割り込みをデバイスと独立な方法でマスクするステップと、
    前記コンピュータが、前記インターフェスを介して前記デバイス・ドライバからのコールを受け取るステップであって、前記コールは前記割り込みサービスにより割り込みラインに生じたものである、ステップと、
    前記コンピュータが、前記割り込みをマスク解除するステップと、
    前記コンピュータが、前記割り込みを受け取るステップと、
    前記コンピュータが、前記割り込みラインを共有するカーネル・モード・ドライバ用の割り込みサービス・ルーチンを呼び出した後に、前記割り込み受け取りに応じた総括的なカーネル・モード・割り込みサービス・ルーチンを呼び出すステップと、
    前記コンピュータが、前記割り込みラインからの割り込みを再度マスクする総括的な割り込みサービス・ルーチンを実行し、前記割り込みを処理するために、ユーザ・モードで前記デバイス・ドライバのコールをスケジュリングするステップと、
    前記割り込みを前記デバイス・ドライバによって処理するステップと、
    前記割り込みラインが、他の割り込みを受け取れるようにするステップと、
    を含むことを特徴とする方法。
  2. コンピュータで実行する、請求項1記載の方法において、
    前記割り込みをマスクするステップは、APIC又はバス・コントローラの一方において生じることを特徴とする方法。
  3. コンピュータで実行する、請求項1記載の方法において、
    前記割り込みを共有するスケジュリング機構を提供するステップと、
    前記コンピュータが、前記割り込みラインを共有するすべてのドライバをコールするステップと、
    前記コンピュータが、すべてのドライバが前記割り込みの処理から復帰するまで前記割り込みのマスクを維持するステップと、
    を更に含むことを特徴とする方法。
  4. コンピュータで実行する、請求項3記載の方法において、
    前記割り込みラインを共有する多数のドライバにカウンタを設定するステップを更に含むことを特徴とする方法。
  5. コンピュータで実行する、請求項4記載の方法において、
    前記割り込みをイネーブルする前に前記カウンタをゼロにデクリメントするステップを更に含むことを特徴とする方法。
  6. コンピュータで実行する、請求項3記載の方法において、
    第2のドライバがカーネル・モード・レベルにおいて提供され、
    前記方法が、ユーザ・モード・ドライバとカーネル・モード・ドライバとの両方に対して実行されることを特徴とする方法。
  7. コンピュータで実行する、請求項1記載の方法において、
    前記カーネル・サービスは前記ドライバによって処理されるデバイスとは独立である総括的なサービスであり、
    前記ドライバはユーザ・モード・ドライバであることを特徴とする方法。
  8. コンピュータで実行する、ユーザ・モードのデバイス・ドライバの処理方法であって、
    ユーザ・モードのデバイス・ドライバをオペレーティング・システムに登録するステップと、
    前記ユーザ・モードのデバイス・ドライバによってコールされるインターフェースを露出し、割り込みをイネーブルする、前記デバイスと独立な割り込みサービスをカーネル・サービスとして提供するステップと、
    総括的な割り込みサービス・ルーチンを実行する前に、前記割り込みをプロセッサにおいてマスクするステップと、
    前記コンピュータが、前記インターフェスを介して、前記ユーザ・モードのデバイス・ドライバのうちのひとつからのコールを受け取るステップであって、前記コールは前記割り込みサービスにより割り込みラインに生じたものである、ステップと、
    前記コンピュータが、前記割り込みをマスク解除するステップと、
    前記コンピュータが、前記割り込みを受け取るステップと、
    前記コンピュータが、前記割り込みラインを共有するカーネル・モード・ドライバ用の割り込みサービス・ルーチンを呼び出した後に、前記割り込み受け取りに応じた総括的なカーネル・モード・割り込みサービス・ルーチンを呼び出すステップと、
    前記コンピュータが、前記総括的なカーネル・モード割り込みサービスを実行するステップと、
    前記コンピュータが、前記割り込みラインからの割り込みをマスクして、前記割り込みが前記プロセッサに到達することを防止するステップと、
    前記コンピュータが、前記割り込みを処理するために、ユーザ・モードで前記ユーザ・モードのデバイス・ドライバのうちのひとつをコールすることをスケジュリングするステップと、
    前記割り込みを前記ユーザ・モードのデバイス・ドライバのうちのひとつによって処理するステップと、
    前記割り込みラインが、他の割り込みを受け取れるようにするステップと、
    を含むことを特徴とする方法。
  9. 請求項8記載の方法において、
    前記割り込みをマスクするステップは、APIC又はバス・コントローラの一方において生じることを特徴とする方法。
  10. 請求項8記載の方法において、
    割り込みラインを共有する割り込みのスケジュリング機構を提供するステップと、
    前記コンピュータが、前記割り込みラインを共有する割り込みと関連するすべてのユーザ・モードのデバイス・ドライバをコールするステップと、
    前記コンピュータが、すべてのユーザ・モードのデバイス・ドライバが前記割り込みの処理から復帰するまで前記割り込みのマスクを維持するステップと、
    を更に含むことを特徴とする方法。
  11. 請求項10記載の方法において、
    前記コンピュータが、未登録又は未知のデバイスのために前記スケジュリング機構を実行するステップと、
    前記コンピュータが、前記未登録又は未知のデバイスをディセーブルするステップと、
    を更に含むことを特徴とする方法。
  12. 請求項8記載の方法において、
    カーネル・モードのデバイス・ドライバが提供され、
    前記方法が、前記ユーザ・モードのデバイス・ドライバと前記カーネル・モードのデバイス・ドライバとの両方で実行されることを特徴とする方法。
  13. ユーザ・モードのデバイス・ドライバをコンピュータにより処理するための命令が記憶されているコンピュータ可読な媒体であって、前記命令は、
    前記ユーザ・モードのデバイス・ドライバをオペレーティング・システムに登録するステップと、
    割り込みサービスをカーネル・サービスとして提供するステップであって、前記割り込みサービスは前記ユーザ・モードのデバイス・ドライバによってコールされるインターフェースを露出して、割り込みをイネーブルする、ステップと、
    割り込みラインへのアクセスを提供する割り込みオブジェクトを、前記デバイス・ドライバのひとつに割り付け、かつ、前記割り込みオブジェクトを前記ユーザ・モードのデバイス・ドライブのひとつに受け渡すステップと、
    プロセッサにおいて前記割り込みをマスクするステップと、
    前記コンピュータが、前記インターフェスを介して前記ユーザ・モードのデバイス・ドライバのうちのひとつからのコールを受け取るステップであって、前記コールは前記割り込みサービスにより割り込みラインに生じたものである、ステップと、
    前記コンピュータが、前記割り込みをマスク解除するステップと、
    前記コンピュータが、前記割り込みを受け取るステップと、
    前記コンピュータが、前記割り込みラインを共有するカーネル・モード・ドライバ用の割り込みサービス・ルーチンを呼び出した後に、前記割り込み受け取りに応じた総括的なカーネル・モード・割り込みサービス・ルーチンを呼び出すステップと、
    前記コンピュータが、前記総括的なカーネル・モード割り込みサービスを実行するステップと、
    前記コンピュータが、前記割り込みラインからの割り込みをマスクして、前記割り込みが前記プロセッサに到達することを防止するステップと、
    前記コンピュータが、前記割り込みを処理するために、ユーザ・モードで前記ユーザ・モードのデバイス・ドライバのうちのひとつをコールすることをスケジュリングするステップと、
    前記割り込みを前記ユーザ・モードのデバイス・ドライバのうちのひとつによって処理するステップと、
    前記割り込みラインが、他の割り込みを受け取れるようにするステップと、
    を含む方法を実行することを特徴とするコンピュータ可読な媒体。
  14. 請求項13記載のコンピュータ可読な媒体において、
    前記割り込みのマスクは、APIC又はバス・コントローラの一方において生じることを特徴とするコンピュータ可読な媒体。
  15. 請求項13記載のコンピュータ可読な媒体において、
    割り込みラインを共有する割り込みのためのスケジュリング機構を提供するステップと、
    前記コンピュータが、割り込みラインを共有する前記割り込みと関連するすべてのユーザ・モードのデバイス・ドライバをコールするステップと、
    前記コンピュータが、すべてのユーザ・モードのデバイス・ドライバが前記割り込みの処理から復帰するまで前記割り込みのマスクを維持するステップと、
    を実行するための命令を更に含むことを特徴とするコンピュータ可読な媒体。
  16. 請求項15記載のコンピュータ可読な媒体において、
    前記コンピュータが、未登録又は未知のデバイスのために前記スケジュリング機構を実行するステップと、
    前記コンピュータが、前記未登録又は未知のデバイスをディセーブルするステップと、
    を実行するための命令を更に含むことを特徴とするコンピュータ可読な媒体。
  17. 請求項15記載のコンピュータ可読な媒体において、
    カーネル・モードのデバイス・ドライバが提供され、
    前記命令は、前記ユーザ・モードのデバイス・ドライバとカーネル・モードのデバイス・ドライバとの両方で実行されることを特徴とするコンピュータ可読な媒体。
JP2008512442A 2005-05-16 2006-05-16 ユーザ・モード・ドライバへ割り込みを配送する方法 Active JP4840945B2 (ja)

Applications Claiming Priority (3)

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

Publications (3)

Publication Number Publication Date
JP2008541306A JP2008541306A (ja) 2008-11-20
JP2008541306A5 JP2008541306A5 (ja) 2009-06-25
JP4840945B2 true JP4840945B2 (ja) 2011-12-21

Family

ID=37420515

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008512442A Active JP4840945B2 (ja) 2005-05-16 2006-05-16 ユーザ・モード・ドライバへ割り込みを配送する方法

Country Status (13)

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

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

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01145751A (ja) * 1987-12-01 1989-06-07 Pfu Ltd 入出力制御方式
JPH02170237A (ja) * 1988-12-23 1990-07-02 Fujitsu Ltd 割り込み制御方式
JPH05108507A (ja) * 1991-10-17 1993-04-30 Ricoh Co Ltd バスエラー処理回路
JPH07129413A (ja) * 1993-11-05 1995-05-19 Matsushita Electric Ind Co Ltd 割込み処理装置

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IN171220B (ja) * 1987-07-01 1992-08-15 Digital Equipment Corp
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
US5438677A (en) * 1992-08-17 1995-08-01 Intel Corporation Mutual exclusion for computer system
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01145751A (ja) * 1987-12-01 1989-06-07 Pfu Ltd 入出力制御方式
JPH02170237A (ja) * 1988-12-23 1990-07-02 Fujitsu Ltd 割り込み制御方式
JPH05108507A (ja) * 1991-10-17 1993-04-30 Ricoh Co Ltd バスエラー処理回路
JPH07129413A (ja) * 1993-11-05 1995-05-19 Matsushita Electric Ind Co Ltd 割込み処理装置

Also Published As

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

Similar Documents

Publication Publication Date Title
JP4840945B2 (ja) ユーザ・モード・ドライバへ割り込みを配送する方法
EP3039540B1 (en) Virtual machine monitor configured to support latency sensitive virtual machines
US9201703B2 (en) Sharing kernel services among kernels
US7962913B2 (en) Scheduling threads in a multiprocessor computer
US6957432B2 (en) Real-time scheduler
US20020116563A1 (en) Apparatus and method to reduce interrupt latency in shared interrupt systems
US7979861B2 (en) Multi-processor system and program for causing computer to execute controlling method of multi-processor system
US20080075101A1 (en) Quality of service implementation for platform resources
US9009716B2 (en) Creating a thread of execution in a computer processor
JPH06301555A (ja) マイクロカーネル上の複数の共存オペレーティング・システム・パーソナリティ用のシステム
JP2022509170A (ja) プロセッサにおける余裕認識(laxity-aware)型動的優先度変更
US20100017806A1 (en) Fine grain os scheduling
US8141077B2 (en) System, method and medium for providing asynchronous input and output with less system calls to and from an operating system
US11055137B2 (en) CPU scheduling methods based on relative time quantum for dual core environments
JP2006164266A (ja) オペレーティングシステムのパフォーマンスの改善
US6990669B1 (en) Real-time scheduler
US11301304B2 (en) Method and apparatus for managing kernel services in multi-core system
US7962553B2 (en) Method and system for distribution of maintenance tasks in a multiprocessor computer system
Rothberg Interrupt handling in Linux
Mejia-Alvarez et al. Interrupt handling in classic operating systems
Kruk Prescript to the lectures Operating Systems (EOPSY)(work in progress)
Pfeiffer Jr The UNIX Operating System for Telemetry Applications
JPS6269323A (ja) 事象処理方式
US20110072247A1 (en) Fast application programmable timers

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090511

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090511

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101202

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110224

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110902

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20110906

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110930

R150 Certificate of patent or registration of utility model

Ref document number: 4840945

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141014

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250