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に対応する。