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

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


At Sun, 7 Mar 2004 17:53:15 +0900,
Yoshihiro Kawabe wrote:
> それって、schedule()の中でspin_lock_irq()/spin_unlock_irq()してるとこ
> ろをspin_lock_irqsave()/spin_unlock_irqrestore()に変えて、コンテキスト
> スイッチの前後(same taskでも)save_flags()とrestore_flags()をする様に改
> 造する必要があるわけですよね。

なんとなくちゃんと動かない気がする…

> なんで、Linuxって抽象化されてる気がしない生のsti()やらcli()なのかしら
> と疑問に思うところがありました。

その形のまま、CPU independent に抽象化されてます。
他にも、ISA とか PCI の切口がアーキテクチャ抽象化レイヤとして
使われてます。ちょっとクラっときますね。ここは。

> 昔のBSD(最近の観てないので ....)やUnixって、割り込みの制御って splXX()
> とsplx()でしたよね。

今でもそうですよ。

> x86にはCPUの中での割り込みレベルなんて無かったとは言え、以降に多種のアー
> キに移植された際に割り込みレベルの概念は入れる必要が無いと思われたんで
> すかねぇ。

割り込みレベルが一つか二つしかない CPU の方が最近は優勢です。
割り込みコントローラは CPU アーキテクチャとしばしば独立で、
ものによってハードで多重レベルを直接サポートしてくれるものも
あれば、マスクするだけのものあります。BSD ではそういうのを
ソフトで頑張って splxx な世界へ落しこんでますね。それが
きれいな抽象化のしかたなのかどうかは良く分からないですが。

> でも、2.2.x/2.4.x/2.6.xで schedule() 辺りってかなり変わっている(まぁ、
> O(1)スケジューラやら、SMP対応やら当たり前ですけど)気がします。

2.4 -> 2.6 では preemptible kernel が一番大きいのではないかと。

--
Naoto Shimazaki

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

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