JPH09212444A - ホストコンピュータ間におけるデバイスドライバの可搬性を実現するための方法および装置 - Google Patents

ホストコンピュータ間におけるデバイスドライバの可搬性を実現するための方法および装置

Info

Publication number
JPH09212444A
JPH09212444A JP8198264A JP19826496A JPH09212444A JP H09212444 A JPH09212444 A JP H09212444A JP 8198264 A JP8198264 A JP 8198264A JP 19826496 A JP19826496 A JP 19826496A JP H09212444 A JPH09212444 A JP H09212444A
Authority
JP
Japan
Prior art keywords
data access
driver
device driver
ddi
handle
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.)
Pending
Application number
JP8198264A
Other languages
English (en)
Inventor
S Pun Sherman
エス プン シャーマン
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH09212444A publication Critical patent/JPH09212444A/ja
Pending legal-status Critical Current

Links

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/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Systems (AREA)

Abstract

(57)【要約】 【課題】 多数の命令セットアーキテクチャおよびプラ
ットフォーム間で、デバイスドライバが完全なソースレ
ベル互換性をもって動作できるような、デバイスドライ
バの可搬性を実現する。 【解決手段】 デバイスドライバインターフェースは、
このドライバがコンパイルされるホストコンピュータの
実際のデータアクセスメカニズムが前記ドライバに見え
ないようにする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、デバイスドライ
バインターフェイスに関し、特に、多数の命令セットア
ーキテクチャ(ISA:Instruction Set Architectur
e)およびプラットフォーム間で、デバイスドライバが
完全なソースレベル互換性をもって動作することを可能
にするデバイスドライバインターフェイスに関する。
【0002】
【従来の技術】過去において、デバイスドライバの開発
者は、特定の命令セットアーキテクチャ、および、該命
令セットアーキテクチャの特定のプラットフォームと互
換性のあるデバイスドライバの様々異なるバージョンを
作成していた。異なる命令セットアーキテクチャを有す
るプロセッサの一例は、Intel社のx86(80386,80486,Pe
ntium)、IBM社およびMotolora社のPower PC(PPC)、
ならびに、SPARCである。SPARCは、Sun Microsystems,I
nc.の商標である。命令セットアーキテクチャの2つの
特定のプラットフォームの例は、同一のプロセッサを有
するが異なるメモリコントローラを有する2つのコンピ
ュータである。例えば、1つの前記メモリコントローラ
は、以下に説明するように、プロセッサのエンディアン
ネス(endian-ness)とデバイスのエンディアンネスとの
間の互換性を実現するために、バイト交換およびデータ
再配列を行うようプログラム可能なハードウエアを有す
ることがある。なお、エンディアンネス(endian-ness)
とは、最上位バイトと最下位バイトの順序のことであ
り、最下位バイトの方がメモリの若い番地にあるのを小
エンディアンと言い、その逆を大エンディアンと言う。
【0003】デバイス構成要素としては、例えば、ラン
ダムアクセスメモリ(RAM)、プロセッサの周辺装置
上に取り付けられたレジスタなどがある。このような周
辺装置は、アドオンボード(add-on board)(例えば、
グラフィックスフレームバッファアダプタ、ネットワー
クインターフェイスアダプタ、および、スモールコンピ
ータシステムインターフェイス(SCSI)・ホストバスア
ダプタ)であってよい。デバイスは、1つのコンピュー
タから他のコンピュータに移動されることができる。こ
れらのアドオンボード上に設けられる要素としては、例
えば、ランダムアクセスメモリ(RAM)およびレジス
タがある。これらのデバイス構成要素は、コンピュータ
のものとは異なっても異なっていなくてもよい、大エン
ディアンまたは小エンディアンのような異なるデータ表
現を有する。(以下、この明細書における“デバイス”
という用語は、デバイスおよびデバイス構成要素を意味
する。) 典型的には、デバイスドライバ自体は、デバイスを制御
するするために、ホストコンピュータのメモリに格納さ
れた1組のプロセッサ命令である。ホストコンピュータ
とデバイスとの間では、共用データを送受し、解釈する
方法が異なることがある。例えば、異なるホストプロセ
ッサとデバイスとの間では、デバイスのコマンドレジス
タに格納された値を送受する場合に、エンディアンネス
(バイト配列)が異なることがある。
【0004】大きく分けて2種類のエンディアンネスが
あり、1つのホストプロセッサが小エンディアンであっ
て、他のホストプロセッサが大エンディアンであること
がある。また、デバイス自体は大エンディアンであるか
もしれない。例えば、大エンディアンであるプロセッサ
は、最上位バイトで始まるマルチバイトワードを送受
し、解釈実行する。同様に、小エンディアンであるプロ
セッサは、最下位バイトで始まるマルチバイトワードを
送受し、解釈実行する。異なるエンディアンネスを有す
るプロセッサの一例として、Intel社のx86プロセッサフ
ァミリは小エンディアンあり、SPARCアーキテクチャは
大エンディアンである。PPCは、大、小エンディアンモ
ード設定値を有するバイエンディアンであるプロセッサ
を使用する。個々のデバイスは、同一タイプのエンディ
アンネスを示す。例えば、デバイスAは、大エンディア
ンのI/Oプロセッサを有することにより、大エンディ
アンフォーマットを使用したマルチバイトワードを送受
し、解釈することができる。一方、デバイスBは、小エ
ンディアンのI/Oプロセッサを有することにより、小
エンディアンフォーマットを使用したマルチバイトワー
ドを送受し、解釈することができる。通常、デバイスド
ライバは、特定のホストコンピュータとデバイスとの間
の特定の違いに対処する。そこで、例えば、大エンディ
アンのホストコンピュータ上で動作する小エンディアン
デバイスのためのデバイスドライバの場合、ワードをデ
バイスに送る前に、該ワードにおけるバイトの順序を入
れ替えることによって、エンディアンネスの違いを調整
する。
【0005】
【発明が解決しようとする課題】しかしながら、デバイ
スと(反対ではなく)同じエンディアンを有する他のホ
ストコンピュータ上で同一のドライバを動作させると、
前記ホストコンピュータとデバイスとの間の通信ミス
(または非互換性)が起こる。この非互換性は、前記ド
ライバが常にワードのバイトの順序を入れ替える動作を
行うことから発生する。
【0006】プロセッサ間におけるその他の違いは、こ
れらプロセッサのデータ伝送能力、特に、データを配列
する能力の違いである。あるプロセッサは、データを限
定的に配列することだけ可能である。この限定的な配列
とは、前記プロセッサがデータストリームを受け取った
順序と同じ順序でのみ該データストリームを送ることが
できる、という意味である。また、あるプロセッサは、
命令の実行および処理シーケンスと同一順序でのみデー
タを送ることができる。データの配列替えを行う場合、
プロセッサはデータストリームの配列を替えることがで
きる。あるプロセッサは、データをマージ(併合)する
ことができる。データのマージによって、1つのデータ
をマルチワードデータバッチに組込むことができ、デー
タを1つずつ送る代りに、一度に前記バッチを送ること
ができる。また、あるプロセッサは、キャッシュローデ
ィングおよびキャッシュ記憶などの能力を有する。キャ
ッシュローディングにおいて、前記プロセッサは、取り
込んだデータをキャッシュメモリに格納し、オリジナル
データの代りに他のデータが格納されるまで、前記デー
タを再使用することができる。キャッシュ記憶におい
て、前記プロセッサは、キャッシュメモリにデータを保
持することができ、その後、(時には、他のデータと共
に)デバイスに送ることができる。
【0007】エンディアンネスの場合と同様に、開発者
は、通常のドライバを、特定のホストコンピュータの特
定のデータ伝送能力に適合するよう調整する。しかしな
がら、特定のホストコンピュータのデータ伝送能力を利
用するよう書かれたドライバは、このようなデータ伝送
能力を有さない他のホストコンピュータ上で走らせるこ
とができない。
【0008】典型的には、ホストコンピュータとデバイ
スは、例えば周辺要素相互接続(PCI)ローカルバス
などのバスによって接続される。典型的には、このバス
アーキテクチャは、バスと、PCIホストブリッジと、
該ホストブリッジに接続されたPCI対PCIバスブリ
ッジおよびPCI対ISAバスブリッジのようなその他
のバスブリッジとを有している。デバイスと通信するた
めに、プロセッサは、前記デバイスのバスアドレスを認
識することによって、前記デバイスにアクセスできる。
さらに、各バスアドレスドメイン(領域)は、個々のア
ドレススペースに分割されてもよい。例えば、PCIロ
ーカルバスは、機器構成(コンフィギュレーション)ス
ペース、メモリスペースおよびI/Oスペースである3
つの異なるアドレススペースを提供する。デバイスレジ
スタまたはメモリは、前記3つのPCIアドレススペー
スのいずれかに現れることができる。異なるバスアドレ
ススペースにアクセスする方法は、ホストコンピュータ
に依存することができる。このため、1つのバスまたは
1つのISA/プラットフォームの反対側に横切って通
信するよう書かれたドライバは、他のプラットフォーム
の同じバスと互換性の無いものになることがある。
【0009】ホストコンピュータがデバイスと通信でき
るその他の方法は、ホストメモリ(DMA(直接メモリ
アクセス)可能メモリ)の一部を前記デバイスと共用す
ることによるものである。この場合、DMA可能メモリ
とは、ホストコンピュータとデバイスとによって共用さ
れる構造を制御するために使用されるメモリである。D
MA可能メモリは、ホストコンピュータ間で異なるエン
ディアンネスおよびデータ配列特性を示す。このため、
上述の如く、特定のホストコンピュータのDMA可能メ
モリを介してデバイスと通信するよう書かれたドライバ
は、他のホストコンピュータのDMA可能メモリとの互
換性を有さないことがある。
【0010】故に、デバイスドライバ開発者が、該ドラ
イバが動作するホストコンピュータの特性、および、前
記ホストコンピュータとデバイスとを接続するバスの特
性とは独立にドライバを開発できるようにする、デバイ
スドライバインターフェースが必要になる。このインタ
ーフェースは、様々な命令セットアーキテクチャとプラ
ットフォームとの間における、ドライバの可搬性を実現
する。この発明は上記の点に鑑みてなされたもので、多
数の命令セットアーキテクチャおよびプラットフォーム
間で、デバイスドライバが完全なソースレベル互換性を
もって動作することを可能にするデバイスドライバイン
ターフェイスを提供することを目的とする。
【0011】
【課題を解決するための手段】この発明は、デバイスド
ライバが多数の命令セットアーキテクチャおよびプラッ
トフォーム間で、完全なソースレベル互換性をもって動
作できるよう、デバイスドライバの可搬性を実現する方
法および装置を提供するものである。デバイスおよびド
ライバのホストコンピュータは、異なるデータアクセス
特性を有することができる。例えば、ホストコンピュー
タは大エンディアンとすることができ、該ホストコンピ
ュータによって制御されるデバイスは小エンディアンと
することができる。この発明の一実施の形態によると、
デバイスドライバを実行するホストコンピュータのデー
タアクセス特性をサポートするデバイスドライバインタ
ーフェイス(DDI)環境実行部が提供される。前記D
DI環境は、前記ホストコンピュータとデバイスとのデ
ータアクセス互換性を提供するために、前記デバイスの
データアクセス特性と前記ホストコンピュータのデータ
アクセス特性との両方を使用する。このようにして、前
記デバイスドライバは、前記ホストコンピュータのデー
タアクセス特性についての情報を必要としない。
【0012】処理上の観点から見れば、この発明の好ま
しい実施の形態に従う方法は、次のステップからなるも
のである。すなわち、この方法は、先ず、DDI環境内
のメモリスペースをハンドルのために割当てる。そし
て、前記DDI環境は、少なくとも2つのDDIデータ
アクセス関数実行部のうちの少なくとも1つを選択す
る。この選択された実行部は、前記ホストコンピュータ
およびデバイスのデータアクセス特性間の違いを調整す
る。前記DDI環境は、前記DDIデータアクセス関数
実行部にアクセスするための情報を、前記ハンドルに格
納する。前記DDI環境は、前記ドライバが該DDI環
境を介して前記デバイスに対して不透明なアクセス(opa
que access) を行えるよう、前記ドライバにハンドルポ
インタを送る。前記ドライバは、前記DDIデータアク
セス関数実行部を呼出すために、前記ハンドル内の情報
を使用する。上述のように、前記ドライバは、前記ホス
トコンピュータのデータアクセス特性についての情報を
有さない。
【0013】すなわち、この発明は、第1のデータアク
セス特性を有するデバイスと通信する少なくとも2つの
ホストコンピュータの間におけるデバイスドライバの可
搬性を実現するための方法であって、前記ドライバが、
第2のデータアクセス特性を有するホストコンピュータ
によって実行されるコンピュータ命令を格納したメモリ
を備え、デバイスドライバインターフェース環境内のメ
モリスペースを、ハンドルのために割当てるステップ
と、前記デバイスドライバインターフェース環境によっ
て、少なくとも2つのデバイスドライバインターフェー
ス・データアクセス関数実行部のうち、前記第1のデー
タアクセス特性と第2のデータアクセス特性との違いを
調整する少なくとも1つの前記関数実行部を選択するス
テップと、前記デバイスドライバインターフェース環境
によって、前記選択されたデバイスドライバインターフ
ェース・データアクセス関数実行部にアクセスするため
の情報を、前記ハンドルに格納するステップと、前記デ
バイスドライバインターフェース環境を介して前記ドラ
イバが前記デバイスに対して不透明なアクセスを行える
よう、前記デバイスドライバインターフェース環境によ
って、前記ドライバにハンドルポインタを送るステップ
とからなり、前記デバイスドライバインターフェース環
境が、前記ハンドル内の前記情報を使用することによっ
て、前記選択されたデバイスドライバインターフェース
・データアクセス関数実行部を呼出し、前記ドライバが
前記第2のデータアクセス特性についての情報を有さな
いようにするものである。
【0014】さらに、この発明は、第1のデータアクセ
ス特性を有するデバイスと通信する少なくとも2つのホ
ストコンピュータの間におけるデバイスドライバの可搬
性を実現するための装置であって、前記ドライバが、第
2のデータアクセス特性を有するホストコンピュータに
よって実行されるコンピュータ命令を格納したメモリを
備え、デバイスドライバインターフェース環境と、前記
デバイスドライバインターフェース環境内のメモリスペ
ースをハンドルのために割当てるよう構成された、前記
インターフェース環境内に設けられたセットアップメカ
ニズムと、少なくとも2つのデバイスドライバインター
フェース・データアクセス関数実行部のうち、前記第1
のデータアクセス特性と第2のデータアクセス特性との
違いを調整する少なくとも1つの前記関数実行部を選択
するよう構成された、前記インターフェース環境内に設
けられたセレクタと、前記選択されたデバイスドライバ
インターフェース・データアクセス関数実行部にアクセ
スするための情報を前記ハンドルに格納するよう構成さ
れた、前記インターフェース環境内に設けられた記憶媒
体と、前記デバイスドライバインターフェース環境を介
して前記ドライバが前記デバイスに対して不透明なアク
セスを行えるよう、前記デバイスドライバインターフェ
ース環境に前記ドライバに対してハンドルポインタを送
らせるよう構成されたリターン関数メカニズムとを具備
し、前記デバイスドライバインターフェース環境が、前
記ハンドル内の前記情報を使用することによって、前記
選択されたデバイスドライバインターフェース・データ
アクセス関数実行部を呼出し、前記ドライバが前記第2
のデータアクセス特性についての情報を有さないように
したものである。
【0015】さらに、この発明に係るコンピュータプロ
グラム製品は、各々がメモリを有する少なくとも2つの
ホストコンピュータの間におけるデバイスドライバの可
搬性を実現するために、コンピュータが読み取り可能な
コードを格納したコンピュータが使用可能な媒体と、コ
ンピュータに、デバイスドライバインターフェース環境
内のメモリスペースをハンドルのために割当てさせるよ
う構成された第1のコンピュータ読み取り可能プログラ
ムコード装置と、コンピュータに、前記デバイスドライ
バインターフェース環境を介して、少なくとも2つのデ
バイスドライバインターフェース・データアクセス関数
実行部のうち、前記第1のデータアクセス特性と第2の
データアクセス特性との違いを調整する少なくとも1つ
の前記関数実行部を選択させるよう構成された第2のコ
ンピュータ読み取り可能プログラムコード装置と、コン
ピュータに、前記デバイスドライバインターフェース環
境を介して、前記選択されたデバイスドライバインター
フェース・データアクセス関数実行部にアクセスするた
めの情報を前記ハンドルに格納させるよう構成された第
3のコンピュータ読み取り可能プログラムコード装置
と、前記ドライバがデバイスに対して不透明なアクセス
を行えるよう、コンピュータに、前記デバイスドライバ
インターフェース環境を介して、前記ドライバにハンド
ルポインタを送らせるよう構成された第4のコンピュー
タ読み取り可能プログラムコード装置とを具備し、前記
デバイスドライバインターフェース環境が、前記ハンド
ル内の前記情報を使用することによって、前記選択され
たデバイスドライバインターフェース・データアクセス
関数実行部を呼出し、前記ドライバが前記第2のデータ
アクセス特性についての情報を有さないようにしたもの
である。
【0016】
【発明の実施の形態】以下、添付図面を参照してこの発
明の一実施の形態を詳細に説明する。以下に説明するこ
の発明の一実施の形態は、Sunsoft, A Sun Microsystem
s, Inc. Businessによって、Solaris 2.5という名前で
リリースされているオペレーティングシステムの一部と
して実行されるのが好ましい。“Solaris”は、Sun Mic
rosystems, Inc. の登録商標である。当業者に明らかな
ように、ここで説明する実施の形態は様々なオペレーテ
ィングシステムで実施可能である。さらに、以下に述べ
るコンピュータコードは、C言語で書かれているのが好
ましい。C言語は、ベル研究所で開発された高水準プロ
グラミング言語である。しかし、この実施の形態は、他
のコンピュータ言語を使用して実施されてもよい。
【0017】図1は、この発明が、いかにして、ドライ
バ110のソースコードの可搬性(portability)(こ
れを図では双方向(ダブルヘッド)矢印106で示す)
を実現するかを示している。図1において、ホストコン
ピータA108はデバイスドライバ110を備えてお
り、該デバイスドライバ110は、前記コンピータ10
8のプロセッサA114を介して、デバイスドライバイ
ンターフェイスの共通部118とDDIホスト固有実行
部120との組合わせに接続されている(以下、この組
合わせをDDIと言う)。前記ドライバ110(すなわ
ち、ホストコンピータ108のコンパイラ(図示せず)
によってコンパイルされるデバイスドライバ110のソ
ースコード)、および、DDI118,120は、前記
ホストコンピータ108のメモリ122に格納されてい
る。好ましくは、DDI118,120は、前記ホスト
コンピータ108のオペレーティングシステムの一部を
構成するコンピュータの命令である。前記デバイスドラ
イバ110は、バスアーキテクチャ128を介して、デ
バイス126とデータの送受(通信)を行う。
【0018】また、前記デバイスドライバ110は、異
なる命令セットアーキテクチャを有するコンピュータB
130のような他のホストコンピータ上で動作するよ
う、(図示しないコンパイラによって)コンパイルされ
ることができる。前記コンピュータ130は、プロセッ
サ114とは異なるプロセッサB134を有するが、そ
の他の点では、前記ホストコンピータ108と同様であ
る。この実施の形態は任意の数の異なるホストコンピー
タの間におけるデバイスドライバ110の可搬性106
を可能にするものであるが、図示を簡単にするために、
2つのホストコンピータ108,130のみが示されて
いる。ホストコンピータ130において、デバイスドラ
イバ110は、プロセッサB134を介して、デバイス
ドライバインターフェイスの共通部118とDDIホス
ト固有実行部138との組合わせに接続されている。ホ
ストコンピータ108と同様に、ホストコンピータ13
0では、ドライバ110およびDDI118,138
は、前記ホストコンピータ130のメモリ142に格納
されている。好ましくは、DDI118,120は、前
記ホストコンピータ130のオペレーティングシステム
の一部を構成する。前記デバイスドライバ110は、バ
スアーキテクチャ146を介して、デバイス126とデ
ータの通信を行う。
【0019】好ましくは、前記デバイスドライバ110
は、該ドライバ110を実行する特定のコンピュータ1
08または130に関係なく、デバイス126を制御す
るために書かれたコンピュータコードである。しかし、
上述のように、異なるコンピュータのデータ処理方法に
は違いがある。例えば、異なるコンピュータは、異なる
エンディアンネスおよび異なるデータ配列特性を有す
る。ホストコンピータ108,130の間におけるデバ
イスドライバ110の可搬性を実現するために、この実
施の形態は、各コンピータ108,130毎にDDIホ
スト固有実行部120,138を設けている。前記ドラ
イバ110は、デバイス126のエンディアンネスおよ
びデータ配列のような特定の特性を知るだけでよく、こ
れらのデバイスの特性をDDI118の共通部に供給す
る。前記DDIホスト固有実行部120または138
は、その特定のホストが専用化されたプロセッサ114
または134およびバスアーキテクチャ128または1
46のデータ処理特性を認識する。(後で説明するよう
に)この知識を使用して、前記DDIホスト固有実行部
120または138は、それぞれのホストコンピュータ
108,130とデバイス126の間におけるデータ処
理特性およびバスアドレス特性上の違いを調整すること
により、前記ドライバ110とデバイス126との間で
通信されるデータを調整する。しかし、後で説明するよ
うに、あるホストコンピュータ108または130は、
DDIホスト固有実行部120または138を設ける必
要性を無くするハードウエアを有する。
【0020】図2および図3は、デバイス126に対す
るデータアクセスのために行われるドライバ110の好
ましいセットアップ手続きを示す図であり、ドライバコ
ードにおける、前記DDIの組合わせ118(および1
20または138)を設定する部分を示すフローチャー
トである。前記DDIの組合わせ118(および120
または138)は、前記ドライバ110からエンディア
ンネスを隠す。図2のステップ210において、前記ド
ライバ110は、DDIレジスタマッピングのためのデ
バイスアクセス特性データ構造を初期化する。また、図
3のステップ210において、前記ドライバ110は、
DMA(直接メモリアクセス)可能なメモリ割当てのた
めのデバイスアクセス特性データ構造を初期化する。
(アクセス特性データ構造の一例は、出願人が発行した
“Data Structure for Drivers”(以下、参照文献とい
う)の第1ページ目に記載されている。(この発明の理
解に必要とされる場合、出願人はこの参照文献を提出す
る用意がある。)また、図2および図3のステップ21
0において、前記ドライバ110は、前記デバイス12
6の特性をデバイスアクセス特性データ構造に格納す
る。格納される特性は、前記デバイス126のエンディ
アンネスおよびデータ配列特性である(これらの特性の
値の一例については、前記参照文献の第1ページおよび
第2ページを参照されたし)。
【0021】図2のステップ214において、前記ドラ
イバ110は、特定のデバイス126によるデータアク
セスを設定するためのDDIレジスタアドレスマッピン
グ・セットアップ関数を呼出す。前記ドライバ110が
このセットアップ関数を呼出すとき、該ドライバ110
は、バス128,146を介して、前記ホストコンピュ
ータ108,130とデバイス126との間における互
換性のあるデータの通信を確立するために必要なすべて
の処理を完了している。(ドライバ開発者によって使用
される標準化された関数名のリストの一例は、前記参照
文献に含まれている。例えば、前記参照文献の第5ぺー
ジ目の関数ddi_regs_map_setupを参照されたし。この関
数ddi_regs_map_setupは、ステップ214のDDIセッ
トアップ関数の一例である。)
【0022】DDIレジスタアドレスマッピング・セッ
トアップ関数を呼出す際、前記ドライバ110は、好ま
しくは、該セットアップ関数に対して、デバイス特性ポ
インタ、および、ハンドルの記憶アドレス(ハンドルポ
インタアドレス)を送る。前記デバイス特性ポインタ
は、ステップ210において割当てられたデバイスアク
セス特性データ構造のアドレスを含むものである。前記
ハンドルポインタアドレスは、後で説明するように、前
記DDIレジスタアドレスマッピング・セットアップ関
数が作成するハンドル構造のアドレスを格納するメモリ
位置である。前記ドライバ110が前記ハンドル構造の
ハンドルポインタアドレスを提供することを要求するだ
けで、前記ドライバ110は、前記ハンドル構造につい
て何も知る必要がない。換言すれば、前記ハンドル構造
は、前記ドライバ110に不透明である。後の説明から
明らかになるように、この不透明さは、前記ドライバ1
10を可搬性(矢印106)のあるものとするのに役立
つ。
【0023】DMA可能なメモリ内の構造を制御するた
めのデータアクセスを行うために、図3のステップ21
8において、前記ドライバ110は、共用可能なメモリ
を介してデータアクセスを行うために、DDI DMA
可能なメモリ割当て関数を呼出す。ステップ214に関
して上述したように、この呼出しを行う際、前記ドライ
バ110は、好ましくは、該DDI DMA可能なメモ
リ割当て関数に対して、デバイス特性ポインタおよびハ
ンドルポインタアドレスを送る(DDI DMA可能な
メモリ割当て関数については、前記参照文献の第6〜7
ページ目を参照)。図2および図3には示していない
が、前記ドライバ110は、ステップ214もしくはス
テップ218またはこれら2つのステップに示されたコ
ードを含むよう書かれてよい。
【0024】図4は、前記ドライバ110と、ハンドル
構造314を含むDDI環境310との間の好ましい通
信リンクを示すものであり、これらのすべては、好まし
くは、前記ホストコンピュータ108,130のオペレ
ーティングシステムの一部である。図4は、さらに、前
記ハンドル構造314の詳細の一部を示すとともに、該
ハンドル構造314がどのように使用されるかを示して
いる。上述のように、前記ドライバ110は、DDIレ
ジスタアドレスマッピング・セットアップ関数を呼出
す。前記ハンドル314のためのメモリ記憶スペース
は、DDI環境310内のDDIレジスタアドレスマッ
ピング・セットアップ関数によって割当てられる。好ま
しくは、前記ハンドル314は、共通部316と、ホス
ト固有部318とバス固有部320とを有する。前記ホ
スト固有部318およびバス固有部320は、図1のD
DIホスト固有実行部120に含まれている。
【0025】好ましくは、前記ハンドル314の共通部
316は、メモリ位置322に、該ハンドル314のI
SA/プラットフォーム固有部318を指示するポイン
タを含んでいる。前記共通部316における他のメモリ
位置は、前記バス固有部320を指示するポインタ32
8を含んでいる。好ましくは、前記バス固有部320
は、バス128または146上におけるデバイス126
の位置を示すデータなどの、バスパラメータに関するデ
ータを含んでいる。また、好ましくは、前記ISA/プ
ラットフォーム固有部318は、個々のメモリ記憶スペ
ース330に、DDIデータアクセス関数実行部334
のアドレス332を含んでいる。該DDIデータアクセ
ス関数実行部334のアドレス332は、実際のDDI
データアクセス関数実行部334が位置した前記DDI
環境310のメモリ内の位置である。
【0026】後で説明するように、前記ドライバ110
は、メモリ記憶スペース336にハンドルポインタ33
8を格納している。このハンドルポインタ338は、前
記DDI環境310のハンドル314を指示している
(矢印340)。後で詳述するように、デバイス126
に対する読み書きのようなDDIデータアクセス関数を
実行するためには、基本的に、前記ドライバ110は、
他の関数の引き数と同様に、(矢印344によって示す
ように)ハンドルポインタ338をDDIデータアクセ
ス関数348に送る。該DDIデータアクセス関数34
8は、(矢印352によって示すように)DDIデータ
アクセス関数実行部334を間接的に呼出す。好ましく
は、前記DDIデータアクセス関数348は、DDIデ
ータアクセス関数実行部334のアドレス332を呼出
すことによって、前記間接的な呼出し352を実行す
る。前記DDIデータアクセス関数348は、前記IS
A/プラットフォーム固有部318を指示するポインタ
324を介して、DDIデータアクセス関数実行部33
4のアドレス332を得る。
【0027】選択されたDDIデータアクセス関数実行
部334は、(矢印356によって示すように)前記D
DIデータアクセス関数348に値を返す。説明を簡単
にするために、ここでは1つのDDIデータアクセス関
数実行部334について説明するが、図4に示すよう
に、各々が1つのアドレス332を有する多数のDDI
データアクセス関数実行部334が設けられていてもよ
い。矢印360に示すように、前記DDIデータアクセ
ス関数348は、DDIデータアクセス関数実行部33
4の値をドライバ110に返す。
【0028】上述のように、前記ドライバ110がデバ
イス126の異なるバスアドレススペースに対して読み
書きする場合、普通、該ドライバ110は、バスアーキ
テクチャ128または146上のバスアドレススペース
を介してこれを行う。前記デバイス126のアドレスス
ペースマッピングを得るために、好ましくは、前記ドラ
イバ110は上記セットアップ関数を実行し、該セット
アップ関数は、バス128または146上におけるデバ
イス126のアドレスをドライバ110に返す。さらに
後述するように、前記DDI環境310が前記デバイス
126のアドレススペースを得る処理は、前記ドライバ
110には見えない。これは、データアクセス中に、前
記ドライバ110が別のアドレススペースを明示的に呼
出すことなくドライバ開発者によって書かれ得る、とい
うことを意味する。
【0029】DDIデータアクセス(読出しまたは書込
み)関数を実行するために、前記ドライバ110は、そ
のDDIデータアクセス関数を単に呼出しし、それを前
記ハンドルポインタ338およびデバイスアドレスと共
に送る。前記ドライバ110がDDIデータアクセス関
数を呼出すと、前記ドライバ110がDDI環境310
の処理の詳細を知る必要無しに、前記DDI環境310
がこれを引き継ぎ、折り返し値を供給する。もちろん、
DDIデータアクセス関数を呼出すためには、上述のよ
うに、前記ドライバ110は、先ず、図2および/また
は図3のステップ214および/または218を実行し
なければならない。デバイス126からデータを読み出
すためのもの以外のDDIデータアクセス関数は、例え
ばデータを書き込むためのDDIデータアクセス関数と
して、より多くの入力引き数を必要とすることがある
(前記参照文献の第9ページ目を参照)。明らかに、デ
バイス126にデータを書き込むには、(ハンドルポイ
ンタ338およびデバイスアドレスの他に)前記デバイ
ス126に書き込むべき実際のデータを送ることが必要
になる。
【0030】図5は、図4のハンドル314を構築する
ための好ましいステップを示す。図5は、前記ドライバ
110が図2のステップ214においてDDIレジスタ
アドレスマッピング関数を呼出した時に、前記DDI環
境310によって実行されるステップのフローチャート
である。該DDI環境310は、共通部118(図1参
照)と、図1のプラットフォーム固有部120または1
38とで構成されている。後で詳述するように、前記ド
ライバ110が共用メモリを介した構造制御データアク
セスのためにDMA可能なメモリ割当て関数を呼出すと
き、前記DDI環境310は、図5に示すようなステッ
プを実行する。前記デバイス126に対するデータアク
セスが前記バス128または146を通したドライバの
直接的なアクセスによるものか、および/または、直接
メモリアクセスを使用したDMA可能メモリに対するデ
バイスのアクセスによるものかに関わらず、前記DDI
環境310は前記ドライバには見えない。
【0031】ステップ410において、前記DDIセッ
トアップ関数は、ハンドル構造314のためのメモリ格
納スペースを割当てる。このように割当てられるメモリ
格納スペースは、前記共通部316、ISA/プラット
フォーム固有部318およびバス固有部320のための
メモリを含む。しかし、好ましくは、前記ホストコンピ
ュータ108または130がハードウエアサポートを有
さない場合にのみ、前記ISA/プラットフォーム固有
部318が割当てられる。その場合、後述するように、
前記DDIセットアップ関数は、DDIデータアクセス
関数334を実施するためにソフトウエア関数実行部を
使用する。同様に、後述するように、前記ホストコンピ
ュータが、メモリマップされたアドレスによって、前記
バスアーキテクチャ128または146に接続されたデ
バイス126に直接的に読み/書きを行うことができな
い場合にのみ、前記バス固有部320が割当てられるの
が好ましい。
【0032】次のステップ414において、前記DDI
セットアップ関数は、図2のステップ214によって送
られてきた入力引き数を、前記ハンドル314の共通部
316に格納する。上述のように、前記ドライバ110
からDDI118に送られる入力引き数は、デバイスア
クセス特性ポインタおよびハンドルポインタアドレス3
36を含むものである。前記デバイスアクセス特性ポイ
ンタは、前記ドライバ110が前記デバイス126のエ
ンディアンネスおよびデータ配列特性などの特性を格納
しているメモリ構造を指示する。図2のステップ214
において、さらに、前記ドライバ110は、DDIレジ
スタアドレスマッピング・セットアップ関数に対して、
一定のデバイスレジスタを表すアドレススペースセット
を示す索引番号についての情報を送っている。さらに、
ステップ214において、前記ドライバ110は、前記
デバイスレジスタのアドレススペースセットに対するオ
フセット値および長さを送っている。
【0033】ステップ422では、前記DDIレジスタ
アドレスマッピング・セットアップ関数は、これらの入
力引き数から、前記デバイスレジスタにおけるバスアド
レススペースの位置を認識する。上述のように、バスア
ドレススペースをホストアドレス領域に設定する方法
は、前記ホストコンピュータ108または130に依存
する。後述するように、前記DDI環境310は、この
ホストコンピュータに対する依存が前記ドライバ110
に見えないようにする。例えば、PCIデバイス(すな
わち、PCIローカルバスに接続されたデバイス)の場
合、前記セットアップ関数によって前記ドライバ110
に返されるリターンアドレスは、前記PCIスペース、
I/Oスペースまたはコンフィギュレーションスペース
内のアドレスとすることができる。前記ドライバ110
は、このように戻されたデバイスバスアドレスを基準と
して使用することによって、同一のアドレススペースに
おける他のデバイス126のレジスタのための有効アド
レスを導き出す。好ましくは、前記ドライバ110は、
前記デバイスバスアドレス基準に対してオフセット値と
して一定値を加えることによって、または、前記デバイ
スバスアドレス基準を前記デバイス126のレジスタを
表すC言語データ構造に対するポインタとすることによ
って、このアドレスの導き出しを行う。
【0034】次に、前記DDIレジスタアドレスマッピ
ング・セットアップ関数は、前記デバイス126のデー
タアクセス特性を認識する。ステップ426において、
前記DDIレジスタアドレスマッピング・セットアップ
関数は、前記デバイス126のエンディアン要件を認識
する。上述のように、図2のステップ210において、
前記ドライバ110は、デバイス126のエンディアン
特性をデバイスデータアクセス特性データ構造に格納す
る。例えば、フラグデータ“NEVER SWAP(交換せず)”
が設定されている場合、バイト交換は使用されない。前
記デバイスのエンディアンネスが前記ホストコンピュー
タのエンディアンに一致しない場合、後述のように、す
べてのデータアクセス中に使用される、厳密なバイト交
換が使用される。前記DDIセットアップ関数は、前記
デバイスデータアクセス特性データ構造から、前記デバ
イス126のデータ配列指定情報を取り出す。その後、
前記DDIセットアップ関数は、前記ホストコンピュー
タ108,130の能力に基づくデータ配列方法を選択
する。例えば、前記ドライバ126がマージ(併合)を
指定しているが、前記ホストコンピュータ108,13
0がデータ再配列のみを行うことができるものである場
合、マージより融通性に欠けるデータ再配列がすべての
データアクセス中に使用される。
【0035】各DDI実行部120,138は特定のホ
ストコンピュータ108,130のために書かれている
ので、前記DDIセットアップ関数によって次にとられ
るステップに分枝が発生する。該分枝(B1,B2)
は、ある命令セットアーキテクチャ(ISA)および命
令セットアーキテクチャのあるプラットフォームがI/
Oハードウエアサポートを有する(B1)が、他の命令
セットアーキテクチャおよびプラットフォームがI/O
ハードウエアサポートを有さない(B2)、ことによっ
て発生する。これらの命令セットアーキテクチャおよび
プラットフォームはI/Oハードウエアサポートを有
し、該ハードウエアサポートによって、ステップ434
において、前記DDIレジスタアドレスマッピング・セ
ットアップ関数がエンディアンネス、データ配置および
バスアドレススペースマッピング要件などのデバイス特
性を調整するよう前記ハードウエアをプログラムするこ
とが可能になる。B1ブランチにおいて、好ましくは、
特定のホストコンピュータ108,130の前記DDI
レジスタアドレスマッピング・セットアップ関数は、前
記ハンドル構造314のISA/プラットフォーム固有
部318およびバス固有部320のための格納スペース
の割当てを行わない。この理由は後の説明から明らかに
なるであろう。
【0036】B1ブランチのステップ442において、
前記DDIセットアップ関数は、デバイス126のバス
アドレスマッピングを行う。ある場合、前記バスアーキ
テクチャ128,146は、前記DDIセットアップ関
数がバスハードウエアをプログラムすることを可能にす
るハードウエアを含み、こうして、このハードウエアが
ステップ442のバスアドレスマッピングを自動的に実
行する。このようなバスアドレスマッピングハードウエ
ア能力が無い場合、好ましくは、ステップ443におけ
る前記DDI実行部120または138は、図5のフロ
ーチャートのB2ブランチに関して後述するように、ソ
フトウエア関数のスーツ(すなわち、プログラムの一
式)を選択する。
【0037】B1ブランチのステップ442において、
前記DDIレジスタアドレスマッピング・セットアップ
関数は、デバイス126のバスアドレスマッピングを行
う。B1ブランチのステップ442において、前記DD
Iセットアップ関数は、新たに割当てられたハンドル3
14を指示するようハンドルポインタ338を設定す
る。前記ドライバが前記DDIレジスタアドレスマッピ
ング・セットアップ関数を呼出すとき、各デバイス12
6のアドレスマッピング毎に、個別のハンドル314が
割当てられる。ステップ446において、前記DDIセ
ットアップ関数は、制御を前記ドライバ110に戻す。
このようにする過程において、前記DDI実行部120
または138は、ステップ442で得られたデバイスバ
スアドレスを前記ドライバ110に送り、ハンドルポイ
ンタ338を前記ドライバ110のメモリ336に格納
する。
【0038】図5のフローチャートのブランチB2にお
いて、前記DDIレジスタアドレスマッピング・セット
アップ関数は、ステップ438を実行する。ブランチB
2において、前記DDI実行部120または138は、
ホストコンピュータ108,130にハードウエアサポ
ートを有さない。ステップ438において、前記DDI
セットアップ関数は、デバイス126にアクセスするた
めのDDIデータアクセス関数実行部334(図4参
照)のスーツを認識する。後述するように、該DDIデ
ータアクセス関数実行部334は、ソフトウエアによる
手法を使用して、ホストプロセッサ114または134
およびデバイス126の特性の違いを処理する。上述の
如く、前記DDIセットアップ関数は、前記DDIデー
タアクセス関数実行部334のアドレス332を、ハン
ドル314のISA/プラットフォーム固有部318に
格納する。
【0039】ソフトウエアによるバイト交換を行うため
のDDIデータアクセス関数実行部334の一例は、図
6に示されている。図6において、小エンディアンのプ
ロセッサ114上で動作するドライバ110は、大エン
ディアンのデバイス126に対して、4バイトワード5
14を送る。DDIデータアクセス関数実行部522
(図4の334)は、前記ワード514のバイト順序を
入れ替えて、デバイス518の大エンディアンデータ表
現に変換する。図7は、DDIデータアクセス関数実行
部610(図4の334)の他の例を示すものである。
図7において、ドライバ110は、大エンディアンのホ
ストコンピュータ134上で動作する。ここでは、ドラ
イバ110は、大エンディアンのデバイス126に対し
て、4バイトワード514を送る。図7において、DD
Iデータアクセス関数実行部610は、何もしない無交
換関数であり、ワード614のバイト順序を前記ワード
514と同じに維持する。
【0040】DDIデータアクセス関数実行部334の
その他の例は、あるプロセッサのデータを配列し直し、
マージし、キャッシュローディングしおよび/またはキ
ャッシュ格納する能力を使用する関数である。例えば、
前記ドライブ110は、前記DDI環境310に対し
て、ある一定のデータ配列特性を使用するよう助言して
よい。上述の如く、前記ドライブ110は、デバイスア
クセス特性構造(このようなフラグの一例については、
前記参考文献の第1ページ目を参照)に適当なフラグを
設定することによって、ある一定のデータ配列特性を使
用する許可を与える。前記参考文献に示されるように、
あるタイプのデータ配列を行う許可を与えることは、他
のタイプのデータ配列を行う許可を与えることを暗示す
る。
【0041】様々異なるDDIデータアクセス関数実行
部334のライブラリは、好ましくはDDI環境310
における、ホストコンピュータ108,130のオペレ
ーティングシステムに格納される。図5のステップ43
8において、好ましくは、前記DDI環境310は、if
/then/else文を実行し、ハンドル314のISA/プラ
ットフォーム固有部318における、どのDDIデータ
アクセス関数実行部334のどのアドレス332に格納
すべきかを決定する。一例を示すと、前記DDI実行部
120または138のDDIレジスタアドレスマッピン
グ・セットアップ関数内のコンピュータ命令は次のよう
であってよい。すなわち、“指定されたデバイスアクセ
ス特性が大エンディアンである場合、デバイス126に
対する読み書きを行うためにバイト交換を行うDDIデ
ータアクセス関数実行部334のアドレス332を、メ
モリ330に格納せよ”。その後、前記ドライバ110
が、例えば、前記デバイス126に4バイトワードを送
るDDIデータアクセス関数を呼出したとき、図6のD
DIデータアクセス関数実行部522(図4の334)
を呼出すことによって、DDIデータアクセス関数呼出
し348が間接的に行われる(図4の352)。この実
施の形態において、前記指定されたデバイスアクセス特
性が小エンディアンである場合、DDI実行部120ま
たは138は、前記デバイス126に対する読み書きを
行うためにバイト交換を行わないDDIデータアクセス
関数実行部334のアドレス332を、メモリ330に
格納することになる。
【0042】エンディアンネスの処理と同様に、ステッ
プ438では、前記DDI実行部120または138の
DDIセットアップ関数は、さらに、データ配列および
異なるバスアドレススペースアクセスのための適当なア
ドレス332を前記DDIデータアクセス関数実行部3
34のライブラリから選択するために、if/then/elseコ
ンピュータ命令を実行する。
【0043】図5に戻り、B2ブランチのステップ44
2では、デターアクセス関数がソフトウエア手法を使用
して実行されるので、前記DDIレジスタアドレスマッ
ピング・セットアップ関数は、好ましくは、前記データ
アクセスハンドル314のバス固有部320に、ある一
定のバス指示情報を格納する。前記PCIローカルバス
・コンフィギュレーションスペースにアクセスすると
き、バス固有情報の一例は、バス番号、デバイス番号お
よび関数番号によってデバイス126の位置を示す情報
である。この情報は、前記DDIデータアクセス関数実
行部334によって使用可能である。図5のB2ブラン
チに戻り、ステップ442の後、前記DDIセットアッ
プ関数は、図5のB1ブランチと同様に、ステップ44
4および446を行う。
【0044】図5に示すように、この実施の形態は、前
記デバイス126およびホストコンピュータ108また
は130が上述のように直接メモリアクセス(DMA)
方式を使用して通信を行うときに、変更されるのが好ま
しい。基本的に、図5に示したDDI DMA可能な割
当て関数は、ステップ422およびステップ442を除
く、図5のすべてのステップを実行する。直接メモリア
クセス方式では、前記デバイスおよびホストコンピュー
タが該ホストコンピュータ108,130内部のメモリ
にアクセスすることによって通信するので、ステップ4
22は使用されない。これにより、バス128、146
のアドレススペースを考慮する必要が無くなる。同様な
理由により、バスアドレスマッピングを実行するステッ
プ442を省略することができる。
【0045】図8および図9は、前記ドライバ110
が、どのようにして、DDIデータアクセス関数を実行
するのかを説明する図である。図8ではI/Oを実行す
るためにハードウエアサポートが利用可能であるのに対
して、図9ではハードウエアが存在していない(ステッ
プ714および718参照)という点を除き、図8およ
び図9は互いに類似している。しかし、上述の如く、こ
のハードウエアの有無は、前記ドライバ110には見え
ない。図8および図9のステップ710において、前記
ドライバ110は、例えば、デバイス126のデバイス
メモリもしくはレジスタ、または、割当てられたDMA
可能なアドレス内のデータ制御構造に対してデータを書
き込むためのDDIデータアクセス関数を呼出す(前記
参照文献の第8ページ目を参照)。ステップ710にお
いて、前記ドライバ110は、図4に関して説明した如
く、矢印344に示すように、デバイスバスアドレス
(または、DMA可能なメモリアドレス)およびハンド
ルポインタ340を、DDI環境310内のDDIデー
タアクセス関数呼出し文348に与える。
【0046】図8のステップ714において、前記DD
I環境310(図4参照)は、それがプログラムしたI
/Oハードウエアを使用する。故に、ステップ714で
は、前記DDIデータアクセス関数が、前記デバイスバ
スアドレスに対する直接的な読み書きによって実行され
る。次のステップ722において、前記DDIデータア
クセス関数は、(適当な場合、前記ドライバ110によ
って呼出されたDDI関数の値と共に)前記ドライバ1
10に制御を返す。前記デバイス126に対してワード
を送るドライバ110の場合、前記ドライバ110によ
って呼出されたDDI関数の結果として、前記ワードが
前記ドライバ110から前記デバイス126の指定され
たデバイスバスアドレスに書き込まれ、前記ドライバ1
10とデバイス126との間のエンディアンネスおよび
データ配列特性の違いが調整される。
【0047】図9のステップ718において、前記DD
I環境310はI/Oハードウエアを有さない。故に、
前記DDI環境310は、ソフトウエア方式を使用す
る。ここでは、前記DDI環境310は、例えば、デバ
イス126の適当なデバイスバスアドレスにワードを書
き込むための適当なDDIデータアクセス関数実行部3
34を間接的に呼出す(矢印352)ことによって、前
記ドライバ110によって要求された関数を実行する。
その後、ステップ722において、前記DDI環境31
0は、前記ドライバ110に制御を戻す。この発明は、
上記の実施の形態に限らず、様々な変更が可能である。
例えば、前記DDI環境310がホストコンピュータ1
08,130の特性を調整するようにしてもよい。
【0048】最後に、本願において示された発明及び実
施の態様のいくつかを要約して列挙すると次の通りであ
る。 (1) 第1のデータアクセス特性を有するデバイスと
通信する少なくとも2つのホストコンピュータの間にお
けるデバイスドライバの可搬性を実現するための方法で
あって、前記ドライバが、第2のデータアクセス特性を
有するホストコンピュータによって実行されるコンピュ
ータ命令を格納したメモリを備えており、前記方法が、
デバイスドライバインターフェース環境内のメモリスペ
ースを、ハンドルのために割当てるステップと、前記デ
バイスドライバインターフェース環境により、少なくと
も2つのデバイスドライバインターフェース・データア
クセス関数実行部のうち、前記第1のデータアクセス特
性と第2のデータアクセス特性との違いを調整する、少
なくとも1つの前記関数実行部を選択するステップと、
前記デバイスドライバインターフェース環境により、前
記選択されたデバイスドライバインターフェース・デー
タアクセス関数実行部にアクセスするための情報を、前
記ハンドルに格納するステップと、前記デバイスドライ
バインターフェース環境を介して前記ドライバが前記デ
バイスに対して不透明なアクセスを行えるよう、前記デ
バイスドライバインターフェース環境により、前記ドラ
イバにハンドルポインタを送るステップであって、前記
デバイスドライバインターフェース環境が、前記ハンド
ル内の前記情報を使用することによって、前記選択され
たデバイスドライバインターフェース・データアクセス
関数実行部を呼出し、前記ドライバが前記第2のデータ
アクセス特性についての情報を有さないようにするもの
と、を具備することを特徴とする方法。 (2) 前記ハンドルに格納するステップが、前記ハン
ドルに前記選択されたデバイスドライバインターフェー
ス・データアクセス関数実行部のアドレスを格納するス
テップである前記1項に記載の方法。 (3) 前記ハンドルがホストコンピュータ固有部を有
し、前記アドレスを格納するステップが、前記アドレス
を前記ハンドルの前記ホストコンピュータ固有部に格納
するものである前記2項に記載の方法。 (4) 前記ハンドルがバス固有部を有し、前記デバイ
スのバスパラメータを識別するためのデータを前記バス
固有部に格納するステップをさらに含む前記1項に記載
の方法。 (5) 前記選択されたデバイスドライバインターフェ
ース・データアクセス関数実行部を間接的に呼出すため
に、前記ドライバから前記デバイスドライバインターフ
ェース環境内の関数呼出し部に前記ハンドルポインタを
送るステップをさらに含む前記1項に記載の方法。 (6) 前記ホストコンピュータのハードウエアによっ
て前記デバイスに対する直接的なデータアクセスを行う
ために、前記ドライバから前記デバイスドライバインタ
ーフェース環境内の関数呼出し部に前記ハンドルポイン
タを送るステップをさらに含む前記1項に記載の方法。 (7) 前記ドライバによって、該ドライバから前記デ
バイスドライバインターフェース環境に前記第1のデー
タアクセス特性を送るステップをさらに含む前記1項に
記載の方法。 (8) 前記ハンドルが、前記第1のデータアクセス特
性を格納するための共通部を含む前記7項に記載の方
法。
【0049】(9) 第1のデータアクセス特性を有す
るデバイスと通信する少なくとも2つのホストコンピュ
ータの間におけるデバイスドライバの可搬性を実現する
ための装置であって、前記ドライバが、第2のデータア
クセス特性を有するホストコンピュータによって実行さ
れるコンピュータ命令を格納したメモリを備えており、
前記装置が、デバイスドライバインターフェース環境
と、前記デバイスドライバインターフェース環境内のメ
モリスペースをハンドルのために割当てるよう構成され
た、前記インターフェース環境内に設けられたセットア
ップメカニズムと、少なくとも2つのデバイスドライバ
インターフェース・データアクセス関数実行部のうち、
前記第1のデータアクセス特性と第2のデータアクセス
特性との違いを調整する少なくとも1つの前記関数実行
部を選択するよう構成された、前記インターフェース環
境内に設けられたセレクタと、前記選択されたデバイス
ドライバインターフェース・データアクセス関数実行部
にアクセスするための情報を前記ハンドルに格納するよ
う構成された、前記インターフェース環境内に設けられ
た記憶媒体と、前記デバイスドライバインターフェース
環境を介して前記ドライバが前記デバイスに対して不透
明なアクセスを行えるよう、前記デバイスドライバイン
ターフェース環境に前記ドライバに対してハンドルポイ
ンタを送らせるよう構成されたリターン関数メカニズム
であって、前記デバイスドライバインターフェース環境
が、前記ハンドル内の前記情報を使用することによっ
て、前記選択されたデバイスドライバインターフェース
・データアクセス関数実行部を呼出し、前記ドライバが
前記第2のデータアクセス特性についての情報を有さな
いようにしたものと、を具備することを特徴とする装
置。 (10) 前記選択されたデバイスドライバインターフ
ェース・データアクセス関数実行部にアクセスするため
の情報が、前記ハンドルにおける前記選択されたデバイ
スドライバインターフェース・データアクセス関数実行
部のアドレスを含む前記9項に記載の装置。 (11) 前記ハンドルがホストコンピュータ固有部を
有し、前記記憶媒体が、前記アドレスを前記ハンドルの
前記ホストコンピュータ固有部に格納するよう構成され
た前記10項に記載の装置。 (12) 前記ハンドルがバス固有部を有し、前記デバ
イスのバスパラメータを識別するためのデータを該バス
固有部に格納するよう構成された記憶媒体をさらに具備
した前記9項に記載の装置。 (13) 前記選択されたデバイスドライバインターフ
ェース・データアクセス関数実行部を間接的に呼出すた
めに、前記ドライバから前記デバイスドライバインター
フェース環境内の関数呼出し部に前記ハンドルポインタ
を送る関数呼出しメカニズムをさらに備えた前記9項に
記載の装置。 (14) 前記ホストコンピュータのハードウエアによ
って前記デバイスに対する直接的なデータアクセスを行
うために、前記ドライバから前記デバイスドライバイン
ターフェース環境内の関数呼出し部に前記ハンドルポイ
ンタを送るよう構成された関数呼出しメカニズムをさら
に備えた前記9項に記載の装置。 (15) 前記ドライバから前記デバイスドライバイン
ターフェース環境に前記第1のデータアクセス特性を送
るよう構成された関数呼出しメカニズムをさらに具備し
た前記9項に記載の装置。 (16) 前記ハンドルが、前記第1のデータアクセス
特性を格納するための共通部を含む前記15項に記載の
装置。
【0050】(17) 各々がメモリを有する少なくと
も2つのホストコンピュータの間におけるデバイスドラ
イバの可搬性を実現するために、コンピュータが読み取
り可能なコードを格納したコンピュータが使用可能な媒
体と、コンピュータに、デバイスドライバインターフェ
ース環境内のメモリスペースをハンドルのために割当て
させるよう構成された第1のコンピュータ読み取り可能
プログラムコード装置と、コンピュータに、前記デバイ
スドライバインターフェース環境を介して、少なくとも
2つのデバイスドライバインターフェース・データアク
セス関数実行部のうち、前記第1のデータアクセス特性
と第2のデータアクセス特性との違いを調整する少なく
とも1つの前記関数実行部を選択させるよう構成された
第2のコンピュータ読み取り可能プログラムコード装置
と、コンピュータに、前記デバイスドライバインターフ
ェース環境を介して、前記選択されたデバイスドライバ
インターフェース・データアクセス関数実行部にアクセ
スするための情報を前記ハンドルに格納させるよう構成
された第3のコンピュータ読み取り可能プログラムコー
ド装置と、前記ドライバがデバイスに対して不透明なア
クセスを行えるよう、コンピュータに、前記デバイスド
ライバインターフェース環境を介して、前記ドライバに
ハンドルポインタを送らせるよう構成された第4のコン
ピュータ読み取り可能プログラムコード装置とを具備
し、前記デバイスドライバインターフェース環境が、前
記ハンドル内の前記情報を使用することによって、前記
選択されたデバイスドライバインターフェース・データ
アクセス関数実行部を呼出し、前記ドライバが前記第2
のデータアクセス特性についての情報を有さないように
するコンピュータプログラム製品。 (18) 前記ハンドルに格納させる第3のコンピュー
タ読み取り可能プログラムコード装置が、前記ハンドル
に前記選択されたデバイスドライバインターフェース・
データアクセス関数実行部のアドレスを格納させるもの
である前記17項に記載のコンピュータプログラム製
品。 (19) 前記ハンドルがホストコンピュータ固有部を
有し、前記ハンドルに格納させる第3のコンピュータ読
み取り可能プログラムコード装置が、前記アドレスを前
記ハンドルの前記ホストコンピュータ固有部に格納させ
るものである前記18項に記載のコンピュータプログラ
ム製品。 (20) 前記ハンドルがバス固有部を有し、前記デバ
イスのバスパラメータを識別するためのデータを該バス
固有部に格納するための第5のコンピュータ読み取り可
能プログラムコード装置をさらに具備した前記17項に
記載のコンピュータプログラム製品。 (21) 前記選択されたデバイスドライバインターフ
ェース・データアクセス関数実行部を間接的に呼出すた
めに、前記ドライバから前記デバイスドライバインター
フェース環境内の関数呼出し部に前記ハンドルポインタ
を送るための第6のコンピュータ読み取り可能プログラ
ムコード装置をさらに具備した前記17項に記載のコン
ピュータプログラム製品。 (22) 前記ホストコンピュータのハードウエアによ
って前記デバイスに対する直接的なデータアクセスを行
うために、前記ドライバから前記デバイスドライバイン
ターフェース環境内の関数呼出し部に前記ハンドルポイ
ンタを送るための第7のコンピュータ読み取り可能プロ
グラムコード装置をさらに具備した前記17項に記載の
コンピュータプログラム製品。 (23) 前記ドライバによって、該ドライバから前記
デバイスドライバインターフェース環境に前記第1のデ
ータアクセス特性を送るための第8のコンピュータ読み
取り可能プログラムコード装置をさらに具備した前記1
7項に記載のコンピュータプログラム製品。
【0051】
【発明の効果】以上のように、この発明は、多数の命令
セットアーキテクチャおよびプラットフォーム間で、デ
バイスドライバが完全なソースレベル互換性をもって動
作することを可能にする、という優れた効果を奏する。
【図面の簡単な説明】
【図1】この発明の一実施の形態を示す全体的なコンピ
ュータブロック図であり、ドライバの可搬性を示す図。
【図2】デバイスに対するデータアクセスのために行わ
れる図1のドライバのセットアップ手続きを示すフロー
チャート。
【図3】デバイスに対するデータアクセスのために行わ
れる図1のドライバのセットアップ手続きを示すフロー
チャート。
【図4】図1のドライバおよびデバイスドライバインタ
ーフェイス環境のサブシステムブロック図。
【図5】ハンドルを構築するためにデバイスドライバイ
ンターフェイス環境によって実行されるステップのフロ
ーチャート。
【図6】デバイスドライバインターフェイス関数の実行
例を示す図。
【図7】デバイスドライバインターフェイス関数の実行
例を示す図。
【図8】この発明の最終的な結果を示す図。
【図9】この発明の最終的な結果を示す図。
【符号の説明】
106 可搬性 108 ホストコンピュータ 110 ドライバ 118 DDIの共通部 120 DDIホスト固有実行部 122 メモリ 126 デバイス 128 バス 130 ホストコンピュータ 138 DDIホスト固有実行部 142 メモリ 146 バス

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 第1のデータアクセス特性を有するデバ
    イスと通信する少なくとも2つのホストコンピュータの
    間におけるデバイスドライバの可搬性を実現するための
    方法であって、前記ドライバが、第2のデータアクセス
    特性を有するホストコンピュータによって実行されるコ
    ンピュータ命令を格納したメモリを備えており、前記方
    法が、 デバイスドライバインターフェース環境内のメモリスペ
    ースを、ハンドルのために割当てるステップと、 前記デバイスドライバインターフェース環境により、少
    なくとも2つのデバイスドライバインターフェース・デ
    ータアクセス関数実行部のうち、前記第1のデータアク
    セス特性と第2のデータアクセス特性との違いを調整す
    る、少なくとも1つの前記関数実行部を選択するステッ
    プと、 前記デバイスドライバインターフェース環境により、前
    記選択されたデバイスドライバインターフェース・デー
    タアクセス関数実行部にアクセスするための情報を、前
    記ハンドルに格納するステップと、 前記デバイスドライバインターフェース環境を介して前
    記ドライバが前記デバイスに対して不透明なアクセスを
    行えるよう、前記デバイスドライバインターフェース環
    境により、前記ドライバにハンドルポインタを送るステ
    ップであって、前記デバイスドライバインターフェース
    環境が、前記ハンドル内の前記情報を使用することによ
    って、前記選択されたデバイスドライバインターフェー
    ス・データアクセス関数実行部を呼出し、前記ドライバ
    が前記第2のデータアクセス特性についての情報を有さ
    ないようにするものと、を具備することを特徴とする方
    法。
  2. 【請求項2】 第1のデータアクセス特性を有するデバ
    イスと通信する少なくとも2つのホストコンピュータの
    間におけるデバイスドライバの可搬性を実現するための
    装置であって、前記ドライバが、第2のデータアクセス
    特性を有するホストコンピュータによって実行されるコ
    ンピュータ命令を格納したメモリを備えており、前記装
    置が、 デバイスドライバインターフェース環境と、 前記デバイスドライバインターフェース環境内のメモリ
    スペースをハンドルのために割当てるよう構成された、
    前記インターフェース環境内に設けられたセットアップ
    メカニズムと、 少なくとも2つのデバイスドライバインターフェース・
    データアクセス関数実行部のうち、前記第1のデータア
    クセス特性と第2のデータアクセス特性との違いを調整
    する少なくとも1つの前記関数実行部を選択するよう構
    成された、前記インターフェース環境内に設けられたセ
    レクタと、 前記選択されたデバイスドライバインターフェース・デ
    ータアクセス関数実行部にアクセスするための情報を前
    記ハンドルに格納するよう構成された、前記インターフ
    ェース環境内に設けられた記憶媒体と、 前記デバイスドライバインターフェース環境を介して前
    記ドライバが前記デバイスに対して不透明なアクセスを
    行えるよう、前記デバイスドライバインターフェース環
    境に前記ドライバに対してハンドルポインタを送らせる
    よう構成されたリターン関数メカニズムであって、前記
    デバイスドライバインターフェース環境が、前記ハンド
    ル内の前記情報を使用することによって、前記選択され
    たデバイスドライバインターフェース・データアクセス
    関数実行部を呼出し、前記ドライバが前記第2のデータ
    アクセス特性についての情報を有さないようにしたもの
    と、を具備することを特徴とする装置。
JP8198264A 1995-07-07 1996-07-08 ホストコンピュータ間におけるデバイスドライバの可搬性を実現するための方法および装置 Pending JPH09212444A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US49973695A 1995-07-07 1995-07-07
US08/499,736 1995-07-07

Publications (1)

Publication Number Publication Date
JPH09212444A true JPH09212444A (ja) 1997-08-15

Family

ID=23986485

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8198264A Pending JPH09212444A (ja) 1995-07-07 1996-07-08 ホストコンピュータ間におけるデバイスドライバの可搬性を実現するための方法および装置

Country Status (4)

Country Link
US (1) US5701483A (ja)
EP (1) EP0752646B1 (ja)
JP (1) JPH09212444A (ja)
DE (1) DE69620062T2 (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2742245B1 (fr) * 1995-12-08 1998-01-23 Transtar Procede de manipulation de modeles de donnees utilises en genie logiciel
US6021275A (en) * 1996-08-05 2000-02-01 General Magic, Inc. Object code structure and method for translation of architecture independent program implementations
US6233624B1 (en) * 1997-05-08 2001-05-15 Microsoft Corporation System and method for layering drivers
US5991813A (en) * 1997-05-16 1999-11-23 Icon Cmt Corp. Network enabled SCSI interface
KR100256944B1 (ko) * 1997-07-31 2000-05-15 윤종용 피씨아이 핫 플러그를 위한 경보 장치
US6594708B1 (en) 1998-03-26 2003-07-15 Sun Microsystems, Inc. Apparatus and method for object-oriented memory system
US6631423B1 (en) * 1998-03-31 2003-10-07 Hewlett-Packard Development Company, L.P. System and method for assessing performance optimizations in a graphics system
US6202147B1 (en) 1998-06-29 2001-03-13 Sun Microsystems, Inc. Platform-independent device drivers
US6434694B1 (en) 1998-06-29 2002-08-13 Sun Microsystems, Inc. Security for platform-independent device drivers
US6202146B1 (en) * 1998-06-29 2001-03-13 Sun Microsystems, Inc. Endianness checking for platform-independent device drivers
US6088752A (en) * 1998-08-06 2000-07-11 Mobility Electronics, Inc. Method and apparatus for exchanging information between buses in a portable computer and docking station through a bridge employing a serial link
US6070214A (en) * 1998-08-06 2000-05-30 Mobility Electronics, Inc. Serially linked bus bridge for expanding access over a first bus to a second bus
US7734852B1 (en) 1998-08-06 2010-06-08 Ahern Frank W Modular computer system
US6618767B1 (en) 1998-11-17 2003-09-09 Sun Microsystems, Inc. Mechanism by which devices on unforeseen platform variants may be supported without re-release of core platform kernel software
US5968138A (en) * 1999-04-23 1999-10-19 Hewlett-Packard Company Method and apparatus for peripheral system management, using multiple object interfaces
US20010047512A1 (en) * 2000-03-23 2001-11-29 Leland Szewerenko Method and system for linking multiple processors having shared memory
US6594719B1 (en) 2000-04-19 2003-07-15 Mobility Electronics Inc. Extended cardbus/pc card controller with split-bridge ™technology
FR2820222B1 (fr) * 2001-01-26 2003-03-21 Schneider Automation Procede de programmation d'une application d'automatisme
US6725294B1 (en) * 2001-02-20 2004-04-20 Lsi Logic Corporation Installation and access of a device handler for a peripheral device in a computer
US6944867B2 (en) 2001-10-04 2005-09-13 Lenovo (Singapore) Pte. Ltd. Method for providing a single preloaded software image with an ability to support multiple hardware configurations and multiple types of computer systems
US7058898B2 (en) 2002-03-22 2006-06-06 Sun Microsystems, Inc. Abstract user interface manager with prioritization
US20030225928A1 (en) * 2002-05-28 2003-12-04 Sun Microsystems, Inc. Method, system, and program for managing access to a device by device specific components and operating system specific components
TW200410140A (en) * 2002-12-03 2004-06-16 Via Tech Inc An initialization process in a device driver
US7281208B2 (en) * 2004-11-18 2007-10-09 Microsoft Corporation Image stitching methods and systems
US20070076750A1 (en) * 2005-09-30 2007-04-05 Microsoft Corporation Device driver interface architecture
US20070201059A1 (en) * 2006-02-28 2007-08-30 Radzykewycz Tim O Method and system for automatically configuring a device driver
US7930459B2 (en) * 2007-09-28 2011-04-19 Intel Corporation Coherent input output device
US8327101B2 (en) * 2008-02-01 2012-12-04 International Business Machines Corporation Cache management during asynchronous memory move operations
US8245004B2 (en) * 2008-02-01 2012-08-14 International Business Machines Corporation Mechanisms for communicating with an asynchronous memory mover to perform AMM operations
US8275963B2 (en) * 2008-02-01 2012-09-25 International Business Machines Corporation Asynchronous memory move across physical nodes with dual-sided communication
US8356151B2 (en) * 2008-02-01 2013-01-15 International Business Machines Corporation Reporting of partially performed memory move

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5475836A (en) * 1987-04-01 1995-12-12 Lotus Development Corporation Interface for providing access to external data sources/sinks
US5157384A (en) * 1989-04-28 1992-10-20 International Business Machines Corporation Advanced user interface
EP0419064A3 (en) * 1989-09-22 1992-08-05 International Business Machines Corporation Computer system having apparatus for providing pointing device independent support in an operating environment
CA2010591C (en) * 1989-10-20 1999-01-26 Phillip M. Adams Kernels, description tables and device drivers
US5179666A (en) * 1990-06-07 1993-01-12 Unisys Corporation Block oriented peripheral device interface
US5265252A (en) * 1991-03-26 1993-11-23 International Business Machines Corporation Device driver system having generic operating system interface
US5319751A (en) * 1991-12-27 1994-06-07 Intel Corporation Device driver configuration in a computer system

Also Published As

Publication number Publication date
US5701483A (en) 1997-12-23
EP0752646A3 (en) 2000-02-23
EP0752646B1 (en) 2002-03-27
DE69620062D1 (de) 2002-05-02
EP0752646A2 (en) 1997-01-08
DE69620062T2 (de) 2002-11-14

Similar Documents

Publication Publication Date Title
JPH09212444A (ja) ホストコンピュータ間におけるデバイスドライバの可搬性を実現するための方法および装置
US5459867A (en) Kernels, description tables, and device drivers
US5355498A (en) Method and apparatus for booting a computer system without loading a device driver into memory
US6003112A (en) Memory controller and method for clearing or copying memory utilizing register files to store address information
US4403283A (en) Extended memory system and method
US5577230A (en) Apparatus and method for computer processing using an enhanced Harvard architecture utilizing dual memory buses and the arbitration for data/instruction fetch
US5062042A (en) System for managing data which is accessible by file address or disk address via a disk track map
US6260081B1 (en) Direct memory access engine for supporting multiple virtual direct memory access channels
US6298399B1 (en) System for managing input/output accesses at a bridge/memory controller having a status register for recording cause of interrupt
JPS61190638A (ja) 仮想計算機のフアイル制御方式
JP2000500601A (ja) 動的プログラム可能なモード切換えディバイスドライバアーキテクチャ
EP0205943B1 (en) Composite data-processing system using multiple standalone processing systems
US6745320B1 (en) Data processing apparatus
US5146605A (en) Direct control facility for multiprocessor network
US4621319A (en) Personal development system
US20070201059A1 (en) Method and system for automatically configuring a device driver
US6684395B2 (en) Multiple image dynamic bind and load procedure for a multi-processor
CN111857839A (zh) 一种基于Linux的PXI/PXIe总线设备驱动系统
JPS6364133A (ja) 情報処理システム
CN1312583C (zh) 仿真装置和仿真方法
US6295587B1 (en) Method and apparatus for multiple disk drive access in a multi-processor/multi-disk drive system
US5504920A (en) Video driver system for communicating device specific primitive commands to multiple video controller types
US7660939B2 (en) Operating system arrangement for flexible computer system design
EP0316251B1 (en) Direct control facility for multiprocessor network
Radovici et al. Service Capsules