- 37 名前:初心者1 mailto:sage [02/09/24 08:15 ID:mdWxu4f9]
- デバイスドライバはキャラクタ型と、ブロック型にわかれます。
キャラクタ型は一バイト単位でデバイスとデータのやりとりをし、 ブロック型はそれ以上でやりとりするってことです。(大きさがきまっているかはしりません) 目的:デバイスに対してあるひとつの数字を渡してやるだけのデバイスです。 ユーザー側からはその渡す数字と、渡した数字の効果の時間だけをわたします。 具体的に書きたいのですが、友達にばれるといやなので、明言はさけます。 僕がつくったものはIOポートにドライバが直接書き込んで、制御するものです。 ここでIOポートとはデバイスごとに番号がわりふられているもので、 そこに信号をだすことによって制御します。 僕の認識ではIOポートといのは実際のハードウェアのピンとかなんじゃないかなって思ってます。 ほかにIOメモリという方法がありますが、僕は実装してないのでふれません。 デバイスドライバで重要なこととしてカーネル空間とユーザー空間をきちんとわけて考えるってのがあります。 デバイスドライバはカーネル空間の一部なので、アプリケーションを作成するときに使っていた、 関数は一切つかえません、そのかわりカーネルが用意している関数をしようします。 linuxのデバイスドライバはモジュール化することができます。 モジュール化するとはカーネルのコンパイルを一部とりのぞいて、OSの起動中に必要なときにもってこれる状態にすることです。 このため、モジュール化するための様式がある程度きまっていて、その規則にのっとっておこなわなければなりません。 書くときの規則とは、基本としてinit,releaseという関数をつくって、登録と削除をおこなえるようにしなければなりません。 その他にもなんこか使える関数は決まっていて、 initのなかでoperation構造体というものでその一覧をカーネルに登録します。 それによってその登録した関数がユーザー側から使えるようになります。
|

|