readシステムコールが呼び出す関数名をdio_readとする。
このdio_readの書式は、L.D.D.の「3.8 readとwrie]に合わせて、
次のようにする。
各引数(パラメータ)は次のような意味を持つ。
filpは、dio_openやdio_releaseと同じくファイルポイン
タ(file pointer)を示している。
buffは、デバイスのデータを格納してユーザ空間に渡すためのバッファ
(buffer)である。
countは、読み込みを行うデータのサイズである。
offpは、ユーザアプリケーション側からアクセスしているファイルの位
置を示す。今回の実験はDIOボードの制御なので特には使用しない。
戻り値(返り値)は、readシステムコールの呼び出しを行ったアプリケー
ション側で、以下のような意味となるように実装していくことにする。
readシステムコール実行時に渡したcount値と等しい場合
は、要求した通りのバイト数のデータが取得できたことを示す。
conutよりも少ない場合には、要求したバイト
数の一部分のみが取得できたことを示す。(汎用入力の最大点数を越える
ような値を指定した場合に、最大点数まで入力を行って制御を完了する。)
<linux/erro.h>の値を使用する。
今回の実験では、最初はdio_read関数を次のようなスペック(仕様)で作
成することにする。
bdataに入力させる。なお、bdataはbyte dataの略である。
PCIバスのAD(00)である。
Address and DataのData
であり、PCIバスのピン58(サイドA側)が受け持っている。
AD(00)は、DIOボードPCI-2726CのIN1に対応する。