JPH0619753B2 - 通信インタフェースプロトコル - Google Patents

通信インタフェースプロトコル

Info

Publication number
JPH0619753B2
JPH0619753B2 JP62504264A JP50426487A JPH0619753B2 JP H0619753 B2 JPH0619753 B2 JP H0619753B2 JP 62504264 A JP62504264 A JP 62504264A JP 50426487 A JP50426487 A JP 50426487A JP H0619753 B2 JPH0619753 B2 JP H0619753B2
Authority
JP
Japan
Prior art keywords
job
driver
call
information
data structure
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
JP62504264A
Other languages
English (en)
Other versions
JPH02500059A (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.)
AT&T Corp
Original Assignee
AT&T 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 AT&T Corp filed Critical AT&T Corp
Publication of JPH02500059A publication Critical patent/JPH02500059A/ja
Publication of JPH0619753B2 publication Critical patent/JPH0619753B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/387Information transfer, e.g. on bus using universal interface adapter for adaptation of different data processing systems to different peripheral devices, e.g. protocol converters for incompatible systems, open system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation

Landscapes

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

Description

【発明の詳細な説明】 技術分野 本発明はコンピュータシステム、特に入出力(I/O)
制御構造のようなコンピュータシステムの制御構造とこ
のようなシステムの上記制御構造の間で通信を実行する
方法に関する。
発明の背景 通信バスはディスク、テープ、プリン他その他の周辺装
置をコンピュータに接続する場合に代表的に使用され
る。種々の周辺装置を−通常異る製造会社で作られる−
を種々のコンピュータ−これも他の製造会社で作られる
−に接続して使用できるようにするためには周辺装置を
コンピュータに接続するためのある種のバスは標準化さ
れている。このような標準化されたバスの例としては小
形コンピュータシステムインタフェース(SCSI)バ
スがある。
コンピュータがその周辺装置と通信できるようにするた
めには、コンピュータは代表的には周辺装置ドライバあ
るいはターゲットドライバと呼ぶ制御機構を有してい
る。装置ドライバはディスクあるいはテープのような特
定の種別の製造を制御する。これは要求者−例えば、コ
ンピュータで実行されているユーザプロセスのようなも
の−からの入出力動作の要求を受信して、装置が所望の
動作を実行するために必要なコマンドを発生し、通信バ
スを通して装置に対してコマンドを送出し、バスを通し
て装置からの応答を受信し、要求者に対して応答を返送
する。
装置ドライバはその装置が接続されているコンピュータ
の他の制御メカニズムの環境で動作し、従ってこれとイ
ンタフェースしなければならない。このような制御メカ
ニズムの例としては SCSIバスをI/Oバスすなわちコンピュータのシス
テムバスにインタフェースするハードウェアユニットを
制御するホストアダプタインタフェースがある。このよ
うな制御メカニズムはコンピュータごとに異るのが普通
であり、それが装置ドライバと通信する方法も異ってい
る。従って、周辺装置はもしこれらのコンピュータが同
一の標準バスを使用していれば、変更なしに多数の異る
コンピュータと接続して使用できるのに対して、その装
置の装置ドライバはこのようには接続できず、各々の新
しい環境ごとに設計をやり直さなければならない。SC
SIバスのような標準バスは周辺装置のポータビリティ
の欠如の問題を解決することはできるが、これらの装置
の装置ドライバのポータビリティ欠如の問題を解決する
ことはできない。さらに、装置ドライバの設計はそれが
協同動作しなければならない環境によって要求されるや
りとりのために非常に複雑なものとなる。従って、この
分野における問題は、異るコンピュータの間の周辺装置
ドライバのポータビリティの欠如と、多くのコンピュー
タが単純なドライバの設計をサポートできないというこ
とである。
発明の要約 本発明は従来技術のこれらの問題と欠点を解決すること
を目的としている。本発明に従えば、種々のコンピュー
タで使用するための周辺装置ドライバのための標準通信
インタフェースプロトコルが規定される。プロトコルは
装置ドライバと種々のコンピュータの制御機構によって
使用され、周辺装置のジョブの動作のために相互に通信
する。周辺装置ドライバはこのようにすれば、本質的に
変更なしに標準インタフェースプロトコルを提供する任
意のコンピュータの間で移動することができる。このプ
ロトコルはこのようなポータビリティを実現するために
周辺装置ジョブを実行する方法と装置において使用され
る。さらにインタフェースプロトコルは単純なドライバ
の設計をサポートするために最適化されている。
通信インタフェースプロトコルはコンピュータのような
システムの中で装置ジョブを実行するために装置ドライ
バ−実施例ではターゲットドライバと呼ばれる−インタ
フェース装置−実施例ではホストアダプタトとホストア
ダプタドライバを含むの間で使用される。システムは周
辺装置と周辺装置を制御するための装置ドライバと、装
置を装置ドライバに接続するためのインタフェース装置
を含む。インタフェースプロトコルはドライバとインタ
フェース装置で共用されるデータ構造を含んでいる。こ
れはまた複数の関数コールを含んでいる。第1の予め定
められた関数コールは装置ドライバによってインタフェ
ース装置に対して行なわれ、ドライバに対してデータ構
造を割当てる。第2の予め定められた関数コールは装置
ドライバによってインタフェース装置に対して行なわ
れ、装置と協同動作してそのドライバのデータ構造に記
憶された情報によって規定される周辺装置ジョブの実行
を行なう。第3の関数コールはインタフェース装置から
装置ドライバに対して行なわれ、ドライバによってデー
タ構造に記憶された情報によって指定されるどのような
関数に対してでも作用するコールとなる。この関数はジ
ョブの実行の完了時に呼び出される。第4の予め定めら
れた関数コールは装置ドライバからインタフェース装置
に対して行なわれ、ドライバに対するデータ構造の割当
てを解除する。
装置ドライバからインタフェース装置への関数コールは
標準化されているから、インタフェース装置の構造やイ
ンタフェース装置がサービスを提供する方法に関係なく
同様のサービスを得るためには装置ドライバはどのよう
なインタフェース装置に対してでも同一の関数コールを
発生すればよい。データ構造の割当てと解除、ジョブの
実行のようなサービスの提供はホストコンピュータに依
存するが、新らしいプロトコルによるこれらのサービス
に対するコールはホストコンピュータとは独立になる。
また装置ドライバとインタフェース装置の間ではデータ
は予め定められた標準の方法とデータ構造で授受されな
ければならない。有利なことに、関数コールは高レベル
の(すなわち抽象化された)コールとなっていて、種々
の装置ドライバの設計の要求に適合するように規定され
ており、これを複雑でない方法で実行するようになって
おり、これによって通信インタフェースプロトコルを種
々の装置ドライバで使用できるようにして、ドライバの
設計上の自由度を与え、単純なドライバの設計で良いよ
うにしている。さらに、インタフェース装置によって装
置ドライバに対して行なわれる関数コールは装置ドライ
バによって指定されるから、ドライバの設計の自由度は
さらに向上し、装置ドライバをインタフェース装置の予
め定められた関数コールの制約で動作しないでも良いよ
うにする。装置ドライバをこのようなインタフェースに
よって課せられる制約から自由にすることによってドラ
イバの設計は大幅に簡単化される。
本発明のプロトコルを使用することによって装置ドライ
バの設計はホストコンピュータ依存ではなくなるから、
考え方としては周辺装置の製造会社は周辺装置と共にそ
のプロトコルを使用する複数種類のコンピュータのどれ
とでも使用できる一種類の装置ドライバを提供するよう
にすることもできる。そうすればコンピュータの製造会
社もユーザも、複数のコンピュータの内のどれかによっ
て使用したい周辺装置ごとに自分で装置ドライバを開発
する必要はなくなる。
図の例では、通信インタフェースプロトコルはさらに装
置ドライバからインタフェース装置に対して行なわれる
第5の予め定められた関数コールを含み、ジョブを定義
するためのアドレス情報を翻訳するためのデータ構造情
報とドライバによってデータ構造に蓄積されるジョブを
記憶するために使用する。このコールによってバーチャ
ルアドレシングシステムを使ってプロトコルの使用を容
易化し、装置ドライバがそれが動作するシステムのアド
レス方法について考慮しなくてもよいようにする。
さらに、実施例においては、上述した第2の関数コール
はデータ構造によって定義されるジョブを他のまだ実行
されていないジョブと共に待ち行列に並べて、そのジョ
ブが並べられた順序で実行されるようにするエンキュー
コールを含んでいる。また通信インタフェースプロトコ
ルはさらに第5の予め定められた関数コールを含み、−
上述したデータ構造によるかそれとも別のデータ構造に
よるかのいずれかの−データ構造ドライバによって記憶
された情報によって定義された待合せのないジョブの実
行を行なう。この実行は待ち合わせたジョブの実行の前
に行なわれることになる。
通信インタフェースプロトコルのこのような機能によっ
て周辺装置と通信するための待ち合わせアクセスプロト
コルを使用でき、同時に診断や保守の目的で必要なとき
には装置に対してほとんどただちにアクセスすることも
できる。
特許請求の範囲に示されているように本発明に従えば、
インタフェース装置を通して周辺装置を制御する装置ド
ライバはインタフェース装置と共同動作して周辺装置ジ
ョブを実行するためのプロトコルを使用するための以下
の機能要素を含んでいる。すなわち周辺装置ジョブに対
してデータ構造を割当てるためにインタフェース装置に
対してコールを発生する手段、データ構造の割当てに応
動してデータ構造中に周辺装置ジョブを定義する第1の
情報とジョブの実行の完了時に出されるコールを指定す
る第2の情報を記憶する手段、周辺装置と協動して第1
の情報によって規定されるジョブの実行のためにインタ
フェース装置に対して第2のコールを発生する手段、イ
ンタフェース装置からの第2の情報によって指定された
コールの受信に応動して、ドライバからデータ構造の割
当てを解除するためのコールをインタフェース装置に対
して発行する手段である。
図示の実施例においては、第1の情報はアドレス情報を
含み、ドライバはさらに、アドレス情報を翻訳するため
にデータ構造中に記憶するためにインタフェース装置に
対して第2のコールの前に第4のコールを発行する手段
を有する。
また図示の実施例では、ドライバは第2の情報によって
指定されたコールのインタフェース装置からの受信に応
動して、ジョブの実行が成功であったか、不成功であっ
たかを判定するためにインタフェース装置によってデー
タ構造中に記憶されるジョブの実行に関する第3の情報
を調べるための検査手段を含んでいる。経験的には、ド
ライバはまたこの検査手段と共同してジョブの完了に成
功したか、不成功であったかの通知を提供する手段を含
んでいる。このようにして、ドライバはジョブの要求元
に対してジョブの状態を報告することができる。
さらに図示の実施例においては、第2のコールは第1の
情報によって規定されたジョブを待ち合わせるためのコ
ールであり、未実行のジョブがあるときには、ジョブが
待ち合わせに入った順序で実行するようになっており、
ドライバはさらに判定手段によってジョブの実行が不成
功であると判定されたときにはこれに応動して(a)失敗
したジョブの再実行のためあるいは(b)第2のデータ構
造によって記憶された情報によって定められる第2の待
合せていないジョブの実行のいずれかを、現在実行して
いないいずれかの待合せ中のジョブの実行に先立って、
インタフェース装置に対して発行する手段を含んでい
る。これによって、ドライバに対して失敗したジョブを
再実行するかあるいは装置を待合わせているアクセスプ
ロトコルをバイパスすることによって保守および診断ジ
ョブを行なうかの機能を付与することになる。
さらに請求の範囲中の発明に従えば装置ドライバは上述
した構成要素の機能であるステップを実行することによ
って周辺装置ジョアを対応して実行する。
逆に、ドライバによって周辺装置ジョブを実行するため
に装置ドライバを装置コントローラにインタフェースす
る装置は次のような構成要素を含んでいる。すなわち装
置ドライバからの第1のコールを受信して、ドライバに
対してデータ構造を割当てる手段、装置ドライバからの
第2のコールの受信に応動して装置と協同して、装置ド
ライバのデータ構造中に記憶された情報によって規定さ
れる周辺装置ジョブを実行する手段、ジョブの完了時に
装置ドライバのデータ構造に記憶された情報によって指
定されたコールを装置ドライバに対して発行する手段、
および装置ドライバからの第3のコールの受信に応動し
て、ドライバのデータ構造の割付けを外す手段である。
図示の実施例においては、インタフェース装置はさらに
装置ドライバからの第4のコールの受信に応動してデー
タ構造中に、ドライバのデータ構造に記憶されるアドレ
ス情報を翻訳するためのデータ構造情報を記憶する手段
を含んでいる。
また図示の実施例においては、インタフェース装置は、
ドライバに対して要求されたジョブの実行の成功に関す
るフィードバックを与えるためにジョブの実行に関する
情報をデータ構造中に記憶する手段を含んでいる。
さらに図示の実施例においては、第2のコールに応答す
るジョブ実行手段は他の実行されていないジョブと共に
データ構造中に記憶された情報によって定義される周辺
装置ジョブを待ち合せる手段と、待ち合わせているジョ
ブをそれが待ち行列に入った順序でその装置と協同して
実行する手段を含んでいる。次にインタフェース装置は
装置ドライバからの第4のコールに応動して待ち合わせ
たジョブの実行の前に記憶された情報によって規定され
る待ち合わせをしないジョブを実行する手段を有する。
コールは上述したデータ構造中の情報によって規定され
るジョブの再実行のためか、あるいは第2のデータ構造
中の情報によって定義される他のジョブの実行のための
いずれかのためである。
本発明に従うインタフェース装置は上述した構成要素の
機能であるステップを実行することによって対応して周
辺装置ジョブを実行する。
本発明に従うシステムは−一例としてはコンピュータシ
ステムであるが−周辺装置と、装置を制御するための上
述した装置ドライバと、ドライバを装置にインタフェー
スするための上述したインタフェースを含んでいる。こ
のようなシステムで周辺装置ジョブを実行する方法は共
に上述したインタフェース装置によって実行されるステ
ップと組合わせて装置ドライバによって実行されるステ
ップを含んでいる。
本発明の彼此の利点と特徴は図面を参照した以下の実施
例の説明により明らかになるものである。
図面の簡単な説明 第1図は本発明の図示の実施例を含むコンピュータシス
テムのブロック図; 第2図はカーネルの要求に応動する第1図のターゲット
ドライバの動作のフロー図; 第3図および第4図は割込みに応動する第1図のターゲ
ットドライバの動作のフロー図; 第5図は“要求センス”ジョブからの割込みに応動する
第1図のターゲットドライバの動作のフロー図; 第6図はデータ構造を割当てるためのコールに応動する
第1図のホストアダプタドライバの動作のフロー図; 第7図はアドレス翻訳を行なうためにコールに応動する
第1図のホストアダプタドライバの動作のフロー図; 第8図は実行のためにジョブを送出するコールに応動す
る第1図のホストアダプタドライバの動作のフロー図; 第9図はイメディエートコマンドあるいは関数を送出す
るための第1図のホストアダプタドライバの動作のフロ
ー図; 第10図はデータ構造の割当てを取り消すための第1図
のホストアダプタドライバの動作のフロー図; 第11図はイメディエートコマンドのためのジョブのデ
ータ構造のブロック図; 第12図は関数のためのデータ構造のブロック図; 第13図は第1図のホストアダプタの関連する動作のフ
ロー図; 第14図は第9図の“リターンジョブ”のフロー図; 第15図は第1図のホストアダプタのタイムアウト関数
のフロー図である。
詳細な説明 第1図はAT&T情報システム者の3Bマイクロコンピ
ュータのようなコンピュータシステムの基本的ブロック
図である。コンピュータシステムは中央処理ユニット
(CPU)16を含み、これがメモリー15と接続され
て中央制御(CC)9を形成する。CPU16とメモリ
15には通信できるように入出力(I/O)バス11が
接続されており、これを通して周辺装置18はCPU1
6およびメモリ15と通信する。
装置18は通常のものであって、例えばプリンタ、ディ
スクドライブ、テープのようなものである。装置18は
ターゲット13として構成されている。ターゲット13
は、例えば複数のディスクのような同一のタイプのテバ
イスを1つあるいはそれ以上持ち、ターゲットコントロ
ーラ17は装置18を制御する。
複数のターゲット13は通信のために装置バス12に接
続されている。ターゲットコントローラ17はバス12
のプロトコルによって要求される方法で、装置18を装
置バス12にインタフェースする。この図示の例では、
バス12は上述したSCSIバスであり、1985年1
2月16日の米国標準案X3T9.2/82−2版。17
Bに記述されている。
バス12とそれに接続されたターゲット13はホストア
ダプタ10によってバス11にインタフェースされてい
る。ホストアダプタ10はバス11と12の間で流れる
通信のプロトコルを一方のプロトコルから他方に変換
し、二つのバスの間を流れる通信のバッファのような他
の活動を実行する。ホストアダプタ10のような装置は
当業者には周知である。図の例では、ホストアダプタ1
0はNCR社の5385形SCSIプロトコルコントロ
ーラによっている。複数のホストアダプタがバス11に
接続されていてもよく、各々が異るデバイスバス12に
接続されていて、ひとつあるいはそれ以上のターゲット
13をバス11にインタフェースする。この代りに、複
数のホストアダプタをバス12に接続し、その各々を異
るコンピュータシステムのI/Oバス11に接続しても
よい。
バス11に対するアクセスを1時には1個のホストアダ
プタ10あるいはCPU16に制限するために、第1図
のコンピュータシステムはアービタ14を含んでいる。
アービタ14は同様に在来のデバイスである。
中央制御9は複数のソフトウェア要素20乃至23を含
んでいる。これらには、第1図のコンピュータシステム
の応用を規定するユーザプロセス20もある。プロセス
は第1図のコンピュータシステム中の制御の基本的なエ
ンティティとなる。各プロセスはこの例ではメモリ15
中の個有のデータ空間、CPU16中のレジスタ他、お
よびメモリ15中に記憶され多くの場合他のプロセスと
共有されるコード集合を含んでいる。プロセスはまたメ
モリ15中の共通のデータ空間にアクセスする。プロセ
ス20はCPU16で実行される。
ユーザプロセス20はオペレーティングシステムのカー
ネル21のプリミティブに対するコールによるターゲッ
ト13との通信を含む種々の機能を実行する。オペレー
ティングシステムはすべての資源の1次的な割当てを含
む主制御プログラムである。カーネルはメモリ15に常
駐するオペレーティングシステムの部分であり、ひとつ
あるいはそれ以上のルーチン、すなわち、プログラムか
ら成る。第1図に示す実施例では、オペレーティングシ
ステムはAT&T社のUNIXオペレーティングシステ
ムである。
カーネル21は直接ターゲット13と通信することはな
いが、これを実行するためにターゲットドライバ22を
コールする。ターゲットドライバ22は、制御プログラ
ムであり、その各々は異る種類の装置を制御し、これら
の装置に適切な方法で、すなわち、装置固有の方法でそ
れが制御する装置と通信する。カーネル21から受信さ
れた要求をターゲットコントローラ17で実行できるジ
ョブに変換し、ジョブに関連した高レベルの誤り回復機
能を実行し、ジョブの結果をカーネル21に通知するの
はターゲットドライバ22の仕事である。ターゲットド
ライバ22はターゲットコントローラ17を通して装置
バス12の標準通信プロトコルによって決められる方法
で装置18と通信する。
ターゲットドライバ22とターゲット13の間にはI/
Oバス11とホストアダプタ10が設けられており、こ
の両者はコンピュータシステムごとに異っている。ター
ゲットドライバ22をI/Oバス11とホストアダプタ
10の構造から独立にするために、ターゲットドライバ
22はホストアダプタドライバ23とホストアダプタ1
0を通して間接にターゲット13と通信する。ホストア
ダプタドライバ23はターゲットドライバ22に対して
標準の通信インタフェース24を提供し、これによって
ターゲットドライバ22から異るプロセッサのI/Oバ
ス11とホストアダプタ10の間に存在する構造とプロ
トコルの差を隠蔽するプログラムである。インタフェー
ス24はまた単純なターゲットドライバ22の設計をし
ても、多くのタイプの装置を制御する異るターゲットド
ライバが作れるように最適化されている。この実施例に
おいては、インタフェース24はSCSIドライバイン
タフェース(SDI)と呼ばれる。インタフェース24
はターゲットドライバ22に対してホストアダプタによ
って提供される関数と、ドライバ22とドライバ23の
間で共有されるデータ構造、ターゲットドライバ22と
ホストアダプタドライバ23によって提供される割り込
み関数を含む通信プロトコルである。
ホストアダプタドライバ23はターゲットドライバ22
がターゲットコントローラ17と通信できるようにする
ルーチンの集合から成るプログラムである。ホストアダ
プタドライバ23はバス11を経由するCC9とホスト
アダプタの間の通信のプロトコルを取り扱かう。これは
ホストアダプタ10における装置待ちのコマンドの責任
を持つが、これはターゲットコントローラ17およびバ
ス12上の装置18とは独立している。機能的にはホス
トアダプタドライバ23は単一のユニットのように見え
るが、その実際のインプリメンテーションは例えばCC
9とホストアダプタ10にまたがるいくつかのユニット
に分割してもよい。
またホストアダプタドライバ23とホストアダプタ10
はI/Oバス11および装置バス12と共にターゲット
ドライバ22をターゲット13にインタフェースする。
ターゲットドライバ22がカーネル21からI/O要求
を受信したときには、これは要求されたインタフェース
コマンド24をホストアダプタドライバ23に送る。イ
ンタフェース24はターゲットドライバ22をホスト機
械に依存しないようにするためである。これに応動して
ホストアダプタドライバ23はこの例では待ち合わせア
クセスプロトコルを経由してI/Oコマンドを発行する
動作を含むホストに依存した(機種依存)の動作を実行
する。ホストアダプタ10はデバイスバス12を経由し
てターゲットコントローラ17に対して発行されたコマ
ンドを通す。ターゲットコントローラ17は装置18へ
のコマンドを実行する。
ジョブが完了すると、ターゲットコントローラ17は装
置バス12を通してコマンド完了ステータスを返送す
る。ホストアダプタ10は必要に応じて誤り回復を行な
い、ホストアダプタドライバ23に対して完了ステータ
スを返送する。ホストアダプタドライバ23は完了ステ
ータスを受信し、インタフェース24を通してターゲッ
トドライバ22に対して完了通知を与える。ターゲット
ドライバ22は完了通知を受信して、必要な処置を実行
し、カーネル21に対してジョブ完了ステータスを与
え、これによってジョブを開始したユーザプロセス20
に対して報告がゆくようにする。
情報を相互に伝えるために、ホストアダプタドライバ2
3とターゲットドライバ22はインタフェース24のデ
ータ構造を使用する。データ構造はデータ項目のグルー
プを配置し、その記憶位置を決め、予め定められた方法
でアクセスできるようにし、予め定められたデータサイ
ズ(例えば、16あるいは32ビット)を持つようにな
っている。データ構造はメモリ15に常駐している。こ
の図示の実施例においては、データ構造はSCSIブロ
ック(SB)と呼ばれる。この例ではSBには3タイプ
がある。SCSI制御ブロック(SCB)、直接SCSI制
御ブロック(ISCB)それにSCSI関数ブロック
(SFB)である。SCBとISCBは第11図に示してあ
り、番号1100で示されている。SFBは第12図に
示してあり、番号1200で示される。
第11図を参照すれば、SCBはターゲットドライバ2
2とホストアダプタドライバ23が使用する主要なデー
タ構造である。SCBは各々32ビットのデータサイズ
を持つ複数のフィールド1101−1114を有してお
り、I/Oジョブを実行するためにホストアダプタドラ
イバ23とターゲットコントローラ22が必要とするす
べての情報を含む。さらにSCBはホストアダプタドラ
イバ23とホストアダプタ10の間の通信に使用する領
域1115を含んでいる。SCBは待ち合わせアクセス
プロトコルの装置ジョブ待行列を通して通過する“通
常”制御ブロックのために使用される。
ISCBデータ構造はSCB構造と本質的に同一である
が、“直接”制御ブロックに使用される。これは待ち合
せアクセス制御のジョブ待行列を通してではなくただち
に使用されるブロックである。
SB TYPEフィールド1101はブロックのタイプ
すなわち第11図でSCBであるかISCBであるかを
示す。
SC COMP CODEフィールド1102はジョブ
の現在のステータスを示す完了コードである。ジョブが
終了すると−それが成功であっても不成功であっても−
このコードは誤りが検出されなかったか、あるいは検出
された誤りの原因を示す。図示の実施例においては、こ
のフィールドは次のような値をとることができる。
SDI NOALLOC:このブロックがホストアダプ
タドライバに割当てられていないことを示す。ターゲッ
トドライバはこのコードを検出してはならない。SC
COMP CODEはSBが解放されたときこの値に設
定される。
SDI ASW:全部良かったように見えるというこ
と。ジョブが正常に終了し、誤りが検出されなかったこ
とを示す。
SDI LINKF0:このリンクコマンドが正常に終
了し、装置バス(SCSI)のコマンドフラグビットが
“0”であったことを示す。
SDI LINKF1:このリンクコマンドが正常に終
了し、装置バス(SCSI)のコマンドフラグビットが
“1”であったことを示す。
SDI QFLUSH:ターゲットドライバがその装置
に対する待ち行列を空にすることを要求したとき、待ち
行列中のすべてのジョブはこのコードを付けて戻され
る。
SDI ABORT:このジョブがターゲットドライバ
によってアボートされたことを示す。
SDI RESET:ホストアダプタドライバが装置ジ
ョブのリセットを検出したときに、これはすべてのアウ
トスタンディングと待ち行列中のジョブにこのコードを
付けてターゲットドライバに返す。ターゲットドライバ
がターゲットコントローラをリセットすることを要求す
るときにもこのコードが返される。
SDI CRESET:ホストアダプタドライバがこの
ジョブについて動作していたときに、重大なプロトコル
誤りが検出された。このときにはホストアダプタドライ
バは装置バスをリセットする。SDI V2PERR:
仮想アドレスから物理アドレスへの変換が失敗したこと
を示す。例えば、もし要求されたページ表が存在しない
ときにこの誤りが返送される。
SDI TIME:ホストアダプタドライバでジョブが
時間切れになったときに返送される。
SDI NOTEQ:ホストアダプタドライバで装置が
存在しないことが合ったときに返送される。
SDI HAERR:ホストアダプタドライバとホスト
アダプタの間に何かの問題が生じたことを示す。考えら
れる理由はI/Oバスパリティの誤り、ホストアダプタ
の誤動作である。
SDI MEMERR:ジョブのデータ領域をアクセス
しているときにメモリ誤りが存在したことを示す。
SDI SBUSER:ホストアダプタが装置バスで問
題を検出し、すべての回復動作手段に失敗したときにセ
ットされる。バスドライバが故障したようなコントロー
ラがあるとこれが生ずる原因になる。
SDI CKSTAT:ステータスフィールドをチェッ
クすべきであることを示す。ターゲットコントローラが
良好以外のステータスを返送したときにこの誤りコード
が返送される。
SDI SCBERR:SCBが誤りあるいは無効なタ
イプを含むときに返送される。
SDI OOS:サービスしていないデバイスにジョブ
が投入されたときに返送される。
SDI NOSELE:ホストアダプタドライバがター
ゲットコントローラを選択しようとしてタイムアウトし
たことを示す。
SDI MISMAT:ターゲットコントローラがSC
Bによって与えられたデータと一致しない動作を実行し
ようとしたことを示す。例えば、コントローラがデータ
入力転送しようとし、 SCB READフラグはSC MODEにセットされ
ていないときなどである。
SDI PROGRESS:ジョブはまだ完了していな
いことを示す。
SC COMP CODEはSDI IDMDおよびS
DI SENDコマンドによってこの値に設定される。
SDI UNUSED:ターゲットドライバが制御構造
を使用していないときに使用される。ホストアダプタド
ライバがSBをターゲットドライバのために割当てたと
きにSC COPM CODEをこの値にセットする。
SDI ONEIC:ひとつ以上の直接要求が送られた
ときに戻される。
SDI SFBERR:SFBのフィルードに誤りがあ
ることを示す。
上述した完了コードはすべて完了コードのタイプを示す
ビットフィールドを有している。可能な完了コードの例
を4つ挙げると次のようになる。
SDI ERROR:誤りがあったことを示す。
SDI RETRY:誤りはこジョブとは多分関係ない
ので、ジョブを再試行して良いことを示す。
SDI MESS:この事象に関するメッセージがコン
ソールにプリントされて誤り記録に入れられていること
を示す。
SDI SUSPEND:この装置に関するジョブ処理
をホストアダプタドライバが中断したことを示す。
次に第11図の構造のフィールドの説明を続ける。
SC INTフィールド1103はターゲットドライバ
の割込みハンドラへのポインタである。割込みハンドラ
はターゲットドライバに対してジョブが完了したことを
示すホストアダプタドライバによって呼ばれる関数であ
る。これは完了したジョブのSBを指すひとつの変数と
共に呼び出される。
もしSC COMP CODEフィールドによってSD
SUSPENDが表示されると、ホストアダプタは
その論理ユニットに対するコマンドの送信を止め、ター
ゲットドライバが待行列を再開する責任を持つことにな
る。もしSC INTフィールドがNULLであれば、
ホストアダプタはターゲットドライバの関数を実行しな
い。もしコマンドを送出したコールの間にジョブが完了
すれば、割込みハンドラはホストアダプタドライバによ
ってコールされることはない。ホストアダプタがSCB
の中で変化するフィールドはSC COMP COD
E、SC TIMEおよびSC STATUSだけであ
る。リンクコマンドが使用されたときには、各コマンド
はリンクのその部分が完了したときにSC INTを通
して返送される。
SC STATUSフィールド1100はターゲットコ
ントローラによって返送される値である。CHECK
CONDITIONあるいはBUSYのステータスが返送された
ときには、ホストアダプタはその装置に対する待ち合わ
せ中のコマンドの処理を中断する。もしINTERME
DIATEステータスが戻されたときには、ホストアダ
プタドライバはこの制御ブロックをターゲットドライバ
に戻し、次のブロックにリンクする。
SC CMDPTフィールド1104はターゲットコン
トローラのコマンドブロックのスタートを指す仮想アド
レスであり、ブロックの大きさはSC CMDSZフィ
ールド1112によって示される。SC CMDPTの
コマンドブロックはホストアダプタドライバによって割
込まれることはない。
SC DATAPTフィールドはコマンドのデータ領域
のスタートを指す仮想アドレスであり、、領域の大きさ
はSC DATASZフィールド1113によって示される。
SC LINKフィールド1111はリンクされたコマ
ンドで使用される。ターゲットコントローラがINTERMED
IATEステータスを返送したとき、ホストアダプタドライ
バはリンクポインタを使用して次の制御ブロックに進
む。これによってターゲットドライバが各コマンドごと
に完全に異ったポインタを規定することができる。リン
クコマンドが使用されるときには、SC MODEフィ
ールドのLINKビットをセットしておかなければなら
ない。
SC RESIDフィールド1114はデータバッファ
で指示されているのに比べて、ターゲットコントローラ
から何バイト余計に要求されているかを示す。これは部
分でブロック転送に使用される。ターゲットコントロー
ラから受信された残りのバイトはホストアダプタドライ
バによって捨てられる。ターゲットコントローラによっ
て要求された残りのバイトは0として送られる。
SC TIMEフィールド1107はジョブが完了する
までにホストアダプタドライバが待たなければならない
時間をミリ秒で示す。この時間計測はコマンドがターゲ
ットコントローラに送られたときに開始され、タイマが
時間切れになる前に完了ステータスを返送しなければな
らない。もしタイムアウトが生じたときには、ホストア
ダプタドライバはターゲットコントローラに対してAB
ORTメッセージを送り、ターゲットドライバに対して
ジョブを戻す。そのターゲットコントローラに対する待
ち合わせ中のジョブの処理はターゲットドライバによっ
てそれが再開されるまで中断される。もしSC TIM
Eフィールドが0であれば、ジョブは計時されない。S
TIMEの返送された値はジョブに費した実際の時
間を表わしている。
SC DEVフィールド1108は装置バス上の装置の
アドレスである。アドレスはカーネルによってターゲッ
トドライバに与えられた装置の番号と論理ユニット番号
である。ホストアダプタドライバは装置番号からターゲ
ットコントローラとホストアダプタアドレスをデコード
する。論理ユニット番号はターゲットコントローラの下
にある特定の装置を識別する。
SC WDフィールド1106はターゲットドライバが
使用する目的で設けられている。このフィールドはホス
トアダプタドライバによって調べられることも変更され
ることもない。
SC MODEフィールド1109はこのジョブのため
に特別なモードがあればこれを示す。この実施例ではこ
のフィールドの有効な値は次に示すようになる。
SCB WRITEは読み出さないジョブを示す。
SCB READはデータを読むジョブを示す。
SCB LINKは装置バス(SCSI)コマンドのリ
ンクを用いていることを示す。
SCB HAADはホストアダプタドライバによってア
ドレスが供給されることを示す。
SCB PARTBLKは部分ブロック転送を示す。
SCB PARTBLKがモードフィールドにセットさ
れていると、データ領域は完全な転送を規定しない。こ
の場合には、SC RESIDフィールドが転送される
べきバイトの数を示す。この余分のバイトはシステムメ
モリと装置バスの間では転送されることはない。この転
送が書き込みであれば、ターゲットコントローラに対し
ては0が送信される。
このフィールドに加えて、構造1100はホストアダプ
タドライバからホストアダプタへの情報の通信に利用さ
れる領域を含んでいる。ターゲットコントローラはこの
領域のことは意識しない。
第12図を参照すれば、SFBはホストアダプタドライ
バ23に対して関数要求を出すために使用される。SF
BはISCBと同様の直接関数ブロックであり、ジョブ
待行列を通ることなく直接に取り扱かわれる。
SFBは複数のフィールド1201−1205、とホス
トドライバ23とホストアダプタ10の間の通信に使用
される領域を含む。フィールドは次のように定義されて
いる。
SB TYPEフィールド1201はブロックのタイプ
−第12図のSFBを示す。
SB COMP CODEフィールド1202はSCB
のSC COMP CODEフィールドと同じであっ
て、同一の値をとる。
SF INTフィールド(1203)とSF DEUフ
ィールド1204はSCB構造と同一の方法で使用さ
れ、SFB中でホストアダプタが変更するフィールドは
SB COMP CODEだけである。
SF FUNCフィールド1205は実行されるべき関
数を示す。図示の実施例においては、定義される関数は
次の通りである。SFB NOPF:何もしない関数を
示す。これはターゲットドライバが待ち行列を中断した
り再開したりしたいと考えるときだけに利用される。
SFB RESTM:はホストアダプタドライバがアド
レスされたターゲットコントローラに対してバス装置リ
セットメッセージを送ることを要求する。
SFB ABORTM:このコードが与えられたときに
ABORTメッセージがアドレスされた論理ユニットに送ら
れる。
SFB FLUSHRは論理ユニットのワーク待ち行列
をフラッシュすること要求する。
SFB RESUMEは正常のジョブ待行列を再開する
ことを示す。
SFB SUSPENDは正常のジョブ待行列を中断す
ることを示す。待ち行列を中断するとはターゲットドラ
イバによって待ち行列が再開されるまで正常なジョブは
論理ユニットには送られないことを示す。
これらのフィールドに加えて、構造1200は第11図
の領域1115に似た領域1206を含んでいる。
インタフェース24の機能と用途を説明するために、第
2図〜第5図のフローチャートは一般化されたターゲッ
トドライバ22の動作を示し、一方第6図−第10図の
フローチャートはホストアダプタドライバ23の動作の
関連する部分を示し、第13図第15図のフローチャー
トはホストアダプタ10の動作の関連する部分を示して
いる。ターゲットドライバの構造と動作の詳細はターゲ
ットドライバが制御するように設計されている装置のタ
イプと特性に依存している。インタフェース24の利点
はこれがターゲットドライバの各装置に保有な特徴とは
独立だということであり、従って多くのタイプの装置の
ターゲットドライバと共に使用できるということであ
る。ターゲットドライバの動作の装置固有の特徴は従っ
て本発明のここに述べた実施例とは関係ない。
第2図を参照すれば、図はカーネル21の要求に応動し
たターゲットドライバ22の動作を示している。ターゲ
ットドライバ22はカーネル21からのコールを受け、
ステップ200でI/Oジョブのような周辺装置ジョブ
を実行することをこれに要求する。I/Oジョブは、例
えば、ディスクあるいはテープのような記憶装置にデー
タファイルを読み書きする要求である。このようなコー
ルの一部として、カーネル21はターゲットドライバに
対してI/Oタスクを実行するのに必要な情報を利用で
きるようにする。この情報はI/Oジョブの宛先となっ
ているターゲット13を示す装置番号、ジョブを実行す
べきI/Oアドレス空間の仮想アドレス、装置に対して
転送すべきあるいは装置から得られたデータを記憶すべ
きデータブロックのメモリ15中のアドレスおよびデー
タブロック長を含んでいる。
このコールに応答して、ターゲットトライバ22はコー
ルの一部として与えられた情報を調べ、ステップ201
で要求の有効性を判定する。例えば、ターゲットドライ
バ22はアドレスとブロックの大きさが許容される範囲
に入っているかどうか、その要求の宛先であるターゲッ
ト13が依存するかどうかを検査する。もしステップ2
01の検査で要求が無効であることが示されると、ター
ゲットドライバ22はカーネル21に対してステップ2
16で失敗表示を戻す。しかし、もし要求が有効であれ
ば、ステップ202で、ドライバ22はSDI GET
BLK関数を呼ぶ。この関数コールはホストアダプタド
ライバ23によって提供されるインタフェース24の一
部である。SDI GETBLK関数はジョブのSBを
ターゲットドライバ22に割当てる。
SDI GETBLKコールに対するホストアダプタド
ライバ23の応答は第6図のフローチャートである。ス
テップ400でコールを受信すると、ホストアダプタド
ライバ23はステップ401で空きSBで利用できるも
のがあるかどうかをチェックする。例えば、ホストアダ
プタドライバ23は空きSBのリストを持っており、リ
ストが空きであるかをチェックする。
もしSBが利用できなければ、ホストアダプタドライバ
23はステップ402でSBが空きになるのを待つ。第
10図に示すように、SDI FREEBLKの実行に
よって、SBが利用できるようになる。この関数は先に
割当てられたSBを空きリストに返却する。もしブロッ
クが利用できるか、ブロックが利用できるようになる
と、ホストアダプタドライバ23はステップ403でタ
ーゲットドライバ22をSBに割当てる。本実施例で
は、ホストアダプタドライバ23はそれから割当てられ
たSBを除くことによってそのリンクリストの状態を更
新する。ホストアダプタドライバ23は次に割当てられ
たSBをステップ404でターゲットドライバ22に返
す。一例としてはメモリー15中のSBのポインタをタ
ーゲットドライバ22に戻す。
この代りにシステム中にターゲットドライバ22が1個
しか存在しないことも、各ターゲットドライバ22がそ
の使用のために専用になったSBのグループを持つこと
もある。このような場合には、各SBはそのユーザとし
て、それに関連したターゲットドライバ22をひとつだ
け持つ。ターゲットドライバに対するSBの割当てはこ
の場合には詳しく述べれば、コールの割当てを促したタ
ーゲットドライバのタスクのために利用できるSBのひ
とつを割当てることになる。
第2図に戻れば、これがステップ202でSDI GETB
LK関数を呼んだあと、ターゲットドライバ22はメモリ
15中にステップ203でターゲットコントローラのコ
マンドブロックを生成する。このブロックはそれを通し
てターゲットドライバ22がターゲットコントローラ1
7と通信し、特定のジョブを実行するためにそれに指示
するためのものである。ターゲットコントローラのコマ
ンドブロックは装置バス12の仕様によって定義され
る。(例えば、SCSI仕様)。本質的に、このブロッ
クはターゲットコントローラ17に対して、実行される
べき関数を指定する命令コード、それに対してその関数
を実行するべきターゲットコントローラ17によって制
御される装置18のひとつを識別する論理ユニット番
号、それに対して関数を実行するべきデータブロックを
識別するアドレス情報、データブロックの大きさ、それ
に制御フラグを含んでいる。
ステップ202でターゲットドライバ22によって得ら
れるSBは空であり、ターゲットドライバ22は第11
図のSCBからの情報でブロック204でターゲットド
ライバに情報を与える。本質的に、ターゲットコントロ
ーラはSBのSB TYPEにSCBを指定し、ステッ
プ203でそれが生成したターゲットコントローラのコ
マンドブロックへのポインタをSC CMDPTフィー
ルド1104に入れる。
SCBブロックを満たしたあとで、ターゲットドライバ
22はステップ205でSDI XLATE関数を呼ん
で、変数としてSCBに対してポインタを与える。この
関数コールはインタフェース24の一部である。SDI
XLATE関数はSCBによって与えられる仮想アド
レス(SC DATAPTフィールド1105)と大き
さ(SC DATASZフィールド1103)の翻訳情
報を与える。
ホストアダプタドライバ23のSDI XLATEコー
ルに対する応答は第7図のフローチャートに示されてい
る。ステップ500でコールを受信すると、ホストアダ
プタドライバ23はステップ501で翻訳に必要なプロ
セス依存情報(すなわち、I/Oジョブを開始したプロ
セスに依存した情報を得る。)図の例では、ホストアダ
プタドライバ22はカーネル21のメモリ管理機能から
このような情報を得る。ホストアダプタドライバ23は
直接情報を得ないかもしれないが、例えば、この情報を
含むメモリー15中のセグメント記述表へのポインタを
得る。ホストアダプタドライバ23は次にステップ50
2で得られた情報をSCBの領域1115に記憶する
(第11図参照)。
代替の実施例においては、ステップ502で翻訳情報を
蓄積する代りに、ホストアダプタドライバ23はこの情
報にもとづいて直接に翻訳を実行し、翻訳された結果を
フィールド1105および1113に記憶する。いずれ
の場合にも、翻訳情報はSCBに記憶される。
ホストアダプタドライバ23は次にステップ503でタ
ーゲットドライバ22に戻る。
第2図に戻れば、ステップ205でSDI XLATE
関数をコールしたあと、ターゲットドライバ22はステ
ップ206で、例えばSCBへのポインタをリンクリス
トに置くことによってSCBによって表わされるI/O
ジョブをそのワークキューに入れる。次にターゲットド
ライバ22は実行のためにブロック207にジョブを送
り出すかどうかを判定する。この判定の基礎はターゲッ
トドライバに依存している。例えば、ターゲットドライ
バ22は次のジョブを送出する前に先に送られたジョブ
が完了するのを待ってもよい。もしターゲットドライバ
22でジョブを実行のために送出すべきでないと判定さ
れれば、これはステップ215でカーネル21に戻る。
ステップ207でもしターゲットドライバ22によって
ジョブを実行のために送出すべきであると判定されれ
ば、これはステップ208でSDI SEND関数を呼
び、変数としてそのワークキュー上の最初のSCBへの
ポインタを与える。この関数コールはインタフェース2
4の一部である。SDI SEND関数はSBを取り出
し、ターゲットコントローラのコマンドブロックをター
ゲットコントローラに送る。この関数を通して論理ユニ
ットに送られるコマンド10はそれが送られた順序で論
理ユニットによって実行される。
ホストアダプタドライバ23はSDI SENDコール
に応動して第8図のフローチャートに示すように動作す
る。コールを受信すると、ステップ600でホストアダ
プタドライバ23は与えられたポインタによって指され
るSBの内容を調べ、ステップ601でその要求の有効
性を判定する。例えば、ホストアダプタトドライバ23
はSB TYPEフィールド1101(第11図)がこ
の要求に対して正しいかを確認する。ステップ601の
チェックで要求が正しくないと判定されると、ステップ
609でホストアダプタドライバ23はターゲットドラ
イバに対して誤り表示を返送する。
もし要求が有効であれば、ホストアダプタドライバ23
はステップ602で、そのジョブが向けられた論理ユニ
ット(装置18)が動作状態にあって、ジョブを実行す
ることができるかどうかを検査する。例えば、ホストア
ダプタドライバ23はこの判定を行なうためにホストア
ダプタ10によって保持された装置ステータス情報を検
査する。もしターゲット装置13が検査に合格しなけれ
ば、ステップ603でホストアダプタドライバ23のジ
ョブは失敗し、SBのSC COMP CODEフィー
ルド1102(第11図)に適切なコードを入れる。こ
のコードはホストアダプタに対して、ジョブの実行をし
ないように警告する。次にホストアダプタドライバ23
はステップ604に進み、ジョブが実行されなければな
らないSCSI要求を満足し、それが投入された順序で
リターンする。
ステップ603に続いて、あるいはターゲット装置13
がステップ602で検査を終了すれば、ホストアダプタ
ドライバ23はSBの領域1115(第11図)にホス
トアダプタ10によってジョブの実行中に要求される情
報をステップ604で与える。この情報はホストアダプ
タ10の構造によって変化する。これは、例えば、ター
ゲットコントローラのコマンドブロックの物理アドレス
とSCBの仮想アドレスを含んでよい。
ホストアダプタ10は各装置18のワークキューを保持
し、ステップ605でSCBのためにターゲット装置1
8の待ち行列に余裕があるかどうかを検査する。もし待
ち行列が一杯であれば、ホストアダプタドライバ23は
ステップ608でターゲットドライバ22に対して“再
試行”メッセージを返送する。再試行メッセージはこの
ときホストアダプタドライバはジョブを受理することが
できないから、後で再試行するべきであることを示す。
もし待ち行列が満杯でなければ、ホストアダプタドライ
バ23はステップ606でターゲット装置18の待ち行
列にそのSCBを入れる。インプリメンテーションにも
よるが、ホストアダプタドライバ23は待ち行列にSC
Bを直接入れてもよく、あるいはホストアダプタ10に
そうすることを要求してもよい。ホストアダプタドライ
バ23は次にステップ607でターゲットドライバ22
にOKのメッセージを返送する。OKメッセージは要求
はまだ完了しておらず、そのためにターゲットドライバ
の割込みハンドラ関数が呼び出されるであろうことを示
す。
第2図に戻って、ステップ208におけるSDI SE
ND関数コールのあとで、ターゲットドライバ22はホ
ストアダプタドライバ23によって戻されたメッセージ
を調べた。もし応答によって、関数コールが成功したこ
とが示されれば、ターゲットドライバ22はステップ2
07に戻り、そのワークキューにジョブがあるかどうか
を判定し、もし存在すれば、次のジョブを実行のために
送るべきかどうかを決定する。
ステップ209で受信された応答が再試行であれば、タ
ーゲットドライバ22はステップ210で警告タイマを
セットし、ここで送出に失敗したジョブが識別される。
ターゲットドライバ22は次にステップ207に戻る。
警告タイマが時間切れになると、これはブロック214
でターゲットドライバ22に警告を発し、これは応答し
てステップ208でSDI SENDを呼んで、そのジ
ョブについて再び送ることを試みる。
もしステップ209で受信された応答が誤りであれば、
ターゲットコントローラ22はステップ211で誤りロ
グに誤りを記録する。ターゲットコントローラ23がま
た第1図のコンピュータのコンソールに誤りを印字する
ようにすればもっとよい。次にステップ212でターゲ
ットコントローラ22はジョブを失敗であったとして、
例えばジョブの完了を示すカーネル21の関数を呼び、
失敗の原因を示す誤り識別子を変数としてこれを伝え
る。失敗であったとしてもジョブが完了すると、ターゲ
ットコントローラ22はステップ213でSDI FR
EEBLK関数を呼び、完了したジョブのSCBに変数
としてポインタを与える。この関数コールはインタフェ
ース24の一部である。SDI FREEBLK関数は先に割
当てられたSBを空きブロックのプールに戻す。
SDI FREEBLKコールに対するホストアダプタ
ドライバ23の応答は第10図のフローチャートに示さ
れている。ステップ800でコールを受信すると、ホス
トアダプタドライバ23は、ステップ801で与えられ
たポインタによって指されるSBの割当解除の要求の有
効性を確認する。例えば、ホストアダプタドライバ23
は割当解除するべきブロックは割当てられたブロックで
あるかを確認する。もし有効性の確認に失敗すると、ホ
ストアダプタドライバ23は、ステップ802で第1図
のシステムの制御コンソールに誤り表示を印字し、次に
ステップ803でシステムを停止する。この停止によっ
てシステムは動作しなくなり、システムを再び動作する
ためにはシステムの初期化をやり直さなければならな
い。
ステップ801で要求が有効であることが判定される
と、ステップ804でホストアダプタドライバ23はS
Bの割当を解除する。図の例ではホストアダプタドライ
バ23はSBの内容をクリアし、空きブロックのリンク
リストの状態を変更して、それに割当解除されたSBを
入れる。次にホストアダプタドライバはステップ805
でターゲットコントローラ22に戻る。
ジョブの送出に成功したとすると、そのジョブの実行の
完了によって、それが成功でも失敗でも、ホストアダプ
タ10はジョブのSCBのフィールドに適切な値を入
れ、次にSCBのSC INTフィールド1103でタ
ーゲットドライバ22によって指定されたターゲットド
ライバの割込みハンドラルーチンを呼ぶ。この関数コー
ルはインタフェース24の一部である。
複数の割込みハンドラルーチンの内のどれを呼ぶかを指
定するのはターゲットドライバ22であり、異るターゲ
ットドライバ22は異る割込みハンドラルーチンを持つ
から、コールに対するターゲットドライバ22の応答は
異ることになる。しかし、応答のある種の特徴はすべて
のターゲットドライバの割込みルーチンに共通になる可
能性が高い。第3図および第4図はこれらの共通の特徴
とそれによるインタフェース24の利用法を説明するた
めの割込みに対する応答におけるターゲットドライバの
一般化された動作を図示している。
ステップ300で割込みを受信すると、ターゲットドラ
イバ22はそのワークキューから、その完了が知らされ
たジョブをステップ301で取り除くように動作する。
図の例では、ターゲットドライバ22はポインタのリン
クリストからジョブのSCBに対するポインタを除くこ
とによってこれを実行する。次にターゲットドライバ2
2はそのジョブのSCBに誤りがないかをステップ30
2で調べる。この検査ではSC COMP CODEフ
ィールド1102とSC STATUSフィールド11
10(第11図)を調べて、そこに誤りが示されていな
かの検査を含んでいる。
ステップ302でもし誤りが見付からなければ、これは
ジョブがうまく実行されたことを意味し、ステップ31
4でターゲットドライバはジョブを完了する。特にこれ
はカーネル21の割込み関数をコールして、ジョブが完
了したことを通知し、これに対してジョブの結果と完了
に成功したことの表示を与える動作に関連している。次
にターゲットドトライバ22は第10図のSDI FR
EEBLK関数をステップ315でコールし、完了した
ジョブのSCBの割当を取り消す。次にターゲットドラ
イバ22はステップ316に進み、ターゲット13に送
られるべきそのワークキューの中の他のジョブを検査す
る。
ステップ302でもし誤りが見付かると、ターゲットコ
ントローラ22はステップ303で、その誤りがジョブ
にとって致命的かどうかを判定する。致命性は、例え
ば、実行されているジョブのタイプ、ターゲットドライ
バ22によって制御されている装置18のタイプ、それ
にターゲットコントローラ22によって提供されている
誤り回復能力などによって決まる。もし誤りが致命的な
ものであると判定されると、ターゲットコントローラ2
2はこれをそれが保持している誤りログに記録し、ステ
ップ311で第1図のシステムのコンソール(図示せ
ず)に誤りメッセージを出力し、ステップ312でジョ
ブを失敗とする。ジョブを失敗とする動作にはカーネル
21で割込み関数を呼び、これにジョブの終了を通知
し、動作が不成功であったことを示す情報を提供する動
作を含む。次にターゲットドライバ22はステップ31
5および316に進み、それぞれSDI FREEBL
K関数を呼び、他のジョブのために送出するべきワーク
キューが存在するかを検査する。
ステップ302で発見された誤りが致命的なものではな
いと判定されると、ターゲットドライバ23はそのジョ
ブのSCBによって与えられた誤り情報を調べて、ステ
ップ306でターゲットコントローラ17がジョブを失
敗するかどうかを判定する。もしそうしないのなら、ス
テップ309でターゲットドライバはホストアダプタド
ライバ23のSDI ICMD関数を呼ぶ。この関数コ
ールはインタフェース24の一部である。SDI IC
MDは先に述べたSDI SENDと機能的に対応して
いるが、ちがいは待合わせアクセスプロトコルを使っ
て、論理ユニット(装置18)のキューの待ち行列であ
るSCBをバイパスして、要求された関数をただちに実
行することである。論理ユニットが塞りであるときだ
け、そのユニットが空きになるまでの間ジョブは待ち合
わせる。
このSDI ICMDコールの目的はターゲット装置1
7のジョブ待行列を通ることなく、失敗したI/Oジョ
ブをただちに再試行することである。この目的のため
に、ターゲットドライバ22はSDI ICMDコール
の一部として失敗したジョブのSBに対してポインタを
与える。
コールされているのはSDI SEND関数ではなく、
SDI ICMD関数であるから、SDI ICMDを
呼んで、ジョブのSBに対するポインタをそれに与える
のではなく、ターゲットドライバ22はSBのSB
YPEフィールド1101にISCB用の値を入れて、SB
タイプをコールと整合させる。
ステップ306でターゲットドライバ22によって、I
/Oジョブに失敗したのはターゲットコントローラ17
であったことが判定されると、ターゲットコントローラ
22はステップ307−308で“要求検出”ジョブを
生成する。このジョブはターゲットコントローラ17か
ら何故ジョブが失敗したかの情報を要求する。要求検出
ジョブは装置バス12の(SCSI)仕様によって規定
される。ターゲットドライバ22はステップ204およ
び204について記述した標準的なジョブを生成するの
に似た方法でジョブを生成する。これはステップ307
でターゲットコントローラのコマンドブロックを生成
し、ステップ308でSBに情報を与える。ターゲット
ドライバ22はそれにSBを割当てるためにSDI
ETBLKに関数を呼ぶのではなく、システムの初期化
時に、保守と診断の目的でそれに予め割当てられている
SBを使用する。ターゲットドライバ22はまた保守と
診断の目的で翻訳が必要なので、もし存在しても初期化
時に実行されていたため、翻訳情報を提供するためにS
DI XLATE関数を呼ぶことはない。さらに、ター
ゲットドライバ22はISCBのブロックを識別するた
めにSB TYPEフィールド(第11図参照)にIS
CBの値を入れる。ターゲットドライバ22は次にステ
ップ309でSDI ICMD関数を呼び、要求検出ジ
ョブの実行を開始するために、ステップ308で生成さ
れたISCBにポインタを与える。
SDI ICMDコールにい対するホストアダプタドラ
イバ23の応答は第9図に図示されている。第9図と第
8図を比較すると、ステップ701−704と709は
ステップ601−604と609と同様であり、上述の
説明は両方に適用できる。
ステップ704でSBに情報を与える動作を完了したあ
と、ホストアダプタドライバ23はSBのSB TYP
Eフィールド1101あるいは1201(第11図およ
び第12図参照)を調べ、ステップ705でこれがIS
CBであるかSFBであるかを判定する。もしSBがI
SCBであれば、ホストアダプタドライバ23は、これ
をターゲット装置18の“直接”待行列に入れる。ホス
トアダプタ10は各装置18について、直接待行列を保
持している。直接待行列は長さ1の待行列であって、一
時にはその待行列には唯一のジョブしか待ち合わせるこ
とができない。直接待行列上のジョブは装置18の正常
のジョブ待行列のどのジョブよりも高い優先順を持って
いる。ジョブを直接待行列に入れることの正味の効果は
ジョブを正常のジョブの待行列の先頭に入れること、あ
るいは、正常のジョブ待行列をバイパスすることと同じ
である。次にホストアダプタドライバ23はステップ2
8でOKメッセージと共にターゲットドライバ22に戻
る。
ステップ705でもしSBがSFBであることが判明す
ると、ホストアダプタドライバ23はステップ707で
ジョブをホストアダプタ10によって保持されている関
数待行列に与える。ホストアダプタ10は1個だけの関
数待行列を有している。関数待行列のジョブはすべての
他の待行列より高い優先順を有している。次にホストア
ダプタドライバ23はステップ708で、“O.K.”メッ
セージと共にターゲットドライバ22に戻る。
第3図に戻って、ステップ309でSDI ICMD関
数を呼んだあと、元のI/Oジョブを再試行するか、
“要求検出”ジョブを実行するために、ターゲットドラ
イバ22はその関数によって戻された応答を調べる。も
し応答が“O.K.”であれは、要求はまだ完了はしていな
いが、それが完了したときにはターゲットドライバの割
込みハンドラが呼ばれることを示しており、ターゲット
ドライバ22はステップ331で単純にそれがステップ
300で割込まれた点に戻る。
もし応答が誤りであり、要求の有効性確認がうまくゆか
なかったときには、ターゲットドライバ22はステップ
311に進んで、誤りログ中の元の誤り−ジョブの再実
行あるいは要求検出ジョブの実行の原因となった元のI
/Oジョブの誤り−を調べ、コンソールに誤りメッセー
ジを出力し、次にステップ312に進んで元のI/Oジ
ョブを失敗とし、最後にステップ315に進んで元のI
/OジョブのSCBの割当を解除するが、これらはすべ
て先に述べた方法で行なわれる。次にターゲットドライ
バ22は第4図のステップ316の動作を継続する。
第4図を第2図と比較すれば、ステップ316−323
はステップ207−214と本質的に同一であって、上
述の説明は両方に適用される。差はステップ316では
ターゲットドライバ22はジョブを今完了したか失敗し
たジョブを持つ特定の装置にだけジョブを送るかどうか
を検査するのに対して、任意の装置18を検査する所が
ちがっている。
ある種の誤りが生じたときには、ターゲットドライバ2
2は、その装置18が新らしいジョブを開始する前に、
これらの誤りの原因を判定するというようなある種の動
作を行なう必要があることもある。この理由からターゲ
ットコントローラ17からこのような誤りひとつあるい
はそれ以上について通知を受信すると、ホストアダプタ
10はその装置18についてそれが保持しているワーク
キューを中断し、ワークキュー上のジョブが装置18に
送られるのを防止する。図の例では、ホストアダプタ1
0は待行列に関連したフラグをセットすることによって
その装置の仕事を中断し、誤りの影響を受けたI/Oジ
ョブのSBのSC COMP CODEフィールド11
02によって、そのことをターゲットドライバ22に通
知する。
ターゲットドライバ22はステップ316でデバイス1
8に対して送出すべきワークキュー上のジョブが存在し
ないことを判定するか、あるいはそのワークキュー上に
存在するジョブがあったとして、このときこれを装置1
8に送出しないことを判定して、ステップ324でその
装置18について待行列が中断されたかどうかを判定す
る。図の例では、ターゲットドライバ22は、そのポイ
ンタがステップ300で受信されたSBのSC COM
CODEフィールド1102を調べることによって
これを実行する。もし待行列が中断されなければ、ステ
ップ311でターゲットドライバ22は、それがステッ
プ300で中断された点に戻る。
もし待行列が中断されていることがわかると、ステップ
325でドライバはSFB(第12図)を生成し、要求
された検出ジョブに関連して上述した予め割当てられた
SBに情報を与える。SFBによって表わされるジョブ
の関数は待ち行列を再開すること、すなわち、待ち行列
から関連する装置18へのジョブの送出を付勢すること
である。これはホストアダプタ10のジョブであって、
ターゲットコントローラ17のジョブではないから、SF
Bにはターゲットコントローラのコマンドブロックへの
ポインタは存在しない。従って、ターゲットドライバ2
2はステップ326でSDI ICMD関数をコール
し、ポインタをステップ325で生成したSFBに与え
る。
コールに対するホストアダプタドライバ23の応答は第
9図に記述されている。
ステップ326でSDI ICMD関数をコールしたあ
と、ターゲットドライバ22はステップ327でその関
数によって戻された応答を調べる。もし応答がOKであ
り、要求は完了していないが、それが完了したときには
指定されたターゲットドライバの割込みハンドラが呼ば
れるであろうときには、ターゲットドライバ22は単に
ステップ331で、それがステップ300で割込まれた
点に戻る。
もし応答が誤りであって要求の有効性判定に失敗したこ
とが示されたときには、ターゲットドライバ22は誤り
ログに失敗を記録し、ステップ328でコンソールに誤
りメッセージを出力する。ターゲットドライバ22はま
た、ステップ312について述べたと同様の方法で、ス
テップ329で元のI/Oジョブを失敗とする。次にタ
ーゲットドライバ22は第10図のSDI FREEBLK関
数と呼んで、失敗したジョブのSBをステップ331で
空け、最後にターゲットドライバ22はステップ331
でそれがステップ300で割込まれた点に戻る。
第5図は成功して送られた“検出要求ジョブの完成のた
めのターゲットコントローラ22の応答のフローチャー
トである(第3図のステップ、307−309参照)。
ステップ1400における要求検出ジョブのISCBの
SC INTフィールド1103によって指定されたタ
ーゲットドライバの割込みハンドラに対するコールの受
信によって、ターゲットドライバ22はステップ140
1でジョブのISCBの内容をステップ302について
述べたような方法に似た方法で調べる。もし誤りが見付
からなければ、ターゲットドライバ22は元のI/Oジ
ョブの成功した完了まで第3図のステップ314の動作
を続ける。もし誤りが見付かれば、ステップ1402
で、ターゲットドライバ22はそれが元のI/Oジョブ
にとって致命的であるかどうかを調べる。ターゲットド
ライバ22はステップ303について述べたのと似た方
法でこれを判定する。もし誤りが致命的ならば、ターゲ
ットドライバ22は第3図のステップ311以下に進
み、元のI/Oジョブを失敗とする。もし誤りが致命的
でなければ、ターゲットドライバ22は第3図のステッ
プ309に進み、元のI/Oジョブの再実行を試みる。
第13図−第15図はインタフェース24を理解するこ
とに関連したホストアダプタ10の動作の部分のフロー
チャートである。まず第13図に転ずると、装置バス1
2が空きになってその装置のワークキューで実行を待っ
ているジョブがステップ900で存在すると、ステップ
901でホストアダプタはバスフリーハンドラ(BF
H)関数を呼ぶ。この関数はターゲットコントローラ1
7に初期化コマンドを送る責任を持ち、ターゲットコン
トローラ17とバス12が次のジョブを実行する準備を
する。SFH関数はSCSIバスの仕様によって規定さ
れる。
SFH関数のコールを終了すると、ホストアダプタ10
はその結果を調べてステップ902でバス12が本当に
空きであるかを判定する。例えば、バス12に対するア
クセスでこのホストアダプタ10より高い優先度を持つ
ユニットが、バス12に対するアクセスを要求してお
り、従ってこのホストアダプタ10で使えるようにバス
12は空いていないかもしれない。もしバス12が本当
に空きでないなら、ホストアダプタ10はステップ91
2で単に戻って、バスが空きにあるのを待つ。
もしバス12が空きであれば、ホストアダプタ10はそ
のSFBが行列を作っている関数の待ち行列を調べて、ス
テップ903で実行すべき関数が存在するかどうかを判
定する。もし関数が存在しなければ、ホストアダプタ1
0は装置18のISCBが行列を作っている空き装置の
直接待行列を調べて、ステップ902で実行すべき直接
コマンドが存在するかどうかを判定する。もし直接コマ
ンドが存在しなければ、ホストアダプタ10はステップ
905で、それについて待ち行列が中断されていない空
き装置18のSCBが行列を作っているジョブ待ち行列
を調べて、実行すべきI/Oジョブがあるかどうかを判
定する。もしジョブが存在しなければ、ステップ912
でホストアダプタ10はリターンして実行するべき仕事
の受信を待つ。
もしホストアダプタ10がステップ905で空き装置1
8について、中断していない待行列で完了していないジ
ョブを見付けたときには、これはステップ906でSC
Bを調べて、それに含まれた情報の有効性を調べる。も
し有効性の確認に失敗したときには、ホストアダプタ1
0はSCBの完了コードをセットし、ステップ915で
失敗を指示し、次に、ステップ916で後述する第14
図のリターンジョブ関数を呼ぶ。もし有効性判定で成功
すれば、ホストアダプタ10はターゲットコントローラ
17を通して、ステップ907でバス12を通して、装
置18に対してジョブを送り、ステップ910でジョブ
の時間を計時するためにタイマをスタートする。タイマ
のタイムアウトに対するホストアダプタ10の動作は第
15図のフローチャートに示されている。次にホストア
ダプタはステップ911でバス状態ハンドラ(BSH)
関数をコールする。この関数はジョブの完成に必要なタ
ーゲットコントローラ17との通信を取扱かう。このB
SH関数はSCSIバス仕様によって定義されている。
ジョブが完了したときに、BSH関数は第14図のリタ
ーンジョブ関数を呼ぶ。
もしホストアダプタ10がステップ904で空き装置の
直接待ち行列で待ち合わせている直接コマンドを見付け
たときには、これはステップ908でISCBを調べ
て、それに含まれている情報の有効性を判定する。もし
有効性判定に失敗すれば、ホストアダプタ10はISC
Bの完了コードをセットして、ステップ915で失敗を
表示し、次にステップ916で第14図の“リターンジ
ョブ”関数を呼ぶ。もし有効性判定に成功すれば、ホス
トアダプタ10はステップ909でバス12とターゲッ
トコントローラ17を通して装置18に対して直接コマ
ンドを送り、次にステップ910でジョブのタイミング
を開始し、ステップ911でBSH関数をコールする。
ステップ903でもしホストアダプタ10が関数待行列
上の関数を見付ければ、これはBFHを調べて、ステッ
プ913でそれに含まれた情報の有効性を判定する。も
し有効性判定で成功すれば、ホストアダプタ10はステ
ップ914でその関数を実行し、次にステップ915で
第14図の“リターンジョブ”関数をコールする。もし
有効性判定で成功であれは、ホストアダプタ10はステ
ップ915でBFHの完了コードをセットして失敗を表
示し、ステップ916で“リターンジョブ”関数をコー
ルする。
第14図のフローチャートで図示した“リターンジョ
ブ”関数はジョブ、コマンドあるいは関数の完了時に
(成功であっても失敗であっても)ホストアダプタ10
によって実行される。その目的は元のターゲットドライ
バ22に対して完了に関係した情報を返送することであ
る。
これがステップ1000で“リターンジョブ”コールを
受信したときには、ホストアダプタ10は、それがセッ
トしたジョブ、もしくはコマンドまたは関数の完了コー
ドフィールド(第11図および第12図のSC COM
CODEフィールド1102あるいはSF COM
CODEフィールド1202)を調べる。もしそう
でなければ、ホストアダプタ10がこれをセットする。
コードがセットされていたらあるいはこれをセットした
とき、ホストアダプタ10はステップ1003でジョブ
あるいはコマンドのタイミング動作を停止し、ステップ
1004で装置12のジョブ待行列の中断が必要かどう
かを判定する。ジョブ中断の条件は指定された誤りのタ
イプとシステムが使用される応用の要求によって決ま
る。もし待行列の中断が必要であれば、ステップ100
5でホストアダプタ10は待ち行列を止める。待行列の
停止のあと、あるいは待行列の停止が要求されなかった
ときには、ステップ1006で、ホストアダプタ10は
ジョブ、コマンドあるいは関数をホストアダプタドライ
バ23に返す。図の例では、このリターンはホストアダ
プタドライバに割り込むかあるいは関数コールをしてジ
ョブ、もしくはコマンドまたは関数のSBに対するポイ
ンタを合意によって与えることによって実現される。次
に、ホストアダプタ10は、この完了を反映させて、ス
テップ1007でジョブ、コマンドあるいは関数が関連
している装置18に関してそれが保持している情報につ
いて状態を更新する。次にホストアダプタ10はホスト
アダプタドライバ23に対して割込みを発行して、完了
したジョブのSBのSC INTフィールド1103あ
るいはSB INTフィールド1203(第11図、第
12図)によって指定されたターゲットドライバの割込
み関数が何であっても、これをコールするようにする。
このコールはターゲットドライバ22に対してSBによ
って指定されたタスクの実行の完了を通知する。このコ
ールはインタフェース24の一部である。これによって
ターゲットドライバ22そのものがどのようにジョブあ
るいはコマンドまたは関数の完了を通知したいと思うか
を指定することができる。このコールに対するターゲッ
トドライバ22の応答は上述した第3図−第4図のフロ
ーチャートで図示されている。
ターゲットドライバの割込み関数の呼び出しのあとで、
ホストアダプタ10はステップ1009でBFH関数を
コールして、ステップ1010でそれがステップ100
0で呼ばれた点に戻る。
第15図は第13図のステップ910でスタートしたタ
イマが第14図のステップ1003で停止する前にタイ
ムアウトしたときの、タイマに対するホストアダプタの
応答動作を示している。
ステップ1300でタイムアウトの表示を得たあと、ホ
ストアダプタ10はステップ1301でそのジョブある
いは直接コマンドが関連している装置18のターゲット
コントローラ17に対してアボート信号を送信して、そ
のジョブあるいはコマンドをアボートする。次にホスト
アダプタ10はステップ1302で、第14図のステッ
プ1006について述べたと同様の方法でタスクをホス
トアダプタドライバ23に戻す。ホストアダプタ10は
そのタスクが関連した装置18の状態を第14図のステ
ップ1007について述べたと同様の方法でステップ1
303で更新する。ホストアダプタ10はステップ13
04でホストアダプタドライバ23に対して割込みを発
生し、ホストアダプタドライバ23がタスクのSBによ
って指定されたターゲットドライバの割込み関数をコー
ルするようにし、このコールがアボートに関してターゲ
ットドライバ22に対して知らせることになる。最後に
ステップ1305でホストアダプタ10はそれがステッ
プ1300で割込まれた点に戻る。
もちろん、本実施例については当業者は種々の変更と修
正を行なえるものであることを了解されるであろう。こ
のような変更と修正は本発明の精神と範囲を逸脱するこ
となく、その利点を害うことなく可能である。従って、
このような変更と修正はすべて添付の請求の範囲に含ま
れているものである。

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】周辺装置(18)と、周辺装置を制御する
    ドライバ(22)と、ドライバを周辺装置にインタフェ
    ースする装置(10、17、23)とを含むシステムで
    周辺装置ジョブを実行する方法において、該方法は ドライバがインタフェース装置に対して第1のコール
    (202)を発行し、 第1のコールに応動して、インタフェース装置はドライ
    バに対して、データ構造(1100)を割当て(第6
    図)、 割当に応動して、ドライバはデータ構造中に周辺装置ジ
    ョブを定義する第1の情報と、ジョブの実行の完了時に
    行なわれるべきコールを指定する第2の情報を記憶し
    (203−206)、 ドライバはインタフェース装置に対して第2のコール
    (208)を発行し、 第2のコールの受信に応動して、インタフェース装置は
    周辺装置と協力して第1の情報によって定義されるジョ
    ブを実行し(第8図、第13図、第14図)、 ジョブの実行の完了時に、インタフェース装置はドライ
    バに対して第2の情報によって指定されるコールを発行
    し、 インタフェース装置からのコールの受信に続いて、ドラ
    イバはインタフェース装置に対して第3のコールを発行
    し(Fig,3)、および 第3のコールの受信に応動してインタフェース装置はデ
    ータドライバからデータ構造の割当を取り消す ステップを含むことを特徴とする周辺装置ジョブを実行
    する方法。
  2. 【請求項2】請求の範囲第1項に記載の方法において、 データ構造に第1および第2の情報を記憶するステップ
    は ドライバがデータ構造中にアドレス情報を含む第1の情
    報と第2の情報を記憶し(204)、 ドライバはインタフェース装置に対して第4のコールを
    発行し(205)、 第4のコールの受信に応動して、インタフェース装置は
    データ構造中にアドレス情報を翻訳する情報を記憶する
    (第7図) ステップを含むことを特徴とする方法。
  3. 【請求項3】請求の範囲第1項に記載の方法において、 ジョブを実行するステップは 第2のコールの受信に応動して他の未実行のジョブと共
    にジョブを待ち合わせ(第8図)、 周辺装置と協同して待ち合わせたジョブをそれが待ち行
    列に入った順序で実行し(第13図、第14図)、 インタフェース装置はデータ構造中にジョブの実行の成
    功に関する第3の情報を記憶し(911、915、10
    02)を含み、 インタフェース装置に対して第3のコールを発行するス
    テップは インタフェース装置からのコールの受信のあとで、ドラ
    イバは第3の情報を検査して、ジョブの実行が成功であ
    ったかどうかを判定し、 ジョブの実行が不成功であったとの判定に応動して、ド
    ライバはインタフェース装置に第4のコール(306−
    309)を発行し、 第4のコールの受信に応動して、インタフェース装置は
    いずれかの待ち合わせたジョブを実行する前にドライバ
    によってデータ構造に記憶された情報によって定義され
    る待ち合わせをしていないジョブを実行する ステップを含むことを特徴とする方法。
  4. 【請求項4】請求の範囲第3項に記載の方法において、 第4のコールの受信に応動してジョブを実行するステッ
    プは 待ち合わせているジョブを実行する前に、第1の情報に
    よって規定される実行が不成功であったジョブを周辺装
    置と協力して再実行する ステップを含むことを特徴とする方法。
  5. 【請求項5】請求の範囲第3項に記載の方法において、 第4のコールを発行するステップは ジョブの実行が不成功であったという判定に応動して、
    ドライバが第2のジョブを規定する第4の情報を第2の
    データ構造に記憶し(308)、 ここで、第4のコールの受信に応動してジョブを実行す
    るステップは、 待ち合わせているジョブの実行の前に第4の情報によっ
    て規定されるジョブを実行するステップ を含むことを特徴とする方法。
  6. 【請求項6】周辺装置(18)と、周辺装置を制御する
    ドライバ(22)と、ドライバを周辺装置にインタフェ
    ースするための装置とを含む周辺装置ジョブを実行する
    装置において、ドライバは、 データ構造の割当てのためにインタフェース装置に対し
    て第1のコールを発行する(202)手段と、 データ構造の割当に応動して、データ構造中に周辺装置
    ジョブを規定する第1の情報と、ジョブの実行の完了時
    に発行するべきコールを規定する第2の情報とを記憶す
    る(203−206)手段と、 ジョブの実行のためにインタフェース装置に対して第2
    のコールを発行する(208)手段と、 インタフェース装置から第2の情報によって指定された
    コールの受信に応動して、インタフェース装置に対して
    データ構造の割当解除のためにコールを発行する(第3
    図)手段とを含み、さらに、 該インタフェース装置は 第1のコールに応動して、そのジョブのドライバに対し
    てデータ構造(1100)を割当てる手段と(第6
    図); 第2のコールに応動して、装置と協力して第1の情報に
    よって規定された周辺装置ジョブを実行する手段と(第
    8図、第13図、第14図); ジョブの実行の完了時に、第2の情報によって指定され
    たコールをドライバに対して発行する(1008)手段
    と、 第3のコールに応動してドライバとジョブからデータ構
    造の割当を解除する手段(第10図)と を含むことを特徴とする周辺装置ジョブを実行する装
    置。
  7. 【請求項7】請求の範囲第6項に記載の装置において、 該データ構造に情報を蓄積する手段は、 データ構造中にアドレス情報を含む第1の情報を記憶す
    る(204)手段と、 第2のコールの前にインタフェース装置に対して第4の
    コールを発行する(205)手段とを含み、 該インタフェース装置はさらに、 第4のコールの受信に応動してアドレス情報を翻訳する
    ためのデータ構造情報を記憶する(第7図)手段を含む ことを特徴とする装置。
  8. 【請求項8】請求の範囲第6項に記載の装置において、
    該ジョブを実行する手段は、 第2のコールの受信に応動して他の未実行のジョブと共
    にデータ構造中に記憶された情報によって定義されたジ
    ョブを待ち合わせる手段(第8図)と、 装置と協同して、それが待ち合わせた順序で待ち行列中
    のジョブを実行する(第13図、第14図)手段と、 ジョブの実行に関連した情報をデータ構造中に記憶する
    (911、915、1002)手段と、 ドライバからの第4のコールの受信に応動して、ドライ
    バによってデータ構造中に記憶された情報によって規定
    された待ち合わせていないジョブを、待ち合わせている
    ジョブの実行の前に実行する手段(第9図、第13図、
    第14図)を含み、 該割当解除のためのコールを発行する手段は、 第2の情報によって指定されたコールをインタフェース
    装置から受信したのに応動して、実行が成功したかどう
    かを判定するためにジョブの実行に関する情報を調べる
    (302)手段と、 ジョブの実行が不成功であったという判定手段による判
    定に応動して、インタフェース装置に対して第4のコー
    ル(306−309)を発行する手段と を含むことを特徴とする装置。
  9. 【請求項9】周辺装置(18)と、周辺装置を制御する
    ための装置ドライバと、装置を装置ドライバに結合する
    ためのインタフェース装置とを含む周辺装置ジョブを実
    行するシステムのインタフェース装置(10、17、2
    3)と装置ドライバ(22)の間で使用する通信インタ
    フェース(24)において、該通信インタフェースは、 データ構造(第11図)と; ドライバに対してデータ構造を割当てるためにインタフ
    ェース装置に対して装置ドライバによって発行される予
    め定められた第1の関数コール(400、500)と; 装置と協力してドライバによってデータ構造に記憶され
    た情報によって定義される周辺装置ジョブを実行するた
    めにインタフェース装置に対して装置ドライバから発行
    される予め定められた第2の関数コール(600、70
    0)と; ドライバによってデータ構造中に記憶された情報によっ
    て指定される関数について、ジョブの実行の完了時に装
    置ドライバに対してインタフェース装置から発行される
    第3の関数コール(300)と; ドライバからデータ構造の割当を解除するために装置ド
    ライバからインタフェース装置に対して発行される予め
    定められた第4の関数コール(800)とを含むことを
    特徴とする通信インタフェース。
  10. 【請求項10】請求の範囲第9項に記載の通信インタフ
    ェースにおいて、該第1の関数コールは ジョブによって定義されドライバによってデータ構造中
    に記憶される翻訳アドレス情報のための情報をデータ構
    造中に記憶する関数コール(500)を含むことを特徴
    とする通信インタフェース。
  11. 【請求項11】請求の範囲第9項に記載の通信インタフ
    ェースにおいて、 該第2の関数コールは、 ジョブが待ち行列に入った順序で実行するために、未実
    行のジョブと共にそのジョブを待ち合わせるコール(6
    00)あるいは、待ち合わせているジョブの実行の前
    に、ドライバによってデータ構造中に記憶された情報に
    よって定義された待ち合わせに入っていないジョブを実
    行するコール(700) を含むことを特徴とする通信インタフェース。
JP62504264A 1986-09-22 1987-06-17 通信インタフェースプロトコル Expired - Fee Related JPH0619753B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US909,687 1986-09-22
US06/909,687 US4975829A (en) 1986-09-22 1986-09-22 Communication interface protocol
PCT/US1987/001428 WO1988002151A1 (en) 1986-09-22 1987-06-17 Communication interface protocol

Publications (2)

Publication Number Publication Date
JPH02500059A JPH02500059A (ja) 1990-01-11
JPH0619753B2 true JPH0619753B2 (ja) 1994-03-16

Family

ID=25427664

Family Applications (1)

Application Number Title Priority Date Filing Date
JP62504264A Expired - Fee Related JPH0619753B2 (ja) 1986-09-22 1987-06-17 通信インタフェースプロトコル

Country Status (7)

Country Link
US (1) US4975829A (ja)
EP (1) EP0324737B1 (ja)
JP (1) JPH0619753B2 (ja)
KR (1) KR950002714B1 (ja)
CA (1) CA1294711C (ja)
SG (1) SG59793G (ja)
WO (1) WO1988002151A1 (ja)

Families Citing this family (76)

* 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
US5155838A (en) * 1988-04-28 1992-10-13 Kabushiki Kaisha Toshiba Computer system with emulation mechanism
US5261075A (en) * 1988-08-16 1993-11-09 Kabushiki Kaisha Csk Optical recording medium access system
US5257393A (en) * 1989-04-19 1993-10-26 Jrm Consultants, Inc. Serially controlled programmable test network
US5226160A (en) * 1989-07-18 1993-07-06 Visage Method of and system for interactive video-audio-computer open architecture operation
US5363487A (en) * 1989-08-29 1994-11-08 Microsoft Corporation Method and system for dynamic volume tracking in an installable file system
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
US5249279A (en) * 1989-11-03 1993-09-28 Compaq Computer Corporation Method for controlling disk array operations by receiving logical disk requests and translating the requests to multiple physical disk specific commands
JPH03214225A (ja) * 1990-01-19 1991-09-19 Tokico Ltd 磁気ディスク装置
US5179666A (en) * 1990-06-07 1993-01-12 Unisys Corporation Block oriented peripheral device interface
KR920001351A (ko) * 1990-06-30 1992-01-30 이헌조 Id 처리전용 scsi 버스 인터페이스 로직
CA2047459A1 (en) * 1990-07-20 1992-01-21 Randy J. Longsdorf Apparatus for communicating between systems having different communications standards
US5446877A (en) * 1990-11-13 1995-08-29 Nakamichi Peripherals Corporation Method and apparatus for operation of a data archival apparatus allowing for coupling of the data archival device with an ide interface
US5655147A (en) * 1991-02-28 1997-08-05 Adaptec, Inc. SCSI host adapter integrated circuit utilizing a sequencer circuit to control at least one non-data SCSI phase without use of any processor
IL100127A0 (en) * 1991-03-11 1992-08-18 Future Domain Corp Scsi controller
US5265239A (en) * 1991-04-08 1993-11-23 Ardolino Anthony A Method for remotely accessing service programs of a local processing system supporting multiple protocol stacks and multiple device drivers
KR940003319B1 (ko) * 1991-10-09 1994-04-20 주식회사 금성사 피씨/씨디-롬 드라이브의 인터페이스 방법 및 그 시스템
US5517636A (en) * 1992-01-07 1996-05-14 Unisys Corporation Platform independent data communication system and method
US5402072A (en) * 1992-02-28 1995-03-28 International Business Machines Corporation System and method for testing and fault isolation of high density passive boards and substrates
US5508821A (en) * 1992-04-09 1996-04-16 Matsushita Electric Industrial Co., Ltd. Image scanner and image forming apparatus with an interface for connection with an external computer
US5657471A (en) * 1992-04-16 1997-08-12 Digital Equipment Corporation Dual addressing arrangement for a communications interface architecture
US5386514A (en) * 1992-04-16 1995-01-31 Digital Equipment Corporation Queue apparatus and mechanics for a communications interface architecture
US5386524A (en) * 1992-04-16 1995-01-31 Digital Equipment Corporation System for accessing information in a data processing system
CA2092631C (en) * 1992-06-19 1997-04-08 Don Steven Keener Physical partitioning of logically continuous bus
US5659690A (en) * 1992-10-15 1997-08-19 Adaptec, Inc. Programmably configurable host adapter integrated circuit including a RISC processor
US5734924A (en) * 1993-08-27 1998-03-31 Advanced System Products, Inc. System for host accessing local memory by asserting address signal corresponding to host adapter and data signal indicating address of location in local memory
US5781798A (en) * 1993-12-30 1998-07-14 International Business Machines Corporation Method and apparatus for providing hot swapping capability in a computer system with static peripheral driver software
US5590313A (en) * 1994-06-30 1996-12-31 International Business Machines Corporation Multiple protocol device interface subsystem and method
US5564023A (en) * 1994-06-30 1996-10-08 Adaptec, Inc. Method for accessing a sequencer control block by a host adapter integrated circuit
US5625800A (en) * 1994-06-30 1997-04-29 Adaptec, Inc. SCB array external to a host adapter integrated circuit
US5729719A (en) * 1994-09-07 1998-03-17 Adaptec, Inc. Synchronization circuit for clocked signals of similar frequencies
US5548788A (en) * 1994-10-27 1996-08-20 Emc Corporation Disk controller having host processor controls the time for transferring data to disk drive by modifying contents of the memory to indicate data is stored in the memory
US5923876A (en) * 1995-08-24 1999-07-13 Compaq Computer Corp. Disk fault prediction system
US6480903B1 (en) * 1995-08-24 2002-11-12 Compaq Information Technologies Group, L.P. Hardware component interface for desktop computer management systems
US5781615A (en) * 1995-08-30 1998-07-14 Lucent Technologies Inc. Fully distributed message storage facilities in a distributed switching system
US5623538A (en) * 1995-08-30 1997-04-22 Lucent Technologies Inc. Shared distribution of internal message storage facilities by a plurality of communication terminals
US5752032A (en) * 1995-11-21 1998-05-12 Diamond Multimedia Systems, Inc. Adaptive device driver using controller hardware sub-element identifier
US6009476A (en) * 1995-11-21 1999-12-28 Diamond Multimedia Systems, Inc. Device driver architecture supporting emulation environment
US6393495B1 (en) * 1995-11-21 2002-05-21 Diamond Multimedia Systems, Inc. Modular virtualizing device driver architecture
US6289396B1 (en) 1995-11-21 2001-09-11 Diamond Multimedia Systems, Inc. Dynamic programmable mode switching device driver architecture
US6452927B1 (en) 1995-12-29 2002-09-17 Cypress Semiconductor Corporation Method and apparatus for providing a serial interface between an asynchronous transfer mode (ATM) layer and a physical (PHY) layer
US5764891A (en) * 1996-02-15 1998-06-09 Rosemount Inc. Process I/O to fieldbus interface circuit
US5848272A (en) * 1996-06-04 1998-12-08 Lucent Technologies Inc. Object-oriented intra-process messaging arrangement for windows environments
US6148346A (en) * 1996-06-20 2000-11-14 Peerless Systems Imaging Products, Inc. Dynamic device driver
US6651104B1 (en) * 1996-11-12 2003-11-18 Ericsson Inc. Multi-layered interface for interconnecting application programs to system bus lines for electronic devices
US6006292A (en) * 1997-03-13 1999-12-21 Adaptec, Inc. Method of managing hardware control blocks utilizing endless queue maintained to never be empty and containing tail pointer only accessible by process executing on system processor
US5938747A (en) * 1997-03-13 1999-08-17 Adapter, Inc. Hardware command block delivery queue for host adapters and other devices with onboard processors
US6012107A (en) * 1997-05-22 2000-01-04 Adaptec, Inc. Hardware control block delivery queues for host adapters and other devices with onboard processors
US6304910B1 (en) * 1997-09-24 2001-10-16 Emulex Corporation Communication processor having buffer list modifier control bits
US6343320B1 (en) 1998-06-09 2002-01-29 Compaq Information Technologies Group, L.P. Automatic state consolidation for network participating devices
US6167448A (en) * 1998-06-11 2000-12-26 Compaq Computer Corporation Management event notification system using event notification messages written using a markup language
US6526442B1 (en) 1998-07-07 2003-02-25 Compaq Information Technologies Group, L.P. Programmable operational system for managing devices participating in a network
US6131118A (en) * 1998-07-07 2000-10-10 Compaq Computer Corporation Flexible display of management data in a programmable event driven processing system
US6202112B1 (en) * 1998-12-03 2001-03-13 Intel Corporation Arbitration methods to avoid deadlock and livelock when performing transactions across a bridge
US6704824B1 (en) * 1999-07-27 2004-03-09 Inline Connection Corporation Universal serial bus adapter with automatic installation
US6832379B1 (en) * 1999-08-17 2004-12-14 Emc Corporation Computer architecture utilizing layered device drivers
US6421742B1 (en) * 1999-10-29 2002-07-16 Intel Corporation Method and apparatus for emulating an input/output unit when transferring data over a network
US6766467B1 (en) * 2000-10-19 2004-07-20 International Business Machines Corporation Method and apparatus for pausing a send queue without causing sympathy errors
US6941350B1 (en) 2000-10-19 2005-09-06 International Business Machines Corporation Method and apparatus for reliably choosing a master network manager during initialization of a network computing system
US7113995B1 (en) 2000-10-19 2006-09-26 International Business Machines Corporation Method and apparatus for reporting unauthorized attempts to access nodes in a network computing system
US7636772B1 (en) 2000-10-19 2009-12-22 International Business Machines Corporation Method and apparatus for dynamic retention of system area network management information in non-volatile store
US6978300B1 (en) 2000-10-19 2005-12-20 International Business Machines Corporation Method and apparatus to perform fabric management
US6990528B1 (en) 2000-10-19 2006-01-24 International Business Machines Corporation System area network of end-to-end context via reliable datagram domains
US7099955B1 (en) 2000-10-19 2006-08-29 International Business Machines Corporation End node partitioning using LMC for a system area network
US20020073257A1 (en) * 2000-12-07 2002-06-13 Ibm Corporation Transferring foreign protocols across a system area network
US20020184379A1 (en) * 2001-06-04 2002-12-05 Geping Chen Forwarding data packets
US20020188433A1 (en) * 2001-06-06 2002-12-12 Honeywell International Inc. Generic device simulator for process control
AU2003217970B2 (en) * 2002-03-06 2007-12-20 Pharos Systems International, Inc. Document processing system including multi-device compatible interface and related methods
US6904476B2 (en) 2003-04-04 2005-06-07 Rosemount Inc. Transmitter with dual protocol interface
US20050154800A1 (en) * 2004-01-13 2005-07-14 Ofir Zohar Command serialization
DE102004007994B4 (de) * 2004-02-18 2007-07-12 Infineon Technologies Ag Verfahren zum Zuweisen von Zugriffsrechten an ein Peripheriegerät
US7506214B2 (en) * 2004-04-22 2009-03-17 International Business Machines Corporation Application for diagnosing and reporting status of an adapter
US7281208B2 (en) * 2004-11-18 2007-10-09 Microsoft Corporation Image stitching methods and systems
US7966428B2 (en) * 2006-10-31 2011-06-21 Apple Inc. Control of electronic devices based on capability descriptions
EP4195044A1 (fr) * 2021-12-09 2023-06-14 Bull SAS Méthode d'optimisation de la consommation énergétique d'une infrastructure informatique par suspension de travaux

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4315310A (en) * 1979-09-28 1982-02-09 Intel Corporation Input/output data processing system
US4410962A (en) * 1981-02-17 1983-10-18 Pitney Bowes Inc. Mailing system interface interconnecting incompatible communication systems
US4449182A (en) * 1981-10-05 1984-05-15 Digital Equipment Corporation Interface between a pair of processors, such as host and peripheral-controlling processors in data processing systems
US4475156A (en) * 1982-09-21 1984-10-02 Xerox Corporation Virtual machine control
US4542457A (en) * 1983-01-11 1985-09-17 Burroughs Corporation Burst mode data block transfer system
US4589063A (en) * 1983-08-04 1986-05-13 Fortune Systems Corporation Data processing system having automatic configuration
US4587628A (en) * 1983-12-05 1986-05-06 International Business Machines Corporation Method and apparatus for dynamic invocation of utilities
US4701848A (en) * 1984-11-19 1987-10-20 Clyde, Inc. System for effectively paralleling computer terminal devices
US4649479A (en) * 1985-02-28 1987-03-10 International Business Machines Corp. Device driver and adapter binding technique
US4754395A (en) * 1985-05-06 1988-06-28 Computer X, Inc. Network interface module with minimized data paths
US4747040A (en) * 1985-10-09 1988-05-24 American Telephone & Telegraph Company Dual operating system computer
US4748656A (en) * 1986-03-21 1988-05-31 American Telephone And Telegraph Company Personal computer--as an interface between a telephone station set and a business communication system
US4736321A (en) * 1986-05-05 1988-04-05 International Business Machines Corporation Communication method between an interactive language processor workspace and external processes
US4768150A (en) * 1986-09-17 1988-08-30 International Business Machines Corporation Application program interface to networking functions

Also Published As

Publication number Publication date
WO1988002151A1 (en) 1988-03-24
EP0324737B1 (en) 1992-08-26
CA1294711C (en) 1992-01-21
US4975829A (en) 1990-12-04
SG59793G (en) 1993-07-09
KR880701916A (ko) 1988-11-07
EP0324737A1 (en) 1989-07-26
JPH02500059A (ja) 1990-01-11
KR950002714B1 (ko) 1995-03-24

Similar Documents

Publication Publication Date Title
JPH0619753B2 (ja) 通信インタフェースプロトコル
US5600805A (en) Pass-through for I/O channel subsystem call instructions for accessing shared resources in a computer system having a plurality of operating systems
US5307491A (en) Layered SCSI device driver with error handling circuit providing sense data from device directly to the driver on the occurrence of an error
US6484217B1 (en) Managing shared devices in a data processing system
US6185638B1 (en) Method and system for dynamically assigning addresses to an input/output device
US5867736A (en) Methods for simplified integration of host based storage array control functions using read and write operations on a storage array control port
US6772231B2 (en) Structure and process for distributing SCSI LUN semantics across parallel distributed components
US6240467B1 (en) Input/output operation request handling in a multi-host system
TWI222025B (en) Method and apparatus for dynamically allocating and deallocating processors in a logical partitioned data processing system
US6202095B1 (en) Defining characteristics between processing systems
US20060064523A1 (en) Control method for virtual machine
US5062042A (en) System for managing data which is accessible by file address or disk address via a disk track map
CA2310099A1 (en) Computer system transparent data migration
JPH0666821B2 (ja) デ−タ通信コントロ−ラ
GB2366048A (en) Selecting a preferred path to a storage device
US5664219A (en) Method and system for controlling servicability of adapters connected by an I/O channel interface to a computer system
US5754887A (en) System for limiting access of plurality of requests to peripheral bus by halting transmission to particular peripheral devices and resuming transmission after second predetermined time period expiration
EP0317481A2 (en) Remote storage management mechanism and method
US8898444B1 (en) Techniques for providing a first computer system access to storage devices indirectly through a second computer system
US5712974A (en) Method and apparatus for controlling the configuration definitions in a data processing system with a plurality of processors
US8151028B2 (en) Information processing apparatus and control method thereof
US10263826B1 (en) Method of initiating execution of mainframe jobs from a virtual tape server
US5652914A (en) Method and system for superimposing, creating and altering I/O applications and controls within an I/O subsystem by using an I/O subchannel intercept field
JP3176472B2 (ja) データ転送方式
JPS6239789B2 (ja)

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees