JP3933055B2 - 動的機能追加方式、および、プログラム - Google Patents

動的機能追加方式、および、プログラム Download PDF

Info

Publication number
JP3933055B2
JP3933055B2 JP2003033547A JP2003033547A JP3933055B2 JP 3933055 B2 JP3933055 B2 JP 3933055B2 JP 2003033547 A JP2003033547 A JP 2003033547A JP 2003033547 A JP2003033547 A JP 2003033547A JP 3933055 B2 JP3933055 B2 JP 3933055B2
Authority
JP
Japan
Prior art keywords
handler
device driver
system call
pointer table
program
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.)
Expired - Fee Related
Application number
JP2003033547A
Other languages
English (en)
Other versions
JP2004246461A (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2003033547A priority Critical patent/JP3933055B2/ja
Publication of JP2004246461A publication Critical patent/JP2004246461A/ja
Application granted granted Critical
Publication of JP3933055B2 publication Critical patent/JP3933055B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は動的機能追加方式、および、プログラムに関し、特にデバイスドライバ内に機能を動的に追加することができる動的機能追加方式、および、プログラムに関する。
【0002】
【従来の技術】
機能を追加する従来技術として、システムイベント処理機構が公知であるが、この機構は、デバイスドライバの機能を拡張するものではなく、カーネルの割り込みディスパッチテーブルを操作することでイベントを追加するものであり、ある意味で擬似的なデバイスドライバそのものを追加するものにすぎなかった(例えば、特許文献1参照)。
【0003】
また、同様の従来技術として、ノンストップ拡張ドライバ装置も公知であり、この装置は、デバイスドライバ内に新たに機能を追加するものであるが、ソースレベルでの機能を登録してエミュレーションを行うものであった(例えば、特許文献2参照)。
【0004】
さらに、類似する従来技術として、ドライバ機能の動的管理方式が公知であり、この方式は、バイナリコードでの機能の動的な登録を可能にするものであるが、アプリケーションプログラム側に新機能追加手段,情報獲得手段および情報編集手段を設ける必要があり、アプリケーションプログラムの改変が必要であるという問題点があった(例えば、特許文献3参照)。
【0005】
【特許文献1】
特開平08−272727号公報(第2−3頁、図1)
【特許文献2】
特開2001−005766号公報(第3−5頁、図1)
【特許文献3】
特開平11―249873号公報(第4−5頁、図1)
【0006】
【発明が解決しようとする課題】
上述した従来技術では、デバイスドライバに機能を追加するためには、デバイスドライバを停止しなければならないという問題点があった。その理由は、デバイスドライバそのものを置き換える必要があったためである。
【0007】
また、デバイスドライバにバイナリコードでの機能の動的な登録を可能にするためにアプリケーションプログラムの改変が必要であるという問題点があった。その理由は、アプリケーションプログラム側で新たな機能を編集してデバイスドライバに組み込む必要があったからである。
【0008】
さらに、新しい機能を追加した場合に、古い機能を使用中のアプリケーションプログラムが機能追加による擾乱を受けるおそれがあるという問題点があった。その理由は、デバイスドライバそのものを置き換えていたからである。
【0009】
本発明の目的は、デバイスドライバを停止させることなしに、デバイスドライバに動的に機能を追加することを可能とするデバイスドライバにおける動的機能追加方式を提供することにある。
【0010】
また、本発明の他の目的は、アプリケーションプログラムの改変なしに、デバイスドライバに動的に機能を追加することを可能とするデバイスドライバにおける動的機能追加方式を提供することにある。
【0011】
さらに、本発明の別の目的は、新しい機能を追加後にも、古い機能を使用中のアプリケーションプログラムに機能追加による擾乱を与えることのないデバイスドライバにおける動的機能追加方式を提供することにある。
【0012】
【課題を解決するための手段】
本発明のデバイスドライバにおける動的機能追加方式は、デバイスドライバへ追加される機能である拡張システムコールハンドラを有している拡張デバイスドライバと、デバイスドライバに対して前記拡張デバイスドライバのアドオン要求を行うアドオンプログラムマネージャと、前記アドオンプログラムマネージャからのアドオン要求に応じて前記拡張デバイスドライバを前記拡張システムコールハンドラとしてデバイスドライバにロードし、デバイスドライバの一部として動作可能となるように前記拡張システムコールハンドラのシンボルのアドレス情報の解決を行う拡張ハンドラ組み込み手段と、前記拡張ハンドラ組み込み手段による前記拡張システムコールハンドラのロード後に前記拡張システムコールハンドラをポイントするようにハンドラポインタテーブルを更新して最新のハンドラポインタテーブルとして追加するハンドラポインタテーブル更新追加手段と、ユーザプログラムからのOpenシステムコール時にデバイスドライバによって作成されるプライベートデータにより特定されるハンドラポインタテーブルを参照してユーザプログラム毎のシステムコールをディスパッチするシステムコールディスパッチ手段とを有することを特徴とする。
【0013】
また、本発明のデバイスドライバにおける動的機能追加方式は、前記デバイスドライバが、前記ハンドラポインタテーブルを前記プライベートデータ内にコピーすることを特徴とする。
【0014】
さらに、本発明のデバイスドライバにおける動的機能追加方式は、前記デバイスドライバが、前記ハンドラポインタテーブルへの参照を前記プライベートデータ内に保持させることを特徴とする。
【0015】
一方、本発明のデバイスドライバは、アドオンプログラムマネージャからのアドオン要求に応じて拡張デバイスドライバを拡張システムコールハンドラとしてデバイスドライバにロードし、デバイスドライバの一部として動作可能となるように拡張システムコールハンドラのシンボルのアドレス情報の解決を行う拡張ハンドラ組み込み手段と、前記拡張ハンドラ組み込み手段による前記拡張システムコールハンドラのロード後に前記拡張システムコールハンドラをポイントするようにハンドラポインタテーブルを更新して最新のハンドラポインタテーブルとして追加するハンドラポインタテーブル更新追加手段と、ユーザプログラムからのOpenシステムコール時にデバイスドライバによって作成されるプライベートデータにより特定されるハンドラポインタテーブルを参照してユーザプログラム毎のシステムコールをディスパッチするシステムコールディスパッチ手段とを有することを特徴とする。
【0016】
また、本発明のデバイスドライバは、前記プライベートデータ内にハンドラポインタテーブルをコピーすることを特徴とする。
【0017】
さらに、本発明のデバイスドライバは、前記プライベートデータ内にハンドラポインタテーブルへの参照を保持させることを特徴とする。
【0018】
他方、本発明のプログラムは、コンピュータを、アドオンプログラムマネージャからのアドオン要求に応じて拡張デバイスドライバを拡張システムコールハンドラとしてデバイスドライバにロードし、デバイスドライバの一部として動作可能となるように拡張システムコールハンドラのシンボルのアドレス情報の解決を行う拡張ハンドラ組み込み手段,前記拡張ハンドラ組み込み手段による前記拡張システムコールハンドラのロード後に前記拡張システムコールハンドラをポイントするようにハンドラポインタテーブルを更新して最新のハンドラポインタテーブルとして追加するハンドラポインタテーブル更新追加手段,およびユーザプログラムからのOpenシステムコール時にデバイスドライバによって作成されるプライベートデータにより特定されるハンドラポインタテーブルを参照してユーザプログラム毎のシステムコールをディスパッチするシステムコールディスパッチ手段として機能させることを特徴とする。
【0019】
また、本発明のプログラムは、前記プライベートデータ内にハンドラポインタテーブルをコピーすることを特徴とする。
【0020】
さらに、本発明のプログラムは、前記プライベートデータ内にハンドラポインタテーブルへの参照を保持させることを特徴とする。
【0021】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
【0022】
図1を参照すると、本発明の第1の実施の形態に係るデバイスドライバにおける動的機能追加方式は、デバイスドライバ10を搭載するオペレーティングシステム1と、拡張システムコールハンドラ21を含む拡張デバイスドライバ20と、デバイスドライバ10の機能を動的に追加するアドオンプログラムマネージャ30と、ユーザプログラム40とから、その主要部が構成されている。
【0023】
オペレーティングシステム1には、デバイスドライバ10と、ユーザプログラム40がデバイスドライバ10の利用をオペレーティングシステム1に宣言することによってオペレーティングシステム1によって作成されるファイル構造体2と、デバイスドライバ10によってユーザプログラム40を識別するために作成されるプライベートデータ3とが含まれている。
【0024】
拡張デバイスドライバ20は、アドオンプログラムマネージャ30からのアドオン要求に応じてデバイスドライバ10へ追加される機能である拡張システムコールハンドラ21を有している。
【0025】
拡張システムコールハンドラ21は、デバイスドライバ10へ追加される機能そのものであり、デバイスドライバ10によってデバイスドライバコード領域15にロードされるプログラムコードである。拡張システムコールハンドラ21は、システムコールディスパッチ手段13によって呼び出される。
【0026】
アドオンプログラムマネージャ30は、オペレーティングシステム1によって提供される特権ユーザ権限において動作するアプリケーションプログラムであり、デバイスドライバ10に対して拡張デバイスドライバ20のアドオン要求を行う機能を有している。
【0027】
ユーザプログラム40は、デバイスドライバ10を利用するアプリケーションプログラムであり、一般的なオペレーティングシステム1において提供されているOpenシステムコール相当のオペレーティングシステムサービス(以下、単にOpenシステムコールと記す)を呼び出すことで、デバイスドライバ10の利用をオペレーティングシステム1に宣言する。ユーザプログラム1が、Openシステムコール等を介してデバイスドライバ10の利用を宣言した際には、ユーザプログラム1用にデバイスドライバ10によって確保されるプライベートデータ3内にハンドラポインタテーブル16がコピーされる。
【0028】
ファイル構造体2は、オペレーティングシステム1に依存するデータ構造であり、ユーザプログラム40を識別および制御するために、ユーザプログラム40からのOpenシステムコール時にオペレーティングシステム1によって作成される。
【0029】
プライベートデータ3は、デバイスドライバ10に依存するデータ構造であり、ユーザプログラム40を識別および制御するために、一般的にユーザプログラム40からのOpenシステムコール時にデバイスドライバ10によって作成され、Closeシステムコール時にデバイスドライバ10によって消去される。また、プライベートデータ3には、Openシステムコール時にデバイスドライバ10によってハンドラポインタテーブル16がコピーされる。
【0030】
デバイスドライバ10は、オペレーティングシステム1の一部としてユーザプログラム40によって利用されるプログラムであり、ユーザプログラム40に対する各種のサービスを提供する。デバイスドライバ10は、拡張ハンドラ組み込み手段11と、ハンドラポインタテーブル更新追加手段12と、システムコールディスパッチ手段13と、ハンドラポインタテーブル16を配置するデバイスドライバデータ領域14と、システムコールハンドラ17を配置するデバイスドライバコード領域15とを有している。
【0031】
ハンドラポインタテーブル16は、デバイスドライバ10のデバイスドライバデータ領域14に配置されるテーブルであり、デバイスドライバ10の初期化時に確保される。ハンドラポインタテーブル16は、デバイスドライバ10が提供するサービスである各種のシステムコールハンドラ17へのポインタの集合である(図2および図3参照)。ハンドラポインタテーブル16は、ユーザプログラム40毎のデバイスドライバ10の振る舞いを制御するためのディスパッチテーブルであり、ユーザプログラム40によるシステムコールに応じて、オペレーティングシステム1より呼び出されるシステムコール毎の機能へのポインタセットを有しており、ユーザプログラム40に対して提供される機能レベル毎に、デバイスドライバ10によって管理される。デバイスドライバ10は、ハンドラポインタテーブル16の内容に従ってユーザプログラム40に提供する機能を決定する。
【0032】
システムコールハンドラ17は、デバイスドライバ10におけるデフォルトの振る舞いを行うプログラムコードそのものであり、ハンドラポインタテーブル16よりポイントされる。デバイスドライバ10は、システムコールハンドラ17によって各種のサービスを実行する。
【0033】
拡張ハンドラ組み込み手段11は、アドオンプログラムマネージャ30からのアドオン要求に応じて、拡張デバイスドライバ20を拡張システムコールハンドラ21としてデバイスドライバコード領域15にロードし、デバイスドライバ10の一部として動作可能となるように拡張システムコールハンドラ21の関数や変数等のシンボルのアドレス情報の解決を行う機能を有している。
【0034】
ハンドラポインタテーブル更新追加手段12は、アドオンプログラムマネージャ30からのアドオン要求に応じて、ハンドラポインタテーブル16を更新して最新のハンドラポインタテーブル16として追加するとともに、ハンドラポインタテーブル16の集合を管理する手段である。
【0035】
システムコールディスパッチ手段13は、プライベートデータ3内のハンドラポインタテーブル16を参照し、ユーザプログラム40毎の振る舞いを制御するシステムコールをディスパッチする機能を有している。
【0036】
図2は、ハンドラポインタテーブル16とシステムコールハンドラ17との間のリンクの初期状態を例示する図である。
【0037】
図3は、ハンドラポインタテーブル16とシステムコールハンドラ17との間のリンクのハンドラ変更後の状態を例示する図である。
【0038】
図4を参照すると、デバイスドライバ10のシステムコール受け付け時の処理は、Openシステムコール受け付けステップS101と、ハンドラポインタテーブルコピーステップS102とからなる。
【0039】
図5を参照すると、デバイスドライバ10のアドオン要求受け付け時の処理は、アドオン要求受け付けステップS201と、拡張デバイスドライバロードステップS202と、シンボルアドレス情報解決ステップS203と、ハンドラポインタテーブル更新追加ステップS204とからなる。
【0040】
次に、このように構成された第1の実施の形態に係るデバイスドライバにおける動的機能追加方式の動作について説明する。
【0041】
デバイスドライバ10は、一般的にオペレーティングシステム1の起動時にメモリにロードされ、動作可能な状態になっている。デバイスドライバ10は、初期化時に、デバイスドライバコード領域15上の各システムコールハンドラ17へのポインタをハンドラポインタテーブル16に設定する(図2参照)。初期化時にポイントされているシステムコールハンドラ17は、デバイスドライバ10のコンパイル時に作成されていたプログラムコードであり、デフォルトのハンドラとして動作する。デバイスドライバ10の初期化時には、ただ1つのハンドラポインタテーブル16が有効な状態となっている。
【0042】
このようなデフォルトの状態において、ユーザプログラム40よりOpenシステムコールが発行されると、デバイスドライバ10は、Openシステムコールを受け付け(ステップS101)、Openシステムコール時にオペレーティングシステム1によって作成されたプライベートデータ3に、デバイスドライバデータ領域14上に配置されたデフォルトの振る舞いを行うように初期化された最新のハンドラポインタテーブル16をコピーする(ステップS102)。これ以降、ユーザプログラム40によるデバイスドライバ10に対するシステムコール等のサービス要求は、システムコールディスパッチ手段13によってプライベートデータ3内のハンドラポインタテーブル16が参照されることで、システムコールハンドラ17によって処理される。例えば、ユーザプログラム40による以降のReadシステムコール等のサービス要求の際には、ハンドラポインタテーブル16よりデバイスドライバ10内のReadハンドラ本体等のプログラムコードが検索されて実行される。
【0043】
次に、アドオンプログラムマネージャ30が拡張デバイスドライバ20のアドオン要求をデバイスドライバ10に対して発行すると、デバイスドライバ10は、アドオン要求を受け付け(ステップS201)、拡張ハンドラ組み込み手段11により、拡張デバイスドライバ20を拡張システムコールハンドラ21としてデバイスドライバコード領域15にロードする(ステップS202)。
【0044】
続いて、デバイスドライバ10は、拡張ハンドラ組み込み手段11により、デバイスドライバコード領域15にロードされた拡張デバイスドライバ20内の拡張システムコールハンドラ21をシステムコールハンドラ17としてシンボルのアドレス情報の解決を行って動作可能なプログラムコードとする(ステップS203)。拡張デバイスドライバ20は、すでにコンパイル済みのプログラムコードではあるが、実際に動作可能なプログラムコードとするには、該プログラムコード内にて参照される関数や変数等のシンボルのアドレス情報を解決するリンク処理が必要となる。よって、拡張ハンドラ組み込み手段11は、拡張デバイスドライバ20をデバイスドライバコード領域15にロードする際にジャンプテーブル等の一般的な技術を用いてシンボルのアドレス情報を解決する。
【0045】
次に、バイスドライバ10は、ハンドラポインタテーブル更新追加手段12により、デバイスドライバデータ領域14上に配置された、その時点で最新のハンドラポインタテーブル16を、デバイスドライバコード領域15にロードされた拡張システムコールハンドラ21をポイントするハンドラポインタテーブル16に更新して最新のハンドラポインタテーブル16としてデバイスドライバデータ領域14上に追加する(図3参照)(ステップS104)。
【0046】
これにより、以降のユーザプログラム40によるデバイスドライバ10に対するシステムコール等のサービス要求は、拡張システムコールハンドラ21によっても処理可能となる。
【0047】
デバイスドライバ10は、初期化時に作成されたデフォルトのハンドラポインタテーブル16と、更新されて追加された最新のハンドラポインタテーブル16とを個別に保守し、以降の新しいユーザプログラム40からのOpenシステムコール時に、そのユーザプログラム40のプライベートデータ3に最新のハンドラポインタテーブル16をコピーする。
【0048】
ただし、すでにOpenシステムコールを発行しているが、Closeシステムコールを発行していないユーザプログラム40、すなわち、デバイスドライバ10を使用中のユーザプログラム40については、プライベートデータ3内にOpenシステムコール時にコピーされたハンドラポインタテーブル16がすでに存在しているので、デバイスドライバコード領域15にロードされた拡張システムコールハンドラ21を直ちにはシステムコールすることはできない。このことは、ユーザプログラム40が、デバイスドライバ10の使用中にデバイスドライバ10に新しい機能が追加されても、古い機能を使い続けることができ、ユーザプログラム40に機能追加による擾乱を与えることがないことを意味している。
【0049】
ここで、拡張システムコールハンドラ21としてWriteハンドラがロードされた場合を例にとって具体的に説明する(図2および図3参照)。
【0050】
デバイスドライバ10は、指定されたWriteハンドラをデバイスドライバコード領域15にロードするとともに、ハンドラポインタテーブル16を更新して最新のハンドラポインタテーブル16を追加し、デフォルトのハンドラポインタテーブル16のうち、指定のハンドラ(本例においては、Writeハンドラ)をオーバーライドしたエントリを設定する。
【0051】
これ以降において、ユーザプログラム40が、Openシステムコール等を介してデバイスドライバ10の利用を宣言した際には、該ユーザプログラム40用にデバイスドライバ10によって確保されるプライベートデータ3内に最新のハンドラポインタテーブル16がコピーされる。
【0052】
これにより、以降のユーザプログラム40によるWriteシステムコールのサービス要求の際には、最新のハンドラポインタテーブル16より拡張デバイスドライバ20のWriteハンドラのプログラムコードが検索されて実行される。
【0053】
[第1の実施の形態の変形例]
なお、第1の実施の形態では、プライベートデータ3内にハンドラポインタテーブル16をコピーするように説明したが、プライベートデータ3内にハンドラポインタテーブル16への参照(ポインタ,識別子等)を保持させるようにしてもよい。
【0054】
[第2の実施の形態]
図6は、本発明の第2の実施の形態に係るデバイスドライバにおける動的機能追加方式の構成を示すブロック図である。本実施の形態に係るデバイスドライバにおける動的機能追加方式は、図1に示した第1の実施の形態に係るデバイスドライバにおける動的機能追加方式をコンピュータ100に搭載し、このコンピュータ100に対してプログラム200を付加するようにした点だけが異なる。したがって、その他の特に言及しない部分には同一符号を付して、それらの詳しい説明を省略する。
【0055】
プログラム200は、コンピュータ100に読み込まれ、コンピュータ100の動作を、オペレーティングシステム1(ファイル構造体2,プライベートデータ3,デバイスドライバ10),拡張デバイスドライバ20(拡張システムコールハンドラ21),アドオンプログラムマネージャ30等として制御する。プログラム200の制御によるコンピュータ100の動作は、第1の実施の形態におけるデバイスドライバにおける動的機能追加方式の動作と全く同様になるので、その詳しい説明を割愛する。
【0056】
【発明の効果】
第1の効果は、デバイスドライバに新しい機能を追加する際に、デバイスドライバの停止やシステムの再起動を行う必要がなく、動作中のサービスを継続することができることである。その理由は、拡張システムコールハンドラがロードされた際にハンドラポインタテーブル更新追加手段がハンドラポインタテーブルを更新して追加するようにしたからである。
【0057】
第2の効果は、ユーザプログラムの改変なしに、デバイスドライバに動的に機能を追加することが可能になることである。その理由は、アドオンプログラムマネージャからのアドオン要求によって拡張ハンドラ組み込み手段が拡張デバイスドライバをデバイスドライバにロードするようにしたからである。
【0058】
第3の効果は、古い機能を使用中のユーザプログラムに擾乱を与えることなく、新しく追加する機能を使用するユーザプログラムをサポートできることである。その理由は、ユーザプログラム毎に別のハンドラポインタテーブルを用いることができるようにしたからである。これは、例えば、グラフィックスライブラリにおいて、デバイスドライバに新しい機能を追加することによって、アプリケーションプログラミングインタフェースを拡張するようなケースに利用することができる。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態に係るデバイスドライバにおける動的機能追加方式の構成を示すブロック図である。
【図2】図1中のハンドラポインタテーブルとシステムコールハンドラとの間のリンクの初期状態を例示する図である。
【図3】図1中のハンドラポインタテーブルとシステムコールハンドラとの間のリンクのハンドラ変更後の状態を例示する図である。
【図4】図1中のデバイスドライバのシステムコール受け付け時の処理を示すフローチャートである。
【図5】図1中のデバイスドライバのアドオン要求受け付け時の処理を示すフローチャートである。
【図6】本発明の第2の実施の形態に係るデバイスドライバにおける動的機能追加方式の構成を示すブロック図である。
【符号の説明】
1 オペレーティングシステム
2 ファイル構造体
3 プライベートデータ
10 デバイスドライバ
11 拡張ハンドラ組み込み手段
12 ハンドラポインタテーブル更新追加手段
13 システムコールディスパッチ手段
14 デバイスドライバデータ領域
15 デバイスドライバコード領域
16 ハンドラポインタテーブル
17 システムコールハンドラ
20 拡張デバイスドライバ
21 拡張システムコールハンドラ
30 アドオンプログラムマネージャ
40 ユーザプログラム
100 コンピュータ
200 プログラム

Claims (9)

  1. デバイスドライバ手段へ追加される機能である拡張システムコールハンドラ手段を有している拡張デバイスドライバ手段と、
    デバイスドライバ手段に対して前記拡張デバイスドライバ手段のアドオン要求を行うアドオンプログラムマネージャ手段と、
    前記アドオンプログラムマネージャ手段からのアドオン要求に応じて前記拡張デバイスドライバ手段を前記拡張システムコールハンドラ手段としてデバイスドライバ手段にロードし、デバイスドライバ手段の一部として動作可能となるように前記拡張システムコールハンドラ手段のシンボルのアドレス情報の解決を行う拡張ハンドラ組み込み手段と、
    前記拡張ハンドラ組み込み手段による前記拡張システムコールハンドラ手段のロード後に前記拡張システムコールハンドラ手段をポイントするようにハンドラポインタテーブルを更新して最新のハンドラポインタテーブルとして追加するハンドラポインタテーブル更新追加手段と、
    ユーザプログラムからのOpenシステムコール時にデバイスドライバ手段によって作成されるプライベートデータにより特定されるハンドラポインタテーブルを参照してユーザプログラム毎のシステムコールをディスパッチするシステムコールディスパッチ手段と
    を有することを特徴とする動的機能追加方式。
  2. 前記デバイスドライバ手段が、前記ハンドラポインタテーブルを前記プライベートデータ内にコピーすることを特徴とする請求項1記載の動的機能追加方式。
  3. 前記デバイスドライバ手段が、前記ハンドラポインタテーブルへの参照を前記プライベートデータ内に保持させることを特徴とする請求項1記載の動的機能追加方式。
  4. アドオンプログラムマネージャ手段からのアドオン要求に応じて拡張デバイスドライバ手段を拡張システムコールハンドラ手段としてデバイスドライバ手段にロードし、デバイスドライバ手段の一部として動作可能となるように拡張システムコールハンドラ手段のシンボルのアドレス情報の解決を行う拡張ハンドラ組み込み手段と、
    前記拡張ハンドラ組み込み手段による前記拡張システムコールハンドラ手段のロード後に前記拡張システムコールハンドラ手段をポイントするようにハンドラポインタテーブルを更新して最新のハンドラポインタテーブルとして追加するハンドラポインタテーブル更新追加手段と、
    ユーザプログラムからのOpenシステムコール時にデバイスドライバ手段によって作成されるプライベートデータにより特定されるハンドラポインタテーブルを参照してユーザプログラム毎のシステムコールをディスパッチするシステムコールディスパッチ手段とを有することを特徴とする動的機能追加方式
  5. 前記プライベートデータ内にハンドラポインタテーブルをコピーすることを特徴とする請求項4記載の動的機能追加方式
  6. 前記プライベートデータ内にハンドラポインタテーブルへの参照を保持させることを特徴とする請求項4記載の動的機能追加方式
  7. コンピュータを、アドオンプログラムマネージャからのアドオン要求に応じて拡張デバイスドライバを拡張システムコールハンドラとしてデバイスドライバにロードし、デバイスドライバの一部として動作可能となるように拡張システムコールハンドラのシンボルのアドレス情報の解決を行う拡張ハンドラ組み込み手段,前記拡張ハンドラ組み込み手段による前記拡張システムコールハンドラのロード後に前記拡張システムコールハンドラをポイントするようにハンドラポインタテーブルを更新して最新のハンドラポインタテーブルとして追加するハンドラポインタテーブル更新追加手段,およびユーザプログラムからのOpenシステムコール時にデバイスドライバによって作成されるプライベートデータにより特定されるハンドラポインタテーブルを参照してユーザプログラム毎のシステムコールをディスパッチするシステムコールディスパッチ手段として機能させるためのプログラム。
  8. 前記プライベートデータ内にハンドラポインタテーブルをコピーすることを特徴とする請求項7記載のプログラム。
  9. 前記プライベートデータ内にハンドラポインタテーブルへの参照を保持させることを特徴とする請求項7記載のプログラム。
JP2003033547A 2003-02-12 2003-02-12 動的機能追加方式、および、プログラム Expired - Fee Related JP3933055B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003033547A JP3933055B2 (ja) 2003-02-12 2003-02-12 動的機能追加方式、および、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003033547A JP3933055B2 (ja) 2003-02-12 2003-02-12 動的機能追加方式、および、プログラム

Publications (2)

Publication Number Publication Date
JP2004246461A JP2004246461A (ja) 2004-09-02
JP3933055B2 true JP3933055B2 (ja) 2007-06-20

Family

ID=33019494

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003033547A Expired - Fee Related JP3933055B2 (ja) 2003-02-12 2003-02-12 動的機能追加方式、および、プログラム

Country Status (1)

Country Link
JP (1) JP3933055B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7870567B2 (en) * 2005-04-25 2011-01-11 International Business Machines Corporation Configuring a device using information from a device table
JP5178282B2 (ja) * 2008-04-02 2013-04-10 キヤノン株式会社 情報処理装置、制御方法及びプログラム

Also Published As

Publication number Publication date
JP2004246461A (ja) 2004-09-02

Similar Documents

Publication Publication Date Title
JP5655677B2 (ja) ハイパーバイザ置き換え方法および情報処理装置
TW588255B (en) Operating system abstraction and protection layer
US7703090B2 (en) Patch un-installation
US5835768A (en) Computer operating system providing means for formatting information in accordance with specified cultural preferences
US20010039612A1 (en) Apparatus and method for fast booting
US20060070089A1 (en) Method and apparatus for dynamic replacement of device drivers in the operating system (OS) kernel
US7155713B1 (en) Componentized operating system
JP5481308B2 (ja) データ制御装置及びプログラム
WO2011104825A1 (ja) 更新方法、更新装置、および更新プログラム
JP2001521254A (ja) モバイル・デバイスのアプリケーション・インストール管理システムおよび方法
JPH08249191A (ja) ブート方法及び装置
US6377971B1 (en) Method and apparatus for installing and executing a single user task in a multi-user environment
JP2014170515A (ja) 機器、情報記録プログラム、及び情報記録方法
US20020147971A1 (en) Object-oriented class loading system and method
US6957367B2 (en) System and method for controlling activity of temporary files in a computer system
EP1727043A2 (en) Dynamic mapping of shared libraries
JP3933055B2 (ja) 動的機能追加方式、および、プログラム
JPH03164841A (ja) コンピユータ・システム
US9031904B2 (en) Portable application registry
US6336215B1 (en) Apparatus and method for on-line code only replacement of a running program using checkpoints
WO2007030524A1 (en) Method and apparatus to provide separation of system software components
US7516452B1 (en) Method and system for managing installation of software on a computer system platform
JP2007328597A (ja) コンピュータシステム、コンピュータシステムのトレースデータ蓄積方法およびトレースデータ蓄積プログラム
WO2008157587A2 (en) Switching user mode thread context
KR20050063304A (ko) 이동통신 단말기에서 다중 가상머신 구동용 실행 환경구조 및 그 실행방법

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20050124

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20050310

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060523

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060613

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060728

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20070119

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: 20070227

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070312

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20100330

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110330

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110330

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120330

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120330

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130330

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees