[表示 : 全て 最新50 1-99 101- 201- 2chのread.cgiへ]
Update time : 11/26 08:25 / Filesize : 70 KB / Number-of Response : 218
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【悪戦】初心者から中級者への道【苦闘】



37 名前:初心者1 mailto:sage [02/09/24 08:15 ID:mdWxu4f9]
デバイスドライバはキャラクタ型と、ブロック型にわかれます。
キャラクタ型は一バイト単位でデバイスとデータのやりとりをし、
ブロック型はそれ以上でやりとりするってことです。(大きさがきまっているかはしりません)

目的:デバイスに対してあるひとつの数字を渡してやるだけのデバイスです。
   ユーザー側からはその渡す数字と、渡した数字の効果の時間だけをわたします。
   具体的に書きたいのですが、友達にばれるといやなので、明言はさけます。

僕がつくったものはIOポートにドライバが直接書き込んで、制御するものです。
ここでIOポートとはデバイスごとに番号がわりふられているもので、
そこに信号をだすことによって制御します。
僕の認識ではIOポートといのは実際のハードウェアのピンとかなんじゃないかなって思ってます。
ほかにIOメモリという方法がありますが、僕は実装してないのでふれません。

デバイスドライバで重要なこととしてカーネル空間とユーザー空間をきちんとわけて考えるってのがあります。
デバイスドライバはカーネル空間の一部なので、アプリケーションを作成するときに使っていた、
関数は一切つかえません、そのかわりカーネルが用意している関数をしようします。

linuxのデバイスドライバはモジュール化することができます。
モジュール化するとはカーネルのコンパイルを一部とりのぞいて、OSの起動中に必要なときにもってこれる状態にすることです。
このため、モジュール化するための様式がある程度きまっていて、その規則にのっとっておこなわなければなりません。

書くときの規則とは、基本としてinit,releaseという関数をつくって、登録と削除をおこなえるようにしなければなりません。
その他にもなんこか使える関数は決まっていて、 initのなかでoperation構造体というものでその一覧をカーネルに登録します。
それによってその登録した関数がユーザー側から使えるようになります。






[ 続きを読む ] / [ 携帯版 ]

全部読む 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<70KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef