(57)【要約】【課題】非イベントドリブン方式のＯＳにおいて、高速に、かつ、少ない負荷でホットプラグイベントを実現する。【解決手段】デバイスの着脱があったとき、カーネルのコアドライバｕｓｂｃｏｒｅによりホットプラグスクリプトｈｏｔｐｌｕｇを呼び出す。ホットプラグスクリプトｈｏｔｐｌｕｇは、呼び出しが行われたとき、そのホットプラグスクリプトｈｏｔｐｌｕｇ自身に記述されている所定の処理を実行したのち、フックプログラムｈｏｏｋｅｒを呼び出す。フックプログラムｈｏｏｋｅｒは、これが呼び出されたとき、ホットプラグマネージャｐｎｐｍａｎａｇｅｒを実行してデバイスの着脱に関する情報を得る。【選択図】        図１
2004272499.tif 000002
【特許請求の範囲】
【請求項１】
デバイスの着脱があったとき、カーネルのコアドライバによりホットプラグスクリプトを呼び出し、
このホットプラグスクリプトは、上記呼び出しが行われたとき、そのホットプラグスクリプト自身に記述されている所定の処理を実行したのち、フックプログラムを呼び出し、
このフックプログラムは、これが呼び出されたとき、ホットプラグマネージャを実行して上記デバイスの着脱に関する情報を得る
ようにしたデバイス管理方法。
【請求項２】
請求項１に記載のデバイス管理方法において、
上記ホットプラグマネージャは、
ホットプラグデーモンが、上記フックプログラムにより実行されて上記ホットプラグスクリプトの環境変数に含まれる情報を受け、
ホットプラグライブラリが、上記ホットプラグデーモンから上記情報を得てユーザアプリケーションにＡＰＩを提供する
ようにしたデバイス管理方法。
【請求項３】
請求項１あるいは請求項２に記載のデバイス管理方法において、
上記カーネルがＬｉｎｕｘ（登録商標）のカーネルである
ようにしたデバイス管理方法。
【請求項４】
デバイスの着脱があったとき、カーネルのコアドライバにより呼び出されて自身に記述されている所定の処理を実行するホットプラグスクリプトと、
このホットプラグスクリプトの最後の処理により呼び出されるフックプログラムと、
このフックプログラムにより実行されて上記デバイスの着脱に関する情報をユーザアプリケーションに提供するホットプラグマネージャと
を有するデバイス管理システム。
【請求項５】
請求項４に記載のデバイス管理方法において、
上記ホットプラグマネージャは、
上記フックプログラムにより呼び出されて上記ホットプラグスクリプトの環境変数に含まれる情報を受けるホットプラグデーモンと、
このホットプラグデーモンから上記情報を得てユーザアプリケーションにＡＰＩを提供するホットプラグライブラリと
を有するデバイス管理システム。
【請求項６】
請求項４あるいは請求項５に記載のデバイス管理方法において、
上記カーネルがＬｉｎｕｘ（登録商標）のカーネルである
ようにしたデバイス管理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、非イベントドリブン方式のＯＳにおいて、デバイス（周辺機器）に対するホットプラグ機能を実現するためのデバイス管理方法および管理システムに関する。
【０００２】
【従来の技術】
ＡＶ機器として、パーソナルコンピュータと組み合わせて利用できるようにしたものや、さらに、ネットワークを通じてオーディオデータやビデオデータをやりとりできるようにしたものがある。そのようなＡＶ機器に接続するパーソナルコンピュータには、一般にマルチタスク方式のＯＳが使用される。
【０００３】
そして、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）のようなイベントドリブン方式のＯＳにおいては、ユーザアプリケーションは、ＯＳからシステムメッセージを受け取ると、起動、終了、描画などの対応する処理を実行するようにされている。したがって、イベントドリブン方式のＯＳのもとでは、ＵＳＢ接続のようなホットプラグのイベントについても、ユーザアプリケーションはＯＳからのシステムメッセージを受け取ることにより必要な処理を実行することができる。
【０００４】
しかし、Ｌｉｎｕｘ（登録商標）のような非イベントドリブン方式のＯＳにおいては、イベントドリブン方式のＯＳにおけるようなシステムメッセージは用意されていない。このため、ユーザアプリケーションがホットプラグのイベントを補捉するには、ユーザアプリケーションが常にポーリングを行っている必要がある。つまり、ユーザアプリケーションは、一定の時間間隔でバスラインをモニタし、ホットプラグのイベントが発生したら対応する処理を実行することになる（例えば、特許文献１参照）。
【０００５】
図２は、そのようにポーリングによりホットプラグイベントを処理する場合の概要を示す。なお、以下の説明は、Ｋｅｒｎｅｌ２．４のＬｉｎｕｘ（登録商標）を搭載したパーソナルコンピュータに、ホットプラグ処理としてマスストレージ機器をＵＳＢ接続する場合である。また、以下の説明における符号▲１▼〜▲４▼は、図２の符号▲１▼〜▲４▼に対応する。
【０００６】
すなわち、Ｌｉｎｕｘ（登録商標）のカーネル空間ＫＥＲＮＥＬには、ＵＳＢコアドライバｕｓｂｃｏｒｅと、ＵＳＢマスストレージ用のクラスドライバｕｓｂ−ｓｔｏｒａｇｅとが用意される。また、ユーザ空間ＵＳＥＲに、ホットプラグスクリプトｈｏｔｐｌｕｇおよびＵＳＢスクリプトｕｓｂ．ａｇｅｎｔが用意される。そして、パーソナルコンピュータにＵＳＢマスストレージ機器を接続すると、
▲１▼  カーネル空間ＫＥＲＮＥＬに用意されているコアドライバｕｓｂｃｏｒｅのプローブ関数ｐｒｏｂｅの処理の延長でホットプラグスクリプトｈｏｔｐｌｕｇが呼び出される。このとき、各種の環境変数が設定されてホットプラグスクリプトｈｏｔｐｌｕｇが実行される。今の場合、環境変数の一部には、ＵＳＢ機器の接続であることを示す値が設定される。
▲２▼  ホットプラグスクリプトｈｏｔｐｌｕｇは、これの実行のきっかけとなったイベントに対応したスクリプトを実行する。今の場合、▲１▼により設定された環境変数にしたがってＵＳＢスクリプトｕｓｂ．ａｇｅｎｔを実行する。
▲３▼  ＵＳＢスクリプトｕｓｂ．ａｇｅｎｔは、これの実行のきっかけとなったイベントに対応するクラスドライバ、今の場合、ＵＳＢマスストレージ機器のクラスドライバｕｓｂ−ｓｔｏｒａｇｅをロードする。
▲４▼  ＵＳＢコアドライバｕｓｂｃｏｒｅが仮想ファイル／ｐｒｏｃ／ｂｕｓ／ｕｓｂ／ｄｅｖｉｃｅｓの内容を更新する。
という一連の処理を実行する。
【０００７】
したがって、ユーザアプリケーションがポーリングにより仮想ファイル／ｐｒｏｃ／ｂｕｓ／ｕｓｂ／ｄｅｖｉｃｅｓをモニタしていれば、マスストレージ機器をＵＳＢ接続したとき、そのマスストレージ機器の使用が可能となる。ただし、現行のＬｉｎｕｘ（登録商標）におけるホットプラグ処理は、該当するクラスドライバを動的に組み込む場合にだけ使用されている。
【０００８】
【特許文献１】
特開２００２−３００１７６公報
【０００９】
【発明が解決しようとする課題】
ところが、上記のようにポーリングによりホットプラグのイベントを補捉する場合には、ポーリングの間隔を短くすると、システムの負荷が増大してしまう。しかし、逆に、ポーリングの間隔を長くすると、ホットプラグイベントが発生してから対応する処理が実行されるまでに時間遅れを生じてしまう。
【００１０】
このような問題は、ＣＰＵとして高速のものを採用することにより、ある程度回避ないし軽減することができるが、その場合には高価なＣＰＵが必要となってしまう。また、ＡＶ機器などにおいて、そのシステム制御回路をマイクロコンピュータにより構成した場合、全体に占めるＣＰＵの価格も重要であり、高速であっても高価なＣＰＵは採用できない。
【００１１】
この発明は、以上のような問題点を解決しようとするものである。
【００１２】
【課題を解決するための手段】
この発明においては、例えば、
デバイスの着脱があったとき、カーネルのコアドライバによりホットプラグスクリプトを呼び出し、
このホットプラグスクリプトは、上記呼び出しが行われたとき、そのホットプラグスクリプト自身に記述されている所定の処理を実行したのち、フックプログラムを呼び出し、
このフックプログラムは、これが呼び出されたとき、ホットプラグマネージャを実行して上記デバイスの着脱に関する情報を得る
ようにするものである。
したがって、ホットプラグイベントを生じると、ホットプラグスクリプトからフックプログラムを通じてホットプラグマネージャが実行され、そのホットプラグイベントについての情報がユーザアプリケーションに提供される。
【００１３】
【発明の実施の形態】
上述から明かなように、現行のＬｉｎｕｘ（登録商標）においては、ＵＳＢ機器をホットプラグ接続した場合、その接続した機器にかかわらず▲１▼のホットプラグスクリプトｈｏｔｐｌｕｇが実行される。
【００１４】
この発明は、そのような点に着目し、▲１▼のホットプラグスクリプトｈｏｔｐｌｕｇを利用してホットプラグ処理を実現するものである。以下、Ｋｅｒｎｅｌ２．４のＬｉｎｕｘ（登録商標）を搭載したパーソナルコンピュータに、ホットプラグ処理としてマスストレージ機器をＵＳＢ接続する場合について、図１によりその一例を説明する。なお、以下の説明における符号▲１▼〜▲９▼は、図１の符号▲１▼〜▲９▼に対応する。
【００１５】
すなわち、図２の場合と同様、Ｌｉｎｕｘ（登録商標）のカーネル空間ＫＥＲＮＥＬに、ＵＳＢコアドライバｕｓｂｃｏｒｅと、ＵＳＢマスストレージ用のクラスドライバｕｓｂ−ｓｔｏｒａｇｅとが用意され、ユーザ空間ＵＳＥＲに、ホットプラグスクリプトｈｏｔｐｌｕｇおよびＵＳＢスクリプトｕｓｂ．ａｇｅｎｔが用意される。
【００１６】
さらに、ユーザ空間ＵＳＥＲに、フックプログラムｈｏｏｋｅｒが設けられるとともに、ホットプラグマネージャｐｎｐｍａｎａｇｅｒを構成するホットプラグデーモンｐｎｐｍｇｒおよびホットプラグライブラリｌｉｂｐｎｐｍｇｒが設けられる。
【００１７】
この場合、フックプログラムｈｏｏｋｅｒは、ホットプラグスクリプトｈｏｔｐｌｕｇから実行されるものであり、このため、ホットプラグスクリプトｈｏｔｐｌｕｇの最後に、フックプログラムｈｏｏｋｅｒを呼び出すコードが追記される。また、フックプログラムｈｏｏｋｅｒは、ホットプラグマネージャｐｎｐｍａｎａｇｅｒのメッセージキューを使用してそのホットプラグマネージャｐｎｐｍａｎａｇｅｒに環境変数を渡すようにされている。
【００１８】
さらに、ホットプラグデーモンｐｎｐｍｇｒは、プログラムｈｏｏｋｅｒからの情報を元にデバイス情報の収集を行うものであり、必要に応じてホットプラグライブラリｌｉｂｐｎｐｍｇｒにイベントの通知を行う。また、ホットプラグライブラリｌｉｂｐｎｐｍｇｒは、ユーザアプリケーションにＡＰＩを提供するものである。
【００１９】
そして、そのＡＰＩが提供する機能として、
（１）  イベント待ちの登録／解除
ホットプラグデーモンｐｎｐｍｇｒの機能の使用の登録／解除を行う。登録をすると、イベントの発生の通知やデバイス情報の取得が可能となる。
（２）  デバイス情報の取得
現在パーソナルコンピュータに接続されているデバイスの情報を取得する。ここで取得した情報には、ユーザアプリケーションがそのデバイスにアクセスするために必要な情報がすべて含まれる。
（３）  イベントの通知
登録時に指定しておいたコールバック関数ｃａｌｌｂａｃｋに、ホットプラグ機器の着脱の情報とデバイスタイプとを通知する。
などが用意される。
【００２０】
さらに、フックプログラムｈｏｏｋｅｒとホットプラグデーモンｐｎｐｍｇｒとの間、およびホットプラグデーモンｐｎｐｍｇｒとホットプラグライブラリｌｉｂｐｎｐｍｇｒと間は、メッセージの交換によってプロセス間通信を実現する。
【００２１】
このような構成において、パーソナルコンピュータにＵＳＢマスストレージ機器を接続すると、まず、▲１▼〜▲４▼が上述と同様に実行される。続いて、
▲５▼  ホットプラグスクリプトｈｏｔｐｌｕｇがフックプログラムｈｏｏｋｅｒを呼び出す。
▲６▼  フックプログラムｈｏｏｋｅｒがホットプラグスクリプトｈｏｔｐｌｕｇの環境変数をメッセージでホットプラグデーモンｐｎｐｍｇｒに送る。
▲７▼  ホットプラグデーモンｐｎｐｍｇｒは、フックプログラムｈｏｏｋｅｒからのメッセージをもとにしてＵＳＢ接続されたデバイスに関する情報を収集する。
▲８▼  ホットプラグデーモンｐｎｐｍｇｒは、監視しているユーザアプリケーションがあれば、ホットプラグライブラリｌｉｂｐｎｐｍｇｒにメッセージを通知する。
▲９▼  ホットプラグライブラリｌｉｂｐｎｐｍｇｒは、ユーザアプリケーションから要求があれば、ホットプラグデーモンｐｎｐｍｇｒにその要求を出す。
の処理が順に実行される。
【００２２】
したがって、マスストレージ機器をＵＳＢ接続すると、そのマスストレージ機器を使用できるようになる。また、マスストレージ機器のＵＳＢ接続をやめると、同様の処理によりそのマスストレージ機器の使用が不許可とされる。
【００２３】
こうして、図１に示すシステムによれば、Ｌｉｎｕｘ（登録商標）においてホットプラグを実現することができるが、この場合、ユーザアプリケーションから見てホットプラグ機器の追加・削除を非同期に実行することができるとともに、そのとき、ポーリングが不要である。したがって、ホットプラグ機器が接続されてから対応する処理が実行されるまでの時間に遅れを生じることがなく、ＣＰＵの負荷を軽減することができるとともに、コストの上昇を抑えることができる。
【００２４】
また、ホットプラグマネージャｐｎｐｍａｎａｇｅｒは、ホットプラグデーモンｐｎｐｍｇｒと、ホットプラグライブラリｌｉｂｐｎｐｍｇｒとに分割しているので、それらの間のプロセス間通信をユーザアプリケーションから隠蔽することができる。したがって、ユーザアプリケーションは、通常のライブラリをアクセスをするときと同様にホットプラグのイベントをハンドリングすることができる。
【００２５】
さらに、ユーザアプリケーションは、ホットプラグデーモンＰｎｐｍｇｒにコールバック関数ｃａｌｌｂａｃｋを登録することにより非同期でイベントの情報を受け取ることができ、あるいは関心のあるデバイスのイベントの情報だけを受け取ることができる。しかも、カーネル空間ＫＥＲＮＥＬおよびユーザ空間ＵＳＥＲに対する変更は、ホットプラグスクリプトｈｏｔｐｌｕｇの最後にフックプログラムｈｏｏｋｅｒを呼び出すための１行を追記するだけでよいので、システムに対する影響がない。
【００２６】
なお、上述においては、この発明をＵＳＢ機器のホットプラグイベントに適用した場合であるが、ＩＥＥＥ１３９４、ネットワークアダプタ、ＰＣＭＣＩＡカードなどのホットプラグイベントにも適用することができる。
【００２７】
〔この明細書で使用している略語の一覧〕
ＡＰＩ      ：Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ
ＡＶ        ：Ａｕｄｉｏ  ａｎｄ  Ｖｉｓｕａｌ
ＣＰＵ      ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ
ＩＥＥＥ    ：Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ
ＯＳ        ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ
ＰＣＭＣＩＡ：Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ  Ｍｅｍｏｒｙ  Ｃａｒｄ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ａｓｓｏｃｉａｔｉｏｎ
ＵＳＢ      ：Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ
【００２８】
【発明の効果】
この発明によれば、例えばＬｉｎｕｘ（登録商標）のような非イベントドリブン方式のＯＳにおいてホットプラグを実現することができる。また、ホットプラグイベントが発生してから対応する処理が実行されるまでの時間に遅れを生じることがなく、しかも、システムの負荷を軽減することができる。さらに、ＣＰＵとして高速のものを必要とすることがなく、システムのコストの上昇を抑えることができる。
【図面の簡単な説明】
【図１】この発明の一形態を示す図である。
【図２】この発明を説明するための図である。
【符号の説明】
ｈｏｋｋｅｒ…フックプログラム、ｈｏｔｐｌｕｇ…ホットプラグスクリプト、ＫＥＲＮＥＬ…カーネル空間、ｌｉｂｐｎｐｍｇｒ…ホットプラグライブラリ、ｐｎｐｍａｎａｇｅｒ…ホットプラグマネージャ、ｐｎｐｍｇｒ…ホットプラグデーモン、ＵＳＥＲ…ユーザ空間、ｕｓｂｃｏｒｅ…ＵＳＢコアドライバ
【図１】
2004272499.tif 000003
【図２】
2004272499.tif 000004