(57)【要約】      （修正有）【課題】非ＰＣＩデバイスを制御するドライバを、簡易に組み込み可能とするシステムの提供。【解決手段】非ＰＣＩデバイス１２に対応する仮想的なＰＣＩデバイスのベンダＩＤとデバイスＩＤ等を記憶した仮想のＰＣＩデバイスのコンフィギュレーション空間ヘッダ領域１３１をシステムＢＩＯＳ１３が参照できる媒体上に用意しておき、オペレーティングシステム３は、ブート時に非ＰＣＩデバイスに対して仮想的なＰＣＩデバイスのベンダＩＤとデバイスＩＤを返却し、オペレーティングシステムは、前記仮想的なＰＣＩデバイス用のドライバを検索し、対応するドライバをロードし、仮想ＰＣＩデバイスが割り込みを用いる場合、割り込みピンレジスタ１３３に割り込み有りが設定される。【選択図】図１
2005250975.tif 000002
【特許請求の範囲】
【請求項１】
所定のバスインタフェース仕様を有する少なくとも１つの第１の機器と、
前記バスインタフェース仕様とは異なるインタフェース仕様を有する少なくとも１つの第２の機器と、
を実装する情報処理装置が、
前記第１の機器に設けられ前記第１の機器に関する識別情報を少なくとも格納するコンフィギュレーション空間とは別に、前記情報処理装置の記憶部内に、前記コンフィギュレーション空間と形式を少なくとも一部共通とし、前記第２の機器に対して仮想的なコンフィギュレーション空間領域を備え、
前記仮想的なコンフィギュレーション空間領域には、少なくとも前記第２の機器に関する仮想的な識別情報が記憶され、
ブート時に、前記第１の機器に対して、前記第１の機器の識別情報を、前記第１の機器のコンフィギュレーション空間から取得し、前記第１の機器に対応するドライバをロードし、
前記第２の機器に対して、対応する仮想的なコンフィギュレーション空間領域から仮想的な識別情報を取得し、前記第２の機器に対応するドライバをロードする構成とされてなる、ことを特徴とする情報処理装置。
【請求項２】
所定のバスインタフェース仕様を有する少なくとも１つの第１の機器と、
前記バスインタフェース仕様とは異なるインタフェース仕様を有する少なくとも１つの第２の機器と、
を実装する情報処理装置のドライバのロード方法であって、
前記第１の機器に設けられ前記第１の機器に関する識別情報を少なくとも格納するコンフィギュレーション空間とは別に、前記情報処理装置の記憶部内に、前記コンフィギュレーション空間と形式を少なくとも一部共通とし、前記第２の機器に対して仮想的なコンフィギュレーション空間領域を用意し、前記仮想的なコンフィギュレーション空間領域には、少なくとも前記第２の機器に関する仮想的な識別情報を記憶しておく工程と、
ブート時に、前記第１の機器に対して、前記第１の機器の識別情報を、前記第１の機器のコンフィギュレーション空間から取得し、前記第１の機器に対応するドライバをロードし、
前記第２の機器に対して、対応する仮想的なコンフィギュレーション空間領域から仮想的な識別情報を取得し、前記第２の機器に対応するドライバをロードする工程と、
を含む、ことを特徴とする情報処理装置のドライバのロード方法。
【請求項３】
所定のバスインタフェース仕様を有する少なくとも１つの第１の機器と、
前記バスインタフェース仕様とは異なるインタフェース仕様を有する少なくとも１つの第２の機器と、
を実装するコンピュータに、
前記第１の機器に設けられ前記第１の機器に関する識別情報を少なくとも格納するコンフィギュレーション空間とは別に、所定の記憶部に、前記コンフィギュレーション空間と形式を少なくとも一部共通とし、前記第２の機器に対して仮想的なコンフィギュレーション空間領域を用意し、前記仮想的なコンフィギュレーション空間領域には、少なくとも前記第２の機器に関する仮想的な識別情報を格納する処理と、
ブート時に、前記第１の機器に対して、前記第１の機器の識別情報を、前記第１の機器のコンフィギュレーション空間から取得し、前記第１の機器に対応するドライバをロードし、
前記第２の機器に対して、対応する仮想的なコンフィギュレーション空間領域から仮想的な識別情報を取得し、前記第２の機器に対応するドライバをロードする処理と、
を実行させるプログラム。
【請求項４】
ＰＣＩ（Peripheral Component Interface）デバイスと、非ＰＣＩデバイスとを実装するコンピュータシステムにおいて、
前記非ＰＣＩデバイスに対応させた仮想的なＰＣＩデバイスの所定の識別情報を少なくとも記憶した記憶領域を、システムＢＩＯＳ（Basic Input/Output System）側に用意しておき、
オペレーティングシステムは、ブート時に、前記コンピュータシステムに実装されているＰＣＩデバイスを探すために前記システムＢＩＯＳに問い合わせ、
前記システムＢＩＯＳは、前記コンピュータシステムに実装されているＰＣＩデバイスに対して、前記ＰＣＩデバイスの識別情報を前記オペレーティングシステムに返却し、前記非ＰＣＩデバイスに対して、前記仮想的なＰＣＩデバイスの識別情報を前記オペレーティングシステムに返却し、
前記オペレーティングシステムは、前記システムＢＩＯＳからの前記識別情報を受け、前記仮想的なＰＣＩデバイスに対応するドライバをドライバライブラリから検索し、検索された前記ドライバを前記非ＰＣＩデバイスに対応するドライバとしてロードする、ことを特徴とするコンピュータシステム。
【請求項５】
前記システムＢＩＯＳが参照可能な媒体上に、仮想的なＰＣＩデバイスのコンフィギュレーション空間のヘッダ領域が配設され、前記ヘッダ領域に、前記仮想的なＰＣＩデバイスの所定の識別情報として、予め定めたベンダＩＤとデバイスＩＤとが格納される、ことを特徴とする請求項４記載のコンピュータシステム。
【請求項６】
前記非ＰＣＩデバイスが割り込みを用いる場合には、前記仮想ＰＣＩデバイスのコンフィギュレーション空間のヘッダ領域に設けられた割り込みピンレジスタに、割り込み有りの情報が設定される、ことを特徴とする請求項５記載のコンピュータシステム。
【請求項７】
前記オペレーティングシステムは、前記仮想ＰＣＩデバイスが割り込みを実装しているか否かを前記システムＢＩＯＳに問い合わせ、前記システムＢＩＯＳは、非ＰＣＩデバイスが割り込みを用いる場合には、設定された割り込み有りを返却し、
前記オペレーティングシステムは、前記仮想ＰＣＩデバイスが割り込みを実装していると判断して割り込みハンドラを登録する、ことを特徴とする請求項６記載のコンピュータシステム。
【請求項８】
ＰＣＩ（Peripheral Component Interface）デバイスと、非ＰＣＩデバイスとを実装するコンピュータシステムにおける前記非ＰＣＩデバイスのドライバのロード制御方法であって、
前記非ＰＣＩデバイスに対応させた仮想的なＰＣＩデバイスの所定の識別情報を少なくとも記憶した記憶領域を、システムＢＩＯＳ（Basic Input/Output System）側に用意しておく工程と、
オペレーティングシステムは、ブート時に、前記コンピュータシステムに実装されているＰＣＩデバイスを探すために前記システムＢＩＯＳに問い合わせる工程と、
前記システムＢＩＯＳは、前記コンピュータシステムに実装されているＰＣＩデバイスに対して、前記ＰＣＩデバイスの識別情報を前記オペレーティングシステムに返却し、前記非ＰＣＩデバイスに対して、前記仮想的なＰＣＩデバイスの識別情報を前記オペレーティングシステムに返却する工程と、
前記オペレーティングシステムは、前記システムＢＩＯＳからの前記識別情報を受け、前記仮想的なＰＣＩデバイスに対応するドライバをドライバライブラリから検索し、検索された前記ドライバを前記非ＰＣＩデバイスに対応するドライバとしてロードする工程と、
を含む、ことを特徴とするドライバのロード制御方法。
【請求項９】
前記システムＢＩＯＳが参照可能な媒体上に、仮想的なＰＣＩデバイスのコンフィギュレーション空間のヘッダ領域が配設され、
前記ヘッダ領域に、前記仮想的なＰＣＩデバイスの所定の識別情報として、予め定めたベンダＩＤとデバイスＩＤとを格納しておく工程を含む、ことを特徴とする請求項８記載のドライバのロード制御方法。
【請求項１０】
前記非ＰＣＩデバイスが割り込みを用いる場合には、前記仮想ＰＣＩデバイスのコンフィギュレーション空間のヘッダ領域に設けられた割り込みピンレジスタに割り込み有りの情報を設定する工程を含む、ことを特徴とする請求項９記載のドライバのロード制御方法。
【請求項１１】
前記ブート時に、前記オペレーティングシステムが、仮想ＰＣＩデバイスが割り込みを実装しているか否かを、前記システムＢＩＯＳに問い合わせる工程と、
前記システムＢＩＯＳは、非ＰＣＩデバイスが割り込みを用いる場合に、割り込み有りを返却する工程と、
前記ブート時に、前記オペレーティングシステムは、前記仮想ＰＣＩデバイスが割り込みを実装していると判断して割り込みハンドラを登録する工程と、
を含む、ことを特徴とする請求項１０記載のドライバのロード制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に関し、特に、デバイスドライバのロード方法と装置並びにプログラムに関する。
【背景技術】
【０００２】
ＰＣＩ(Peripheral Component Interconnect)デバイスを実装したコンピュータシステムでは、該ＰＣＩデバイスを制御するプラグ・アンド・プレイ機能に対応したオペレーティングシステムが、システムＢＩＯＳ(Basic Input/Output System)を介して、ＰＣＩデバイス側のＰＣＩコンフィギュレーション空間を検索し、コンピュータシステムに実装されているＰＣＩデバイスを知ることにより、該当するＰＣＩデバイスに必要とされ対応するドライバ（「デバイスドライバ」、「Ｉ／Ｏドライバ」ともいう）をロードし、ＰＣＩデバイスを制御する。
【０００３】
一方、バスインタフェース等がＰＣＩ仕様と異なる非ＰＣＩデバイスでは、デバイスと、ドライバとを関連付ける一般的な手法は存在していない。よって、デバイスのシステムへの実装に先立ち、予めオペレーティングシステムを改造する等して、ドライバをオペレーティングシステムのカーネルへリンクしておくことが必要とされる。そして、オペレーティングシステムを改造できない場合には、非ＰＣＩデバイスを制御するドライバをオペレーティングシステムに組み込むことは、甚だしく困難である。
【０００４】
なお、複数の入出力装置を接続するための複数のアダプタと、これを制御する複数の入出力制御プログラム（デバイスドライバ）を有するコンピュータシステムにおいて、アダプタにアダプタ識別を設け、コンピュータシステムの初期化時に、ＣＰＵが識別を読込み、補助記憶装置のデバイスドライバのうち必要なデバイスドライバのみをリンクしてオペレーティングシステムを生成し主記憶にロードする構成が知られている（例えば特許文献１参照）。また、後述する本発明で用いられる仮想ＰＣＩデバイスとは、「仮想」の意味が異なるが、仮想資源オペレーティングシステム上で仮想計算機（ＶＭ）として走行するオペレーティングシステムのデバイスドライバと仮想資源マネージャの対応する実デバイス及び仮想デバイスとを結合する構成が知られている（例えば特許文献２参照）。
【０００５】
【特許文献１】特開平８−６３４２０号公報（第１図）
【特許文献２】特開昭６１−２０１３４１号公報（第１図）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上記した通り、ＰＣＩデバイスと相違して、デバイスとドライバとを関連付ける一般的な手法が存在しないデバイスに対しては、該デバイスをシステムに実装するにあたり、予めオペレーティングシステムを改造しドライバをオペレーティングシステムのカーネルへリンクしておくことが必要とされ、このため、オペレーティングシステムを改造できない場合には、非ＰＣＩデバイスを制御するドライバをオペレーティングシステムに組み込むことは困難である、という問題点を有している。
【０００７】
したがって、本発明は、上記問題点に鑑みて創案されたものであって、その目的は、非ＰＣＩデバイス等のデバイスを制御するドライバをコンピュータシステムへ簡易に組み込み可能とするシステム及び方法並びにコンピュータ・プログラムを提供することにある。
【課題を解決するための手段】
【０００８】
本明細書で開示される発明は、前記目的を達成するため、概略以下の構成とされる。
【０００９】
本発明の一つのアスペクト（側面）に係る情報処理装置は、所定のバスインタフェース仕様を有する少なくとも１つの第１の機器と、前記バスインタフェース仕様とは異なるインタフェース仕様を有する少なくとも１つの第２の機器とを実装し、前記第１の機器に設けられ前記第１の機器に関する識別情報を少なくとも格納するコンフィギュレーション空間とは別に、前記情報処理装置の記憶部内に、前記コンフィギュレーション空間と形式を少なくとも一部共通とし、前記第２の機器に対して仮想的なコンフィギュレーション空間領域を備え、前記仮想的なコンフィギュレーション空間領域には、少なくとも前記第２の機器に関する仮想的な識別情報が記憶され、ブート時に、前記第１の機器に対して、前記第１の機器の識別情報を、前記第１の機器のコンフィギュレーション空間から取得し、前記第１の機器に対応するドライバをロードし、前記第２の機器に対して、対応する仮想的なコンフィギュレーション空間領域から仮想的な識別情報を取得し、前記第２の機器に対応するドライバをロードする構成とされている。
【００１０】
本発明の他のアスペクト（側面）に係る方法は、所定のバスインタフェース仕様を有する少なくとも１つの第１の機器と、前記バスインタフェース仕様とは異なるインタフェース仕様を有する少なくとも１つの第２の機器と、を実装する情報処理装置のドライバの組込みにあたり、前記第１の機器に設けられ前記第１の機器に関する識別情報を少なくとも格納するコンフィギュレーション空間とは別に、前記情報処理装置の記憶部内に、前記コンフィギュレーション空間と形式を少なくとも一部共通とし、前記第２の機器に対して仮想的なコンフィギュレーション空間領域を用意し、前記仮想的なコンフィギュレーション空間領域には、少なくとも前記第２の機器に関する仮想的な識別情報を記憶しておく工程と、ブート時に、前記第１の機器に対して、前記第１の機器の識別情報を、前記第１の機器のコンフィギュレーション空間から取得し、前記第１の機器に対応するドライバをロードし、前記第２の機器に対して、対応する仮想的なコンフィギュレーション空間領域から仮想的な識別情報を取得し、前記第２の機器に対応するドライバをロードする工程と、
を含む。
【００１１】
本発明の他のアスペクト（側面）に係るコンピュータ・プログラムは、所定のバスインタフェース仕様を有する少なくとも１つの第１の機器と、前記バスインタフェース仕様とは異なるインタフェース仕様を有する少なくとも１つの第２の機器と、を実装するコンピュータに、前記第１の機器に設けられ前記第１の機器に関する識別情報を少なくとも格納するコンフィギュレーション空間とは別に、所定の記憶部に、前記コンフィギュレーション空間と形式を少なくとも一部共通とし、前記第２の機器に対して仮想的なコンフィギュレーション空間領域を用意し、前記仮想的なコンフィギュレーション空間領域には、少なくとも前記第２の機器に関する仮想的な識別情報を格納する処理と、ブート時に、前記第１の機器に対して、前記第１の機器の識別情報を、前記第１の機器のコンフィギュレーション空間から取得し、前記第１の機器に対応するドライバをロードし、前記第２の機器に対して、対応する仮想的なコンフィギュレーション空間領域から仮想的な識別情報を取得し、前記第２の機器に対応するドライバをロードする処理と、を実行させるプログラムよりなる。
【００１２】
本発明は、システムＢＩＯＳが非ＰＣＩデバイスを、ＰＣＩデバイスへ見せかけることにより、オペレーティングシステムが対応するドライバをコンピュータシステムに組み込む。
【００１３】
本発明の他のアスペクトに係るコンピュータシステムは、ＰＣＩデバイスと、非ＰＣＩデバイスとを実装するコンピュータシステムにおいて、前記非ＰＣＩデバイスに対応させた仮想的なＰＣＩデバイスの所定の識別情報を少なくとも記憶した記憶領域を、システムＢＩＯＳ側に用意しておき、オペレーティングシステムは、ブート時に、前記コンピュータシステムに実装されているＰＣＩデバイスを探すために前記システムＢＩＯＳに問い合わせ、前記システムＢＩＯＳは、前記コンピュータシステムに実装されているＰＣＩデバイスに対して、前記ＰＣＩデバイスの識別情報を前記オペレーティングシステムに返却し、前記非ＰＣＩデバイスに対して、前記仮想的なＰＣＩデバイスの識別情報を前記オペレーティングシステムに返却し、前記オペレーティングシステムは、前記システムＢＩＯＳからの前記識別情報を受け、前記仮想的なＰＣＩデバイスに対応するドライバをドライバライブラリから検索し、検索された前記ドライバを前記非ＰＣＩデバイスに対応するドライバとしてロードする構成とされている。
【００１４】
本発明において、前記システムＢＩＯＳが参照可能な媒体上に、仮想的なＰＣＩデバイスのコンフィギュレーション空間のヘッダ領域が配設され、前記ヘッダ領域に、前記仮想的なＰＣＩデバイスの所定の識別情報として、予め定めたベンダＩＤとデバイスＩＤとが格納される構成としてもよい。
【００１５】
本発明において、前記非ＰＣＩデバイスが割り込みを用いる場合には、前記仮想ＰＣＩデバイスのコンフィギュレーション空間のヘッダ領域の割り込みピンレジスタに、割り込み有りが設定される構成としてもよい。
【００１６】
本発明において、前記オペレーティングシステムは、前記仮想ＰＣＩデバイスが割り込みを実装しているか否かを前記システムＢＩＯＳに問い合わせ、前記システムＢＩＯＳは、非ＰＣＩデバイスが割り込みを用いる場合には、設定された割り込み有りを返却し、前記オペレーティングシステムは、前記仮想ＰＣＩデバイスが割り込みを実装していると判断して割り込みハンドラを登録する構成としてもよい。
【発明の効果】
【００１７】
本発明によれば、非ＰＣＩデバイスを制御するドライバを、ＰＣＩデバイスに対するプラグ・アンド・プレイ機能を用いてコンピュータシステムへ組み込むにあたり、システムＢＩＯＳが非ＰＣＩデバイスを、ＰＣＩデバイスへ見せかけることにより、オペレーティングシステムが対応するドライバをコンピュータシステムに容易に組み込むことができる
。
【００１８】
さらに、本発明によれば、非ＰＣＩデバイス用ドライバを通常のＰＣＩデバイス用ドライバとして作成することにより、オペレーティングシステムを改造することなく、ドライバを組み込むことができる。
【発明を実施するための最良の形態】
【００１９】
本発明についてさらに詳細に説述すべく、添付図面を参照してこれを説明する。
【００２０】
図１は、発明を実施するための最良の一実施形態の構成を示す図である。図１を参照すると、本実施形態に係るコンピュータシステム（１００）において、オペレーティングシステム（３）は、ＰＣＩコンフィギュレーション空間を参照する際に、システムＢＩＯＳ（１３）に問い合わせ、システムＢＩＯＳ（１３）が値を返却する。オペレーティングシステム（３）をブートする前に、予めコンピュータシステム（１００）に非ＰＣＩデバイス（１２）に対応する仮想的なＰＣＩデバイスのＰＣＩコンフィギュレーション空間を実装しておく。具体的には、システムＢＩＯＳ（１３）から参照可能な媒体上に仮想的に、ＰＣＩコンフィギュレーション空間ヘッダ領域（１３１）を定義しておき、ＰＣＩコンフィギュレーション空間ヘッダ領域（１３１）に、非ＰＣＩデバイスに対応する仮想ＰＣＩデバイスとしてあらかじめ定めておいたベンダＩＤとデバイスＩＤ（１３２）を設定しておく（設定１）。
【００２１】
また、非ＰＣＩデバイス（１２）が割り込みを用いる場合には、非ＰＣＩデバイス（１２）に対応する仮想ＰＣＩデバイス（２０）が割り込みを実装しているように見せるために仮想ＰＣＩデバイスのコンフィギュレーション空間ヘッダ領域の割り込みピンレジスタ（１３３）に「割り込み有り」の情報を予め設定しておく（設定２）。
【００２２】
オペレーティングシステム（３）は、ブート時に、コンピュータシステムに実装されているＰＣＩデバイスを探すために、ＰＣＩコンフィギュレーション空間ヘッダ領域を、システムＢＩＯＳに問い合わせる（図１の矢線Ａで示す処理）。
【００２３】
システムＢＩＯＳ（１３）は、システムに実装されているＰＣＩデバイスに対して、該デバイスのべンダＩＤとデバイスＩＤを返却する。
【００２４】
システムＢＩＯＳ（１３）は、非ＰＣＩデバイス（１２）に対して、上記「設定１」で設定された仮想ＰＣＩデバイス（２０）のベンダＩＤとデバイスＩＤ（１３２）を返却する（図１の矢線Ｂで示す処理）。システムＢＩＯＳ（１３）から渡されたＩＤにより、オペレーティングシステム（３）は、仮想ＰＣＩデバイス（２０）用のドライバ（３００）を検索し、対応するドライバ（非ＰＣＩドライバ３００）を主記憶にロードする（図１の矢線ＣＡ、ＣＢで示す処理）。
【００２５】
また、オペレーティングシステム（３）は、仮想ＰＣＩデバイス（２０）が割り込みを実装しているか否かをシステムＢＩＯＳ（１３）に問い合わせる。システムＢＩＯＳ（１３）は、非ＰＣＩデバイス（１２）が割り込みを用いる場合には、上記「設定２」で、仮想ＰＣＩデバイスのコンフィギュレーション空間ヘッダ領域の割り込みピンレジスタ（１３３）に設定されている「割り込み有り」をオペレーティングシステム（３）に返却する。
【００２６】
これを受けて、オペレーティングシステム（３）は、仮想ＰＣＩデバイス（２０）が割り込みを実装しているものと判断し、割り込みハンドラを登録する（図１の矢線Ｄで示す処理）。
【００２７】
以上の通り、本実施形態によれば、一般的なＰＣＩデバイスのドライバをＰＣＩデバイスのプラグ・アンド・プレイ機能を実装したオペレーティングシステムにロードする機構を用いて、非ＰＣＩデバイス（１２）のドライバ（３００）をオペレーティングシステム（３）へ組み込みことを可能としている。以下、具体的な実施例に即して、詳細に説明する。
【実施例】
【００２８】
図１は、本発明の一実施例の構成を示す図である。図１を参照すると、本発明の実施例をなすコンピュータシステム（１００）は、メモリ（１０）と、プロセッサ（１１）と、非ＰＣＩデバイス（１２）と、システムＢＩＯＳ（１３）とを搭載したマザーボード（１）と、ＰＣＩデバイス群（２）とがＰＣＩバス（４）を介して接続されている。ＰＣＩデバイス群（２）には、ＳＣＳＩ（Small  Computer  System  Interface）コントローラのような、ｎ個のＰＣＩデバイス（２１,…,２ｎ）が搭載されている。
【００２９】
それぞれのＰＣＩデバイス（２）は、その内部に、それぞれ、ＰＣＩコンフィギュレーション空間（２１０，…,２ｎ０）を有する。
【００３０】
図４は、図１に示したＰＣＩコンフィギュレーション空間の構成を模式的に示す図である。ＰＣＩデバイスは、デバイス内にＰＣＩコンフィギュレーション空間（４０）を備え、ＰＣＩコンフィギュレーション空間（４０）は、ＰＣＩデバイスの検知、制御に用いられる。
【００３１】
図４に示すように、ＰＣＩコンフィギュレーション空間（４０）は、２５６バイトのアドレス空間であり、デバイスの種類に依存しない６４バイトのヘッダ領域（４１）と、１９２バイトのデバイス固有領域（４２）と、から成る。ヘッダ領域（４１）には、ベンダＩＤレジスタ（４１１）（サイズは２バイト）と、デバイスＩＤレジスタ（４１２）（サイズは２バイト）が設けられており、当該デバイスを製造するベンダと当該デバイスの種類を特定するために用いられる。また、ヘッダ領域（４１）には、割り込みピンレジスタ（４１３）（サイズは１バイト）が設けられており、デバイスが使用する割り込み線を識別するために用いられる。
【００３２】
システムＢＩＯＳ（１３）のコード（命令コード等）は、メモリ（１０）上に展開されて、システムの立ち上げを行うプロセッサ（１１）がシステム起動時に実行する。システムＢＩＯＳ（１３）により、システムが初期化された後に、システムＢＩＯＳ（１３）は、オペレーティングシステム（３）をブートする。オペレーティングシステム（３）は、ＰＣＩデバイス（２）に対するプラグ・アンド・プレイ機能を具備している。
【００３３】
一般に、オペレーティングシステム（３）用のＰＣＩデバイスを制御するドライバはどのベンダＩＤとデバイスＩＤを持つデバイスに対応しているかという情報を持つ。例えば、ＳＣＳＩドライバ（３０１）は、ＳＣＳＩコントローラ（２１）のＰＣＩコンフィギュレーション空間ヘッダ領域（２１０）内に記録されているベンダＩＤとデバイスＩＤを持つデバイスに対応しているという情報を有する。また、システムに対応しているＰＣＩデバイスを制御するドライバは、予めオペレーティングシステム（３）内部のドライバライブラリ（３０）に格納されている。
【００３４】
本実施例では、非ＰＣＩデバイス（１２）を制御するドライバ（３００）には、システムＢＩＯＳ（１３）が設定した仮想ＰＣＩデバイスのＰＣＩコンフィギュレーション空間ヘッダ領域（１３１）のベンダＩＤ、デバイスＩＤを持つデバイスに対応しているという情報を持たせている。
【００３５】
また、本実施例では、オペレーティングシステム（３）において、あらかじめ非ＰＣＩデバイス（１２）を制御するドライバ（３００）を、通常のＰＣＩデバイスを制御するドライバと同様に、ドライバライブラリ（３０）に実装しておく。
【００３６】
図２は、図１に示した本発明の一実施例の構成において、ＰＣＩデバイスを制御するドライバをＰＣＩデバイスのプラグ・アンド・プレイに対応したオペレーティングシステムに組み込む処理を説明するための図である。図５は、本発明の一実施例の処理手順を説明するためのフローチャートである。
【００３７】
図２及び図５のフローチャートを参照して、本実施例において、ＰＣＩデバイスを制御するドライバをＰＣＩデバイスのプラグ・アンド・プレイに対応したオペレーティングシステムに組み込む処理を以下に説明する。
【００３８】
ＰＣＩデバイスを制御するドライバをＰＣＩデバイスのプラグ・アンド・プレイに対応したオペレーティングシステム（３）への組み込みは、本実施例においても、通常と同様、以下のような手続きで行われる。
【００３９】
まず、オペレーティングシステム（３）は、すべてのバス番号、デバイス番号、機能番号に対するＰＣＩデバイス（２２，２３，…，２ｎ）のＰＣＩコンフィギュレーション空間ヘッダ領域（２２０，２３０，…，２ｎ０）を参照して、ＰＣＩデバイスを検索する（図５のステップ５Ａ）。ここで、ＰＣＩデバイスが存在しないバス番号、デバイス番号、機能番号に対するＰＣＩコンフィギュレーション空間ヘッダ領域（２２０，２３０，…，２ｎ０）のベンダＩＤとデバイスＩＤは、ＰＣＩの仕様により、それぞれ、"０ｘＦＦＦＦ"と、"０ｘＦＦＦＦ"とが返却される。したがって、ＰＣＩデバイスを見つけるとは、参照したＰＣＩコンフィギュレーション空間ヘッダ領域のベンダＩＤとデバイスＩＤがともに、"０ｘＦＦＦＦ"ではなかった場合を意味する。
【００４０】
なお、本実施例のコンピュータシステム（１００）では、オペレーティングシステム（３）がＰＣＩコンフィギュレーション空間（２２０，２３０，…，２ｎ０）を参照する際、ＰＣＩデバイスに実装されているＰＣＩコンフィギュレーション空間を直接参照せずに、システムＢＩＯＳ（１３）に問い合わせて（図２の矢線Ａの処理）、システムＢＩＯＳ（１３）が、ＰＣＩデバイスのＰＣＩコンフィギュレーション空間を参照し（図２の矢線ＢＡの処理）、値をオペレーティングシステム（３）に返却する（図２の矢線Ｂの処理）。
【００４１】
そして、ＰＣＩデバイスが見つかると（図５のステップ５Ｂ）、オペレーティングシステム（３）は、見つかったＰＣＩデバイス（２２，２３，…，２ｎ）のベンダＩＤとデバイスＩＤを持つＰＣＩデバイスに対応したドライバを、オペレーティングシステム（３）内部のドライバライブラリ（３０）から検索する（図５のステップ５Ｃ）。ドライバライブラリ（３０）の検索は、具体的には、以下のようにして行われる。
【００４２】
ＰＣＩデバイスのドライバは、オペレーティングシステム（３）からＰＣＩデバイスのベンダＩＤとデバイスＩＤを受け取って、そのベンダＩＤとデバイスＩＤを持つデバイスに対応しているか否かをオペレーティングシステム（３）に応答する機構を具備している。オペレーティングシステム（３）では、様々なＰＣＩデバイスに対するドライバ（３０２，３０３，…，３０ｎ）がドライバライブラリ（３０）に格納されているが、オペレーティングシステム（３）は、システムＢＩＯＳ（１３）によって検索されたＰＣＩデバイスのベンダＩＤとデバイスＩＤを、ドライバライブラリ（３０）内のすべてのＰＣＩデバイスに対するドライバ（３０２，３０３，…，３０ｎ）に渡して、ドライバ（３０２，３０３，…，３０ｎ）から、見つかったデバイスのデバイスＩＤとベンダＩＤをもつデバイスに対応しているかどうかの応答を受ける。これにより、オペレーティングシステム（３）は、システムＢＩＯＳ（１３）によって検索されたＰＣＩデバイスを制御するドライバが、どのドライバであるを認識する（図５のステップ５Ｃ）。
【００４３】
オペレーティングシステム（３）は、ＰＣＩデバイスを制御するドライバが見つかった場合（図５のステップ５Ｄ）、当該ドライバをロードする。
【００４４】
オペレーティングシステム（３）は、上記したドライバのロード処理を、見つかったすべてのＰＣＩデバイス（２２，２３，…，２ｎ）に対して実行する。この結果、オペレーティングシステム（３）はシステムに実装されているすべてのＰＣＩデバイスのドライバをロードすることができる（図２の矢線ＣＣ，ＣＤ，ＣＥの処理）（図５のステップ５Ｅ）。
【００４５】
またＰＣＩデバイスを制御するドライバ（３０２，３０３，…，３０ｎ）が割り込みを使う場合、ドライバは、オペレーティングシステム（３）へ割り込みハンドラ（３１）の登録要求をする。
【００４６】
オペレーティングシステム（３）は、割り込みハンドラの登録要求を受けると、当該ＰＣＩデバイスのＰＣＩコンフィギュレーション空間ヘッダ領域の割り込みピンレジスタを見て、ＰＣＩデバイスが割り込みを実装しているか否かを調べる（図５のステップ５Ｆ）。
【００４７】
ここで、ＰＣＩの仕様により、ＰＣＩコンフィギュレーション空間ヘッダ領域の割り込みピンレジスタの値が、「０」ならば割り込みはＰＣＩデバイスで使用されないという意味であり、値が「１」、「２」、「３」、「４」の場合、当該ＰＣＩデバイスが割り込みを用いることを表している。
【００４８】
ＰＣＩデバイスが割り込みを実装していることが分かると、オペレーティングシステム（３）は、ＰＣＩデバイスへ割り込みベクタを割り当て、その割り込みベクタに対して割り込みハンドラ（３１）を登録する（図２の矢線Ｄの処理）（図５のステップ５Ｇ）。
【００４９】
次に、図３は、図１に示した本実施例において、非ＰＣＩデバイスを制御するドライバをＰＣＩデバイスのプラグ・アンド・プレイに対応したオペレーティングシステム（３）に組み込む処理を説明するための図である。図６は、その処理手順を示すフローチャートである。図３と図５、図６を参照し、本実施例における、非ＰＣＩデバイスを制御するドライバをＰＣＩデバイスのプラグ・アンド・プレイに対応したオペレーティングシステム（３）への組み込み処理を以下に説明する。
【００５０】
ＰＣＩデバイスのプラグ・アンド・プレイに対応したオペレーティングシステム（３）は、図２及び図５を参照して説明した一般的なＰＣＩデバイス組み込み手順に従い、ＰＣＩデバイス検索のためにＰＣＩデバイスのコンフィギュレーション空間の参照をすべてのバス番号、デバイス番号、機能番号に対して行う（図５のステップ５Ａ）。
【００５１】
本実施例のコンピュータシステムでは、オペレーティングシステム（３）がＰＣＩコンフィギュレーション空間を参照する際、ＰＣＩデバイスに実装されているＰＣＩコンフィギュレーション空間を直接参照するのではなく、システムＢＩＯＳ（１３）に問い合わせて（図３の矢線Ａの処理）、システムＢＩＯＳ（１３）が、ＰＣＩデバイスのＰＣＩコンフィギュレーション空間を参照し値を返却する（図３の矢線Ｂの処理）。
【００５２】
次に、図５のステップＡについて、図６を参照して詳しく説明する。ＰＣＩデバイスはバス番号、デバイス番号、機能番号で一意的に特定できる。オペレーティングシステム（３）は、これらの番号を用いて、システムに搭載されているＰＣＩデバイスを検索する。
【００５３】
本実施例では、システムＢＩＯＳ（１３）は、システムの初期化中に、実際に搭載されているＰＣＩデバイスのどのバス番号、デバイス番号、機能番号にも一致しないバス番号、デバイス番号、機能番号に対応するＰＣＩコンフィギュレーション空間ヘッダ領域を、メモリ（１０）上に実装し、該メモリ領域に、あらかじめ定めておいたベンダＩＤ、デバイスＩＤ、割り込みピンの値を設定しておく。この設定により、実際には存在しないＰＣＩデバイス、つまり仮想ＰＣＩデバイスのＰＣＩコンフィギュレーション空間ヘッダ領域を設定したことになる。
【００５４】
システムＢＩＯＳ（１３）は、オペレーティングシステム（３）が仮想ＰＣＩデバイスのバス番号、デバイス番号、機能番号のＰＣＩコンフィギュレーション空間ヘッダ領域を参照しようとしているか否かを判断し（図６のステップ６Ａ）、そうである場合（図６のステップ６ＡのＹＥＳ分岐）、システムＢＩＯＳ（１３）が設定した仮想ＰＣＩデバイスのＰＣＩコンフィギュレーション空間ヘッダ領域（１３１）を返却する（図６のステップ６Ｂ）。
【００５５】
オペレーティングシステム（３）が仮想ＰＣＩデバイスのバス番号、デバイス番号、機能番号のＰＣＩコンフィギュレーション空間ヘッダ領域を参照しようとしていない場合には（図６のステップ６ＡのＮＯ分岐）、通常のＰＣＩデバイスのＰＣＩコンフィギュレーション空間ヘッダ領域を返却する（図６のステップ６Ｃ）。
【００５６】
オペレーティングシステム（３）は、ベンダＩＤとデバイスＩＤを見て、ＰＣＩデバイスが見つかったか否か判断する（図６のステップ６Ｄ）。
【００５７】
ＰＣＩデバイスが見つかった場合（図６のステップ６ＤのＹＥＳ分岐）、オペレーティングシステム（３）は、そのバス番号、デバイス番号、機能番号で見つかったＰＣＩデバイスを登録する（図６のステップ６Ｅ）。このとき、オペレーティングシステム（３）は、仮想ＰＣＩデバイスのバス番号、デバイス番号、機能番号には仮想ＰＣＩデバイス（２０）が実装されていると判断する（図３の矢線ＢＢの処理）。
【００５８】
次に、オペレーティングシステム（３）は、検索すべき最後のバス番号、デバイス番号、機能番号であるか否かを判断し（図６のステップ６Ｆ）、そうであるならば（図６のステップ６ＦのＹＥＳ分岐）、デバイスの検索を終了する。一方、検索が終了していない場合（図６のステップ６ＦのＮＯ分岐）、図６のステップ６Ａに戻り、検索を続ける。
【００５９】
次に、オペレーティングシステム（３）は、ＰＣＩデバイスの検索（図５のステップ５Ａ）が終わると、ＰＣＩデバイスが見つかったか否かを判断する（図５のステップ５Ｂ）。見つかった場合（図５のステップ５ＢのＹＥＳ分岐）、一般的なＰＣＩデバイス用ドライバ検索手順に従い、オペレーティングシステム（３）は、見つかったＰＣＩデバイスのベンダＩＤとデバイスＩＤを持つＰＣＩデバイスに対応したオペレーティングシステム内部のドライバライブラリ（３０）を検索する（図５のステップ５Ｃ）。このとき、オペレーティングシステム（３）は、仮想ＰＣＩデバイス（２０）が実装されているものと判断しているので、仮想ＰＣＩデバイス（２０）のベンダＩＤとデバイスＩＤを持つＰＣＩデバイスに対応したドライバを検索する。
【００６０】
ここで、非ＰＣＩデバイス（１２）を制御するドライバ（３００）は、仮想ＰＣＩデバイス（２０）のベンダＩＤとデバイスＩＤを持つＰＣＩデバイスを制御するＰＣＩデバイス用のドライバ（非ＰＣＩドライバ３００）として、ドライバライブラリ（３０）に実装されている。このため、このドライバは、オペレーティングシステム（３）から仮想ＰＣＩデバイス（２０）のベンダＩＤとデバイスＩＤを受け取ったときに、仮想ＰＣＩデバイス（２０）に対応していると、オペレーティングシステム（３）に応答する。
【００６１】
よって、オペレーティングシステム（３）は、仮想ＰＣＩデバイス（２０）を制御するドライバが、非ＰＣＩデバイスを制御するドライバ（３００）であるものと判断し（図５のステップ５ＤのＹＥＳ分岐）、ロードする（図３の矢線ＣＡ、ＣＢの処理）（図５のステップ５Ｅ）。
【００６２】
また、非ＰＣＩデバイス（１２）を制御するドライバ（３００）が割り込みを使う場合、一般的なＰＣＩデバイス用ドライバの割り込みハンドラ登録手続きに従い、ドライバはオペレーティングシステム（３）へ割り込みハンドラ（３１）の登録要求をする。オペレーティングシステム（３）は、登録要求を受けると、その仮想ＰＣＩデバイス（２０）のＰＣＩコンフィギュレーション空間ヘッダ領域の割り込みピンレジスタを見て、ＰＣＩデバイスが割り込みを実装しているか否かを調べる（図５のステップ５Ｆ）。
【００６３】
あらかじめシステムＢＩＯＳ（１３）により、仮想ＰＣＩデバイス（２０）のＰＣＩコンフィギュレーション空間の割り込みピンレジスタ（１３３）には、「０」でない適切な値が設定されている。オペレーティングシステム（３）は、ＰＣＩコンフィギュレーション空間ヘッダ領域の割り込みピンレジスタ参照のために、システムＢＩＯＳ（１３）に問い合わせて、システムＢＩＯＳ（１３）は、オペレーティングシステム（３）に仮想ＰＣＩデバイス（２０）の割り込みピンレジスタ（１３３）の値を返却する。
【００６４】
システムＢＩＯＳ（１３）から割り込みピンレジスタ（１３３）の値を受け取ったオペレーティングシステム（３）は、仮想ＰＣＩデバイス（２０）が割り込みを実装しているものと判断し、割り込みハンドラを登録する。
【００６５】
仮想ＰＣＩデバイス（２０）が割り込みを実装していることが分かると、オペレーティングシステム（３）は、仮想ＰＣＩデバイス（２０）へ割り込みベクタを割り当て、その割り込みベクタに対して、割り込みハンドラ（３１）を登録する（図３の矢線Ｄの処理）（図５のステップ５Ｇ）。
【００６６】
以上の手続きにより、非ＰＣＩデバイスを制御するドライバ（３００）を、オペレーティングシステム（３）に組み込むことができる。
【００６７】
本実施例の作用効果について以下に説明する。
【００６８】
本実施例によれば、非ＰＣＩデバイスを持つコンピュータシステムにおいて、非ＰＣＩデバイスを制御するドライバを、ＰＣＩデバイスのプラグ・アンド・プレイに対応したオペレーティングシステムに組み込む場合、非ＰＣＩデバイス用ドライバを通常のＰＣＩデバイス用ドライバとして作成することにより、オペレーティングシステムを改造することなく、ドライバを組み込むことができる。
【００６９】
以上本発明を上記実施例に即して説明したが、本発明は上記実施例の構成にのみ限定されるものでなく、本発明の範囲で当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【図面の簡単な説明】
【００７０】
【図１】本発明の一実施例の構成を示す図である。
【図２】本発明の一実施例におけるＰＣＩデバイスのドライバのロード手順を説明するための図である。
【図３】本発明の一実施例における非ＰＣＩデバイスのドライバのロード手順を説明するための図である。
【図４】本発明の一実施例におけるＰＣＩコンフィギュレーション空間を説明するための図である。
【図５】本発明の一実施例におけるＰＣＩデバイスのドライバのロード手順を説明するためのフローチャートである。
【図６】本発明の一実施例における非ＰＣＩデバイスのドライバのロード手順（図５のステップ５Ａに対応）を説明するためのフローチャートである。
【符号の説明】
【００７１】
１  マザーボード
２  ＰＣＩデバイス群
３  オペレーティングシステム
４  ＰＣＩバス
１０  メモリ
１１  プロセッサ
１２  非ＰＣＩデバイス
１３  システムＢＩＯＳ
２０  仮想ＰＣＩデバイス
２１、２２、…２ｎ  ＰＣＩデバイス
３０  ドライバライブラリ
３１  割り込みハンドラ
４０  ＰＣＩコンフィギュレーション空間
４１  ヘッダ領域
４２  デバイス固有領域
１００  コンピュータシステム
１３１  ＰＣＩコンフィギュレーション空間ヘッダ領域
１３２  ベクタＩＤとデバイスＩＤ
１３３  割り込みピンレジスタ
２１０、…２ｎ０  ＰＣＩコンフィギュレーション空間
３００  非ＰＣＩデバイスのドライバ
３０１  ＳＣＳＩドライバ
３０２、３０３、３０ｎ  ドライバ
４１１  ベンダＩＤレジスタ
４１２  デバイスＩＤレジスタ
４１３  割り込みピンレジスタ
【図１】
2005250975.tif 000003
【図２】
2005250975.tif 000004
【図３】
2005250975.tif 000005
【図４】
2005250975.tif 000006
【図５】
2005250975.tif 000007
【図６】
2005250975.tif 000008