川辺と申します。 # また、オフトピ気味。 >>>>> "Naoto" == Naoto Shimazaki <igy@xxxxxxxx> writes: Naoto> interruptible_sleep_on() を、任意の割り込み禁止レベルで Naoto> 呼び出して良い仕様にすれば良かっただけのことなんです。 Naoto> つーか BSD の tsleep() はそうだし。 それって、schedule()の中でspin_lock_irq()/spin_unlock_irq()してるとこ ろをspin_lock_irqsave()/spin_unlock_irqrestore()に変えて、コンテキスト スイッチの前後(same taskでも)save_flags()とrestore_flags()をする様に改 造する必要があるわけですよね。 ただ、それだけでは色々と問題があるんでしょうね。 なんで、Linuxって抽象化されてる気がしない生のsti()やらcli()なのかしら と疑問に思うところがありました。それに、save_flags(); cli();と restore_flags()として使わせるのもださいとは思います。 後、cli()やsti()って設定するだけで前の状態無視ってのも、どうかと思いま す。 昔のBSD(最近の観てないので ....)やUnixって、割り込みの制御って splXX() とsplx()でしたよね。 x86にはCPUの中での割り込みレベルなんて無かったとは言え、以降に多種のアー キに移植された際に割り込みレベルの概念は入れる必要が無いと思われたんで すかねぇ。確かに、ほとんどの局面では、splhi()しかいらなかったけど、非 常に稀にspl3()だとかspl6()だとか使うと有効だったんですけどね。応答性能 とか考えるときこういう制御が可能かどうかは重要だと思うのですが。 Naoto> いまさら変えられないんでマクロなんか使うハメになったのでしょう。 まぁ、今変更すると影響範囲が予測不能になりそうですからね。 でも、2.2.x/2.4.x/2.6.xで schedule() 辺りってかなり変わっている(まぁ、 O(1)スケジューラやら、SMP対応やら当たり前ですけど)気がします。今後大き くメスが入ってもいい気がします。 -------- Kawabe,Yoshihiro <ripula@xxxxxxxxxxxxxxx> Who is calling me from where? Knock on my shell and my mind? from Pearl song.
Follow-Ups:
- [linux-users:102138] Re: 組込Linuxドライバの作成方法YuichiEnokida
- [linux-users:102185] Re: 組込Linuxドライバの作成方法Naoto Shimazaki
- [linux-users:102119] Re: 組込Linuxドライバの作成方法Naoto Shimazaki
- [linux-users:102125] Re: 組込Linuxドライバの作成方法Yoshihiro Kawabe
- [linux-users:102129] Re: 組込Linuxドライバの作成方法Naoto Shimazaki
- Prev by Subject: [linux-users:102135] Re: rsyncのパスワードについてお尋ねします。
- Next by Subject: [linux-users:102137] floppyがマウントできません
- Previous by thread: [linux-users:102129] Re: 組込Linuxドライバの作成方法
- Next by thread: [linux-users:102138] Re: 組込Linuxドライバの作成方法
- Indexes:[Main][Thread]