[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[linux-users:102235] Re: 組込Linuxドライバの作成方法


川辺と申します。

>>>>> "Naoto" == Naoto Shimazaki <igy@xxxxxxxx> writes:

Naoto> 私は抽象化レイヤは見ためも抽象的な方が好みです。

私はケースバイケースですね。

ソースコードが素直であるかどうかと性能(効率)のバランスが優先しますね。
結果として学術的に最悪な実装であっても良いと思う口です。

ただ、今の Linux のカーネルがそうかと言われると引っ掛かるところは色々
とあります。抽象化が即非効率でないのは明らかですので、結局は設計条件と
して何をベースにするかと言うことだと思います。

そういう意味では、LinuxはPC依存の泥臭さがきつい気はしますが。

でも、昔のSVR(今は知らない)もBSD(こっちも今のは良く知らないので)もそう
いう部分は多かった(3B2だったり、VAXだったり)様な。Mach3.0とかは結構綺
麗な雰囲気でしたが。

Naoto> 私にはとても自然なこととは思えません。むしろ力業というか。
Naoto> ただ、最近では i386 のアーキテクチャが一種の抽象プロセッサ
Naoto> アーキテクチャのように扱われだしたりしていますし(これも激しい
Naoto> 力業)、そういうやり方が時代の流れなのかなとは思います。

えぇとそういうつもりだったんですが。つまり、今は、CPUと言うのはまずx86 
を指す、ってマスコミとか某社とかが勝手にイメージを作り上げて一般にそう
思われているみたい、と言う状況においては、きっと、自然なんでしょう
ねぇ、って感じで。

Naoto> ことデバイスドライバに関するかぎり、割り込み禁止と状態復帰を対に
Naoto> してもさしたる効果はないと思っています。

それ自体と言うよりもその結果、割り込み禁止区間を細かく設定することがし
やすくなると言う卑近な話です。まぁ、これも必要とする局面は限られている
のですが、たまたまそういうのにぶちあたると溜め息が出るわけで。

Naoto> しかし、デバイスを意図通りに制御するのがデバドラの仕事です。
Naoto> デバドラにとって意図しない割り込み禁止状態を放置するのは
Naoto> 決して「フェイルセーフ」ではありません。むしろ、大半のケースで
Naoto> デバイスが機能しないでしょう。

そうですね。デバイスドライバが呼ばれると言う局面においてはそうだと思い
ます。どちらかと言うとドライバが呼び出す共通のサービス関数(抽象化レイ
ヤ含む)の側の話として、呼び出された時の割り込み禁止状態を厳密にしてし
まうよりも、割り込み禁止時に割り込みの状態を保持/復元を行う方が自由度
が高いと思いますし、それが悪い設計だとは思えない、ってとこです。

sleep_on_interruptible()などのLinuxの多くのカーネル内関数は、これをし
ないで、割り込みの状態を保持/復元せずに明示的に禁止/解除をしているので
どうかと思いました。

Naoto> つまりデバドラの場合は、いずれにしてもコードのどこで割り込みが
Naoto> 生じ得るのか厳密に管理してドライバを設計する必要があるわけです。

いえ、その考え方では、やっぱり、Linuxにある様にスケジューラレベルのキュー
をドライバが直接触るべき、と言う風に聴えてしまうのですが。(まぁ、それ
が明らかに否定されているわけではないですが。)
その結果、割り込み禁止に絡まない様なかなり上位の操作を行うところでしか、
カーネル内の共通関数は使ってはいけないと言う流れになりそうです。
--------
  Kawabe,Yoshihiro <ripula@xxxxxxxxxxxxxxx>
  Who is calling me from where?
  Knock on my shell and my mind? from Pearl song.

この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
Follow-Ups: References: