JPH0926927A - デバイス制御装置及び方法 - Google Patents

デバイス制御装置及び方法

Info

Publication number
JPH0926927A
JPH0926927A JP17325295A JP17325295A JPH0926927A JP H0926927 A JPH0926927 A JP H0926927A JP 17325295 A JP17325295 A JP 17325295A JP 17325295 A JP17325295 A JP 17325295A JP H0926927 A JPH0926927 A JP H0926927A
Authority
JP
Japan
Prior art keywords
status
information
driver
acquisition
device control
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
JP17325295A
Other languages
English (en)
Inventor
Hideo Honma
英雄 本間
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.)
Canon Inc
Original Assignee
Canon 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 Canon Inc filed Critical Canon Inc
Priority to JP17325295A priority Critical patent/JPH0926927A/ja
Publication of JPH0926927A publication Critical patent/JPH0926927A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】デバイスの情報を迅速に捕捉し、一貫性を保持
する。 【解決手段】ホスト110が立ち上がると、I/Oドラ
イバ102は論理ドライバ101の保持するステータス
取得ルーチンのアドレスとステータスバッファのアドレ
スとを登録したステータスハンドルテーブル107を作
成する。デバイス111にイベントが生じると、I/O
ドライバ102は、ステータスハンドルテーブル107
を参照して、ステータス取得ルーチン104を起動して
ステータスを取得し、ステータスバッファ105にそれ
を格納する。アプリケーションがデバイス111を使用
する場合に、まず論理ドライバ101はステータスバッ
ファ105を参照してステータスをチェックし、その内
容に応じた動作をする。これにより、アプリケーション
がデバイスを使用するたびにステータスを読出す必要が
なく、イベントが生じた時点でのステータスを保持して
おくことができる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、例えばホストコン
ピュータにおけるデバイスドライバなどによるデバイス
の制御、特にデバイスのステータス管理を行うデバイス
制御装置及び方法に関するものである。
【0002】
【従来の技術】従来のホストコンピュータにおいて階層
的な構造のデバイス管理プログラム(デバイスドライ
バ)を持つシステムの例を図12に示す。ホスト120
1は物理的なインタフェースを介してデバイス1202
と接続している。ホスト側のインタフェース回路がI/
Fハードウェア1207で、これを制御するプログラム
がI/Oドライバ1205(下位ドライバ)である。I
/Oドライバ1205はインタフェースの物理的制御管
理を行なうもので、デバイスの機能的制御はその上位に
位置する論理ドライバ1204−1,1204−2…
(上位ドライバ)が行なう。論理ドライバ1204はデ
バイス1202の機能単位毎に存在する。すなわちデバ
イス1202が各種の機能を持つ場合、その各々を個別
の仮想デバイスとみなし、別個の論理ドライバが管理す
る。論理ドライバ1204は基本的にI/Fには関知し
ない。これはI/Oドライバ1205が管理する。
【0003】アプリケーションプログラムがデバイスに
アクセスする場合、まず論理ドライバにアクセスする。
図12の例ではアプリケーション1203−1は論理ド
ライバ1204−1に、アプリケーション1203−2
は論理ドライバ1204−2にアクセスする。このよう
な複数の論理ドライバの例として、デバイス1202に
プリンタとスキャナの機能があるとすると、アプリケー
ション1203−1はプリントアプリケーション、アプ
リケーション1203−2はスキャナユーティリティー
であり、論理ドライバ1204−1はプリンタドライ
バ、論理ドライバ1204−2はスキャナドライバと考
えることができる。
【0004】論理ドライバ1204はアプリケーション
1203の要求に従ってデバイス1202に対して論理
的にコマンドを発行する。このコマンドはデバイス依存
であり、論理ドライバ1204が保持する。
【0005】I/Oドライバ1205は論理ドライバ1
204のコマンド発行要求に対して、物理的な転送制
御、経路制御を行なうとともに、複数の論理ドライバか
らのアクセスに対する排他処理を行なう。またI/Fハ
ードウェア1207からの割り込み要求に対する割り込
み処理ルーチン1206を持つ。これによりI/Fを介
したデバイス1202からの要求を処理する。このI/
Oドライバはデバイスの論理的動作、すなわちコマンド
内容については基本的に関知しない。
【0006】これらの階層構造のドライバ群を介して、
アプリケーション1203からの要求はデバイス120
2にコマンドとして送られ、その動作結果はアプリケー
ションに返される。
【0007】デバイス1202で何らかのイベントが発
生した場合を考える。例えばユーザによって重要な機能
設定変更がなされた場合等である。このような場合ホス
ト1202上でそのデバイス1202を使用するアプリ
ケーションが動作していなくても処理を行なわなければ
ならない。
【0008】イベントが発生した場合のデバイス120
2の処理例を図13に示す。デバイス1202は何らか
のイベントを検出し、それをI/F上に通知する。これ
は、I/Fが例えばSCSIであれば“ATN”、セン
トロニクスであれば“Fault”、IEEE1284
ECPmodeであれば“PcriphReques
t”をアサートする事に相当する。
【0009】これに対応したホストの処理例を図14に
示す。まずI/F上のイベントを検出し、CPU割込を
発生させる。CPU割り込み処理ルーチン(図示せず)
は割り込み原因を設定し、それに対応したI/Oドライ
バの割込処理ルーチン1206を呼び出して処理を行わ
せる。
【0010】I/Oドライバ1205の割込処理ルーチ
ン1206の処理が図15である。ここでは割込処理ル
ーチン1206はそのI/Oドライバを使用する各論理
ドライバにシグナルを発生させる。このシグナルはOS
(図しせず)が持つ機能で、もし論理ドライバがデバイ
スからの応答待ちでスリープしていなければそれを起動
させ、動作中の論理ドライバが存在しない場合は発生し
たシグナルを保持するなどの動作を行なう。このあと割
込の後処理を行ないリターンする。
【0011】アプリケーション側からの処理例を図16
に示す。アプリケーションからの処理要求が発生した場
合、上述したイベント発生のシグナルをチェックする。
もしシグナルがなければ正常動作を行なう。シグナルが
有った場合はそのシグナルの原因を特定するためステー
タス取得コマンドをデバイスに発行し、ステータスを取
得してそれをチェックする。ここでアプリケーションか
らの要求動作の続行の可否を判断する。続行可能であれ
ばそのまま正常動作を行ない、続行不可であればイベン
トの発生をアプリケーションに通知してリターンする。
複数の論理ドライバが起動されている場合には各論理ド
ライバ毎にこのような処理を行ない、動作続行の可否を
判断する。
【0012】
【発明が解決しようとする課題】しかしながら上記の従
来例では以下の問題があった。
【0013】1.I/OドライバはI/O動作に専念
し、デバイス毎のコマンドは基本的に管理していない。
すなわちI/Oドライバの割込処理ではステータスの取
得コマンド,手続の情報をもたないためイベント内容情
報を取得することはできない。実際にイベント情報を取
得するのは論理ドライバがコマンド,処理手続を管理
し、I/Oドライバに指示を発行した時であるが、この
論理ドライバを動作させるのはアプリケーションが動作
した時である。このためイベント発生からステータス取
得まで時間がかかり、イベント情報を逃す可能性があ
る。
【0014】2.アプリケーション動作から論理ドライ
バを動作させ、シグナルを検出してから実際のデバイス
と交信するため応答に時間がかかる。
【0015】3.各論理ドライバが別個に起動されてス
テータスを取得するため、情報に一貫性が無くなる可能
性がある。
【0016】本発明の目的は、デバイスのイベント情報
を逃さず、アプリケーションからの動作要求が有った場
合にイベント情報に応じた動作の応答速度を改善し、複
数の論理ドライバ間でも情報の一貫性を保持することが
できるデバイス制御装置及び方法を提供することにあ
る。
【0017】
【課題を解決するための手段】上記目的を達成するた
め、本発明のデバイス制御装置は次のような構成からな
る。すなわち、所望の機能を果たすデバイスに接続され
たデバイス制御装置であって、前記デバイスに対するア
クセス要求に従って前記デバイスを制御するための制御
手順を発行する論理ドライバ手段と、前記制御手順に従
って前記デバイスを制御するとともに、前記デバイスの
イベント発生時にステータス取得処理を行なうI/Oド
ライバ手段とを備え、前記論理ドライバ手段はデバイス
のステータスの取得に必要なステータス取得情報を保持
し、前記I/Oドライバ手段は前記ステータス取得情報
に従って前記デバイスのステータスを取得し、取得した
ステータスを、前記ステータス取得情報に従って保持す
る。
【0018】あるいは、少なくとも1つの機能を果たす
デバイスに接続されてそれを制御するデバイス制御装置
であって、前記デバイスの機能ごとに設けられた、前記
デバイスからステータス情報を取得するための取得情報
を記憶する取得情報記憶手段と、前記取得情報記憶手段
ごとに取得したステータス情報を記憶するステータス記
憶手段と、デバイスに発生したイベントを検知する検知
手段と、前記検知手段によりイベントが検知されると、
前記デバイスのステータス情報を、前記取得情報に従っ
て読み出し、前記ステータス記憶手段により記憶するス
テータス読出し手段とを備える。
【0019】また、本発明のデバイス制御方法は次のよ
うな構成からなる。すなわち、少なくとも1つの機能を
果たすデバイスを制御するデバイス制御方法であって、
ステータス情報を読出す手順情報の記憶された位置と、
読出したステータス情報を記憶する位置とを表に登録す
る工程と、デバイスのイベントを検知する工程と、前記
表に登録された記憶位置に記憶された手順情報に従って
ステータス情報を読み出す工程と、読出したステータス
情報を前記表に登録された記憶位置に記憶する工程とを
備える。
【0020】
【発明の実施の形態】
[実施形態1]本発明の第1の実施形態であるシステム
の論理構成を図1に示す。
【0021】図1において、110はホストコンピュー
タ、108はその中で実行されるアプリケーション、1
01は論理ドライバ、102はI/Oドライバである。
ホスト110は、I/F109を介してデバイス111
と接続されいる。論理ドライバ101の内部には、デバ
イスのステータス取得処理を行なうステータス取得ルー
チン104、取得したステータスを保持するステータス
バッファ105を持ち、さらにこれらの情報をI/Oド
ライバに登録する登録ルーチン103を持つ。I/Oド
ライバ102の内部には割込処理を行なう割込処理ルー
チン106、割込処理時にステータス取得に必要な情報
を保持するステータスハンドルテーブル107を持つ。
このような構成は論理的なもので、本実施形態ではアプ
リケーション108,論理ドライバ101,I/Oドラ
イバ102はソフトウエアにより実現されている。図1
7はそのための構成図である。ホスト110は、装置全
体を制御するCPU1101,CPU1101により実
行されるプログラムやデータを格納するためのRAM1
102,同じくプログラムやデータを揮発しないように
記憶しておくROM1103,デバイスとのインターフ
ェース1104,RAM1102にロードされて(以
下、単にロードと呼ぶ)実行されるプログラムを格納し
ておくディスク装置などの外部記憶1105を含んでい
る。図1の構成は、RAM1102あるいはROM11
03上のプログラムをCPU1101が実行することで
実現される。
【0022】さて、図1のシステムの動作について以下
に説明する。ホスト110は電源投入時に各種の初期化
動作を行なうが、そのうちデバイスの動作に関する部分
の一部の処理例を図2に示す。システムは立ち上げ動作
過程でまずI/Oドライバをロードし(ステップS20
1)、その内部のステータスハンドルテーブル107を
0にクリアする(ステップS202)。このステータス
ハンドルとは、論理ドライバ内部のステータス取得ルー
チン104のエントリアドレスとステータスバッファ1
05の先頭アドレスとを対にしたデータ構造体の集合で
ある。たとえば下記のような構造を持つ。
【0023】 ここでget_status_entryがステータス取得ルーチンのエ
ントリであり、status_tableがステータスの構造体のポ
インタである。この型であるStatusTableはそのデバイ
スに適切な型として宣言されているものとする。ステー
タスハンドルテーブル107、すなわち上記status_han
dle[N]はStatusHandle型の構造体として宣言される。そ
の要素数Nは適切な整数値とする。すなわち、ステータ
スハンドルテーブル107は図18に示したような構造
である。
【0024】次に論理ドライバをロードして(ステップ
S203)、論理ドライバ101がデバイスの初期化動
作に入る。この論理ドライバ101のデバイス初期化動
作の流れを示したものが図3である。
【0025】論理ドライバの登録ルーチン103は、I
/Oドライバ102内部のステータスハンドルテーブル
107の先頭アドレスを取得する(ステップS30
1)。これはI/Oドライバ102内部にその値を返す
プログラムを内蔵しても良いし、I/Oドライバのロー
ド時にOSに登録し、それを取得しても良い。はじめに
この先頭アドレスを参照アドレスとしてステータスハン
ドルテーブル107の内容をチェックし(ステップS3
02)、もし0であればそのステータスハンドルは未登
録であるとみなして、その論理ドライバのステータス取
得ルーチンのエントリ、ステータスバッファの先頭アド
レスを登録する(ステップS304,S305)。もし
ステータスハンドルが0でなければすでに他の論理ドラ
イバが登録済みであるとみなし、ステータスハンドルの
参照アドレスをインクリメントして次のステータスハン
ドルのチェックを行なう(ステップS303)。ステー
タスハンドルの登録を行なった後、さらに他の初期化動
作を行ないデバイス初期化動作を完了する(ステップS
306)。論理ドライバが複数ある場合、この処理を論
理ドライバ毎に行なう。
【0026】図1の例では、デバイス111に対する論
理ドライバ101におけるステータス取得ルーチン10
4のエントリアドレスと、ステータスバッファ105の
アドレスとを対にしてステータスハンドルテーブル10
7にステータスハンドルとして登録する。
【0027】次にデバイスでイベントが発生した場合の
処理例について説明する。ホストは図14に説明したよ
うにI/F上のイベントを検出してI/Oドライバの割
込処理ルーチンに入る。この時のI/Oドライバの処理
例を図4に示す。
【0028】I/Oドライバ102は割込処理において
ステータスハンドルテーブル107をチェックし(ステ
ップS401)、ステータスハンドルが0でなければ論
理ドライバのステータス取得ルーチンエントリが登録済
みとみなして、その処理をコールする(ステップS40
3)。それによりステータスを取得し、それをステータ
スハンドルテーブル107に登録された論理ドライバ内
部のステータスバッファ105にコピーする(ステップ
S404)。この後ステータスハンドルテーブルの参照
アドレスのステータスハンドルが0となった時、全ての
登録に対して処理が完了したとみなす。このようにステ
ータス取得を登録した論理ドライバ全てについてステー
タスの取得とその格納を行ったあと他の割込処理を行な
い(ステップS406)、割込処理を完了する。
【0029】こうして格納されたステータスはアプリケ
ーション108からそのデバイス111へ動作要求が発
生した時に参照する。この時の論理ドライバの処理例を
図5に示す。
【0030】アプリケーション108から動作要求発生
時、論理ドライバ101はステータスバッファ105を
参照する(ステップS502)。このステータスバッフ
ァ105には上述の動作により最新のイベント発生時の
ステータスが入っている。このステータスから論理ドラ
イバ101はアプリケーション108からの動作要求が
実行可能か否かを判断し(ステップS503)、可能な
らば正常動作を行ない(ステップS504)、不可能な
らば異常ステータスをアプリケーションに返して動作を
完了する(ステップS505)。
【0031】アプリケーション動作要求とイベント処理
の割込動作とが同時に発生する可能性があるが、これは
セマフォ等の適切なステータスバッファの参照のロック
機構を設けることで障害の発生を回避できる。
【0032】以上説明したように本実施形態によれば、
デバイスからのイベント発生による割込発生直後に、そ
の処理を行なうI/Oドライバの割込処理が、ステータ
スをデバイスから取得し、ステータスバッファに保持す
るため、イベント発生から短時間でステータスを取得で
き、これによりイベントの情報を逃すことなく、情報の
一貫性を保持でき、かつアプリケーションからの動作要
求時には保持したステータスにアクセスするため、短時
間での応答が可能となる。またI/Oドライバが使用す
るステータス取得手続は論理ドライバに保持した情報を
使用するため、柔軟な処理が可能となり、その論理ドラ
イバに最適なステータス情報を取得することができる。
【0033】[実施形態2]本発明の第2の実施形態を
図6に示す。図1の構成例と同一の要素は同一の番号を
記してある。また、論理ドライバとI/Oドライバ以外
は図1と同じ構成であるため省いてある。第1の実施形
態では各論理ドライバのステータス取得ルーチンエント
リとステータスバッファアドレスとを対にしてステータ
スハンドルとして管理したが、本構成ではステータスの
取得は単一のルーチンで行なう。
【0034】図6は1つのI/Oドライバ102を複数
の論理ドライバ101−1,101−2,…が使用する
場合を示している。最初にロードされる論理ドライバ1
01−1は登録ルーチン103−1がステータス取得ル
ーチン104−1のエントリとステータスバッファ10
5−1の先頭アドレスの両方の登録を行ない、次にロー
ドされる論理ドライバ101−2はステータス取得ルー
チン104−2のエントリは登録せず、ステータスバッ
ファ105−2の先頭アドレスを登録する事を示してい
る。I/Oドライバ102はステータス取得ルーチンエ
ントリアドレスをステータス取得ルーチンアドレスレジ
スタ601に保持し、割込処理時のステータス取得には
このアドレスのプログラムを使用する。ステータスバッ
ファアドレステーブル602は第1の実施形態のステー
タスハンドルテーブルのStatusTable* status_table;の
配列である。割込処理ルーチンは取得したステータスを
これに示された各論理ドライバのステータスバッファに
コピーする。
【0035】ホストの電源投入直後のデバイス初期化動
作は第1の実施形態の図2,図3と同様である。I/O
ドライバ102がステータス取得ルーチンアドレスレジ
スタ601、ステータスバッファアドレステーブル60
2を0にクリアした後論理ドライバの初期化動作を行な
う。
【0036】この処理例を図7に示す。論理ドライバの
登録ルーチン103−1はステータス取得ルーチンアド
レスレジスタ601のアドレスを取得してその内容をチ
ェックする(ステップS701)。もし0であればステ
ータス取得ルーチンは未登録であるとみなしてその論理
ドライバ101−1の持つステータス取得ルーチン10
4−1のエントリを登録する(ステップS703)。0
でなければすでに他の論理ドライバが登録済みとみなし
て登録をスキップする。
【0037】次にステータスバッファアドレステーブル
602の先頭アドレスを取得し(ステップS704)、
それを参照アドレスとしてその内容のステータスバッフ
ァアドレスをチェックする。もし0でなければ参照アド
レスをインクリメントして次のアドレスをチェックして
ゆく(ステップS706)。アドレスが0ならばそのテ
ーブル要素は未登録とみなしてその論理ドライバのステ
ータスバッファ先頭アドレスを登録する(ステップS7
07)。これらの登録完了後、他の初期化動作を行ない
論理ドライバの初期化動作を完了する(ステップS70
8)。
【0038】次にデバイスでイベントが発生した場合の
処理例について説明する。ホストは図14に説明したよ
うにI/F上のイベントを検出してI/Oドライバの割
込処理ルーチンに入る。この時のI/Oドライバの処理
例を図8に示す。
【0039】I/Oドライバは割込処理においてステー
タス取得ルーチンアドレスレジスタをチェックし(ステ
ップS801)、レジスタ内容が0でなければ論理ドラ
イバのステータス取得ルーチンエントリが登録済みとみ
なして、登録された処理をコールする(ステップS80
3)。それによりステータスを取得し、それをステータ
スバッファアドレステーブル602に登録された論理ド
ライバ内部のステータスにバッファコピーする(ステッ
プS804)。この後ステータスバッファアドレステー
ブル602の参照アドレスをインクリメントし(ステッ
プS805)、次のステータスバッファアドレステーブ
ルの内容についても同様の処理を繰り返し(ステップS
806)、登録された全ての論理ドライバのステータス
バッファにステータスをコピーする。参照アドレスの内
容が0となった時、全てのステータスバッファにコピー
が完了したとみなす。この後他の割込処理を行ない割込
処理を完了する(ステップS807)。
【0040】以上のようにしてデバイスでイベントが発
生した場合、その時点におけるデバイスのステータスを
保持しておくことができる。
【0041】アプリケーションからデバイスのアクセス
が発生した場合は第1の実施形態の図5と同様の処理を
行なう。
【0042】本実施形態ではデバイスのステータスは1
回取得すれば全ての論理ドライバに必要な情報を提供で
きる。これによりステータス取得ルーチンエントリの容
量を削減できるとともに、ステータス取得のためのデバ
イスアクセスが1度で済むため動作を軽減できる。ま
た、同じI/Oドライバを使用する論理ドライバは、デ
バイスのステータスを共通のものとして扱いことができ
るため、論理ドライバによるステータスの相違による処
理の不具合が生じることがない。
【0043】[実施形態3]本発明の第3の実施形態を
図9に示す。図1,図6の構成例と同一の要素は同一の
番号を記してある。本構成例ではステータスバッファア
ドレステーブルは持たず、ステータスバッファは、シス
テムを管理するOS901内部のワーク領域に確保し、
各論理ドライバはそのステータスバッファ902を共有
して参照する。
【0044】電源投入直後の初期化動作はステータスバ
ッファアドレステーブルが無いため、第2の実施形態の
動作のサブセットとなる。I/Oドライバ102がステ
ータス取得ルーチンアドレスレジスタ601を0にクリ
アしたあと論理ドライバの初期化動作を行なう。論理ド
ライバ101の登録ルーチン103は図7の処理の内ス
テータス取得ルーチンのエントリ登録に関するステップ
S701〜S703及びS708の処理を行なう。複数
の論理ドライバをロードする場合、最初にロードする論
理ドライバのステータス取得ルーチンエントリのみを登
録することは第2の実施形態と同様である。
【0045】次にデバイスでイベントが発生した場合の
処理について説明する。ホストは図14に説明したよう
にI/F上のイベントを検出してI/Oドライバの割込
処理ルーチンに入る。この時のI/Oドライバの処理例
を図10に示す。
【0046】ステータス取得までの動作ステップS10
01〜S1003は図8の第2の実施形態の動作ステッ
プS801〜S803と同様である。本構成例では割込
処理106は、ステータスバッファをOS901のワー
ク領域に確保してそのアドレスを取得し(ステップS1
004)、ステータスをステータスバッファ902にコ
ピーする(ステップS1005)。このあと他の割込処
理を行ない処理を完了する(ステップS1006)。
【0047】アプリケーションからデバイスのアクセス
が発生した場合は論理ドライバ101は第1の実施形態
の図5と同様の処理を行なうが、ステータスの参照はO
Sからステータスバッファ902のアドレスを取得して
内容を参照する。このステータスバッファ902のアド
レスはI/Oドライバ102内部で保持し、I/Oドラ
イバ102から論理ドライバ101が取得しても良い。
【0048】本実施形態では単一のステータスバッファ
902を各論理ドライバから共有して参照するため、論
理ドライバ間の情報の一貫性が保証されるとともに、複
数のステータスバッファへのコピーの必要が無い分処理
が軽減される。
【0049】[実施形態4]本発明の第4の実施形態を
図11に示す。図1,図9の構成例と同一の要素は同一
の番号を記してある。ステータスバッファはOS901
内部のワーク領域に確保し、各論理ドライバはそのステ
ータスバッファ902を共有して参照することは第3の
実施形態と同様である。本実施形態ではI/Oドライバ
102内部にステータス取得コマンドバッファ1102
を設け、イベント発生時にはI/Oドライバ102はこ
のコマンドを発行してステータスを取得する。
【0050】電源投入直後の初期化動作は第3の実施形
態の動作と同様である。I/Oドライバ102がステー
タス取得コマンドバッファ1102を0にクリアしたあ
と論理ドライバの初期化動作を行なう。論理ドライバ1
01の登録ルーチン103はステータス取得コマンドバ
ッファ1102のアドレスを取得してその内容をチェッ
クする。もし0であればステータス取得コマンドは未登
録であるとみなしてその論理ドライバの持つステータス
取得コマンド1101−1を登録する。0でなければ既
に他の論理ドライバが登録済みとみなして登録をスキッ
プする。すなわち最初にロードする論理ドライバのステ
ータス取得コマンドのみを登録する。
【0051】次にデバイスでイベントが発生した場合の
処理例について説明する。ホストは図14に説明したよ
うにI/F上のイベントを検出してI/Oドライバの割
込処理ルーチンに入る。本実施形態では割込処理ルーチ
ンはステータスを取得するためにステータスコマンドバ
ッファ1102に登録されたコマンドをデバイスに発行
する。これにより取得したステータスは第3の実施形態
と同様にOS901のワーク領域にステータスバッファ
902を確保し、そのアドレスを取得してステータスを
コピーする。このあと他の割込処理を行ない処理を完了
する。
【0052】アプリケーションからのアクセスが発生し
た場合の動作は第3の実施形態と同様である。
【0053】本構成例では割込処理106は論理ドライ
バ101が指定したコマンドを予めI/Oドライバに記
述した操作で発行し、ステータスを取得する。このた
め、ステータス取得手順が単純に定型化されたデバイ
ス、ドライバに適合する。
【0054】なお、上述の例ではステータス取得コマン
ドバッファ1102は単一コマンドでも、もしくは単一
の論理ドライバからの登録しか行われないが、ステータ
ス取得コマンドバッファを配列にして、複数の論理ドラ
イバが異なるコマンドを登録できるように構成しても良
い。またステータスバッファ902をOSワークエリア
に確保せず、第1の実施形態のように各論理ドライバの
内部に確保するように構成しても良い。
【0055】また、本発明は、『ホストコンピュータ、
インタフェース、プリンタ等の』複数の機器から構成さ
れるシステムに適用しても、『複写機等の』1つの機器
からなる装置に適用しても良い。また、本発明はシステ
ム或は装置にプログラムを供給することによって実施さ
れる場合にも適用できることは言うまでもない。この場
合、本発明に係るプログラムを格納した記憶媒体が本発
明を構成することになる。そして、該記憶媒体からその
プログラムをシステム或は装置に読み出すことによっ
て、そのシステム或は装置が、予め定められた仕方で動
作する。
【0056】
【発明の効果】以上説明したように本発明のデバイス制
御装置及び方法によれば、デバイスからのイベント発生
直後にそのステータスをデバイスから取得して保持する
ため、イベント発生から短時間でステータスを取得で
き、これによりイベントの情報を逃すことなく情報の一
貫性を保持でき、また、ステータスを用いる際には保持
したステータスにアクセスするため短時間での応答が可
能となる。
【0057】またステータス取得手続は論理ドライバに
保持した情報を使用するため、柔軟な処理が可能とな
り、その論理ドライバに最適なステータス情報を取得す
ることができる。
【0058】
【図面の簡単な説明】
【図1】本発明の第1の実施形態を示す図である。
【図2】ホストの初期化時の動作アルゴリズム例であ
る。
【図3】論理ドライバの初期化動作アルゴリズム例であ
る。
【図4】I/Oドライバのステータス取得動作アルゴリ
ズム例である。
【図5】論理ドライバの通常動作アルゴリズム例であ
る。
【図6】本発明の第2の実施形態を示す図である。
【図7】論理ドライバの処理か動作アルゴリズム例であ
る。
【図8】I/Oドライバのステータス取得動作アルゴリ
ズム例である。
【図9】本発明の第3の実施形態を示す図である。
【図10】I/Oドライバのステータス取得動作アルゴ
リズム例である。
【図11】本発明の第4の実施形態を示す図である。
【図12】システム構造の概略図である。
【図13】デバイスのイベント発生通知動作のアルゴリ
ズム例である。
【図14】ホストの割込処理アルゴリズム例である。
【図15】I/Oドライバの割込処理動作アルゴリズム
例である。
【図16】論理ドライバのイベント検出動作アルゴリズ
ム例である。
【図17】実施形態の装置を実現するための構成図であ
る。
【図18】ステータスハンドルテーブルの構造を示す図
である。
【符号の説明】
101 論理ドライバ 102 I/Oドライバ 103 登録ルーチン 104 ステータス取得ルーチン 105 ステータスバッファ 106 割込処理 107 ステータスハンドルテーブル 601 ステータス取得ルーチンアドレスレジスタ 602 ステータスバッファアドレステーブル 901 OS 902 ステータスバッファ 1101 ステータス取得コマンド 1102 ステータス取得コマンドバッファ 1201 ホスト 1202 デバイス 1203 アプリケーション 1204 論理ドライバ 1205 I/Oドライバ 1206 割込処理 1207 I/Fハードウェア

Claims (13)

    【特許請求の範囲】
  1. 【請求項1】 所望の機能を果たすデバイスに接続され
    たデバイス制御装置であって、 前記デバイスに対するアクセス要求に従って前記デバイ
    スを制御するための制御手順を発行する論理ドライバ手
    段と、 前記制御手順に従って前記デバイスを制御するととも
    に、前記デバイスのイベント発生時にステータス取得処
    理を行なうI/Oドライバ手段とを備え、 前記論理ドライバ手段はデバイスのステータスの取得に
    必要なステータス取得情報を保持し、前記I/Oドライ
    バ手段は前記ステータス取得情報に従って前記デバイス
    のステータスを取得し、取得したステータスを、前記ス
    テータス取得情報に従って保持することを特徴とするデ
    バイス制御装置。
  2. 【請求項2】 前記論理ドライバ手段は、前記ステータ
    ス取得情報を登録する登録手段を有することを特徴とす
    る請求項1記載のデバイス制御装置。
  3. 【請求項3】 前記I/Oドライバ手段は前記ステータ
    ス取得情報にアクセスするためのアクセス情報を保持
    し、前記論理ドライバ手段は、前記アクセス情報を設定
    することを特徴とする請求項1または2記載のデバイス
    制御装置。
  4. 【請求項4】 前記ステータス取得情報は、ステータス
    を取得するための手順情報を含み、前記アクセス情報
    は、前記手順情報のアドレスを含むことを特徴とする請
    求項3に記載のデバイス制御装置。
  5. 【請求項5】 前記ステータス取得情報は、ステータス
    を取得するための手順情報としてコマンド情報を含み、
    前記I/Oドライバは前記コマンド情報に応じた所定の
    手順で前記ステータス情報を取得することを特徴とする
    請求項3に記載のデバイス制御装置。
  6. 【請求項6】 前記ステータス取得情報は、ステータス
    を保持するための領域を含み、前記アクセス情報は、前
    記領域のアドレスを含むことを特徴とする請求項3又は
    4に記載のデバイス制御装置。
  7. 【請求項7】 前記ステータスを保持するための保持手
    段をさらに備え、前記I/Oドライバ手段により取得さ
    れたステータスは、前記保持手段により保持されること
    を特徴とする請求項1乃至5いずれかに記載のデバイス
    制御装置。
  8. 【請求項8】 少なくとも1つの機能を果たすデバイス
    に接続されてそれを制御するデバイス制御装置であっ
    て、 前記デバイスの機能ごとに設けられた、前記デバイスか
    らステータス情報を取得するための取得情報を記憶する
    取得情報記憶手段と、 前記取得情報記憶手段ごとに取得したステータス情報を
    記憶するステータス記憶手段と、 デバイスに発生したイベントを検知する検知手段と、 前記検知手段によりイベントが検知されると、前記デバ
    イスのステータス情報を、前記取得情報に従って読み出
    し、前記ステータス記憶手段により記憶するステータス
    読出し手段とを備えることを特徴とするデバイス制御装
    置。
  9. 【請求項9】 前記ステータス読出し手段は、前記取得
    情報の記憶位置を保持し、該記憶位置に応じた取得情報
    に基づいてステータス情報を読出すことを特徴とする請
    求項8に記載のデバイス制御装置。
  10. 【請求項10】 前記ステータス読出し手段は、取得し
    たステータス情報を記憶すべき位置を保持し、該記憶す
    べき位置に基づいてステータス情報を記憶する請求項8
    または9に記載のデバイス制御装置。
  11. 【請求項11】 前記取得情報記憶手段は、取得情報と
    してステータス情報を読出す手順情報を記憶し、前記ス
    テータス読出し手段は、前記手順情報に従ってステータ
    ス情報を読出すことを特徴とする請求項8乃至10いず
    れかに記載のデバイス制御装置。
  12. 【請求項12】 前記取得情報記憶手段は、取得情報と
    してステータス情報を読出すコマンド情報を記憶し、前
    記ステータス読出し手段は、前記コマンド情報に対応し
    て予め与えられている手順でステータス情報を読出すこ
    とを特徴とする請求項8乃至10いずれかに記載のデバ
    イス制御装置。
  13. 【請求項13】 少なくとも1つの機能を果たすデバイ
    スを制御するデバイス制御方法であって、 ステータス情報を読出す手順情報の記憶された位置と、
    読出したステータス情報を記憶する位置とを表に登録す
    る工程と、 デバイスのイベントを検知する工程と、 前記表に登録された記憶位置に記憶された手順情報に従
    ってステータス情報を読み出す工程と、 読出したステータス情報を前記表に登録された記憶位置
    に記憶する工程と、を備えることを特徴とするデバイス
    制御方法。
JP17325295A 1995-07-10 1995-07-10 デバイス制御装置及び方法 Pending JPH0926927A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP17325295A JPH0926927A (ja) 1995-07-10 1995-07-10 デバイス制御装置及び方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP17325295A JPH0926927A (ja) 1995-07-10 1995-07-10 デバイス制御装置及び方法

Publications (1)

Publication Number Publication Date
JPH0926927A true JPH0926927A (ja) 1997-01-28

Family

ID=15956997

Family Applications (1)

Application Number Title Priority Date Filing Date
JP17325295A Pending JPH0926927A (ja) 1995-07-10 1995-07-10 デバイス制御装置及び方法

Country Status (1)

Country Link
JP (1) JPH0926927A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003501746A (ja) * 1999-06-09 2003-01-14 クロジック コーポレーション ホスト・システムとホスト・アダプタとの間でi/oブロックを自動的に転送するための方法および装置
JP2009205347A (ja) * 2008-02-27 2009-09-10 Fujitsu Ltd 情報処理システム、情報処理システムの制御方法、および情報処理システムの制御プログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003501746A (ja) * 1999-06-09 2003-01-14 クロジック コーポレーション ホスト・システムとホスト・アダプタとの間でi/oブロックを自動的に転送するための方法および装置
JP2009205347A (ja) * 2008-02-27 2009-09-10 Fujitsu Ltd 情報処理システム、情報処理システムの制御方法、および情報処理システムの制御プログラム

Similar Documents

Publication Publication Date Title
JP3593241B2 (ja) 計算機の再起動方法
CN100495375C (zh) 用于选择性地停止dma操作的方法、设备和系统
US6098158A (en) Software-enabled fast boot
JP3546678B2 (ja) マルチos構成方法
JP3085899B2 (ja) マルチプロセッサシステム
US20070067775A1 (en) System and method for transferring data between virtual machines or other computer entities
EP0431467A1 (en) Multiprocessor system having distributed shared resources and dynamic global data replication
JP5427245B2 (ja) マルチコアプロセッサを有する要求処理システム
US6668314B1 (en) Virtual memory translation control by TLB purge monitoring
JPH07504527A (ja) 高性能の不揮発性ram保護式の書き込みキャッシュアクセラレータシステム
JPH0531179B2 (ja)
JPS6149709B2 (ja)
US11099991B2 (en) Programming interfaces for accurate dirty data tracking
CN101290595B (zh) 在异步环境下探查系统管理程序任务的系统和方法
JP2009211517A (ja) 仮想計算機冗長化システム
JP2008102850A (ja) 情報処理装置及び情報処理方法
JP4490745B2 (ja) ホットスタンバイシステム
US7418487B2 (en) Apparatus and the method for integrating NICs with RDMA capability but no hardware memory protection in a system without dedicated monitoring processes
US20090300434A1 (en) Clearing Interrupts Raised While Performing Operating System Critical Tasks
JPH0926927A (ja) デバイス制御装置及び方法
US20090300290A1 (en) Memory Metadata Used to Handle Memory Errors Without Process Termination
JP6725662B2 (ja) 計算機システムおよび処理方法
EP1895427B1 (en) Data processing system, data processing apparatus, and data processing method
JP2002258971A (ja) 計算機システムの再立上げ方法
JP2001236237A (ja) マルチos構成方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20041109

A131 Notification of reasons for refusal

Effective date: 20041122

Free format text: JAPANESE INTERMEDIATE CODE: A131

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050401

A521 Written amendment

Effective date: 20050530

Free format text: JAPANESE INTERMEDIATE CODE: A523

A02 Decision of refusal

Effective date: 20050801

Free format text: JAPANESE INTERMEDIATE CODE: A02