なんとACMからカードが届いた。前にACMで論文漁っていて、年間$99なら、ちょ
こと払って落としちゃうかと登録したのだ。英語とても苦手なので言葉で書い
てある部分はヒント程度にしかならないんだけど。

加速度センサー続き。LPC2388での実装。そういえば、NXPはフィリップスだっ た。I2Cバスはそもそもフィリップスのバス(今は特許が切れてどこでも使って いる)。それならば十分デバイスは練れているだろうということで、最初から割 込み駆動で書いてみました。とりあえずかなり強引に書いて値は取れたけれど、 これ、ワンオフならまだしも、うまくまとめるの難しいな...。そこそこベスト のワンオフを作れる、枠組みを検討しよう。
スケジューラアクティベーション続き。ブロックした時について。スケジュー ラアクティベーションというのは、タスクに対して物理プロセッサの抽象を提 供とするというのが前提になっている。それがカーネル内でブロックした時、 そのアクティベーションをそのままユーザにもって行かず、新しくアクティベー ションを用意するというのは、これは単に通知のためだ。「このプロセッサは ブロックされました」というプロセッサ状態を伝える。しかしカーネル内でブ ロックしているのでブロックが解除された時にはそこからユーザに戻るための コンテキストをカーネルで保持していないといけないというジレンマがある。

加速度センサー続き。LPC2388での実装。そういえば、NXPはフィリップスだっ た。I2Cバスはそもそもフィリップスのバス(今は特許が切れてどこでも使って いる)。それならば十分デバイスは練れているだろうということで、最初から割 込み駆動で書いてみました。とりあえずかなり強引に書いて値は取れたけれど、 これ、ワンオフならまだしも、うまくまとめるの難しいな...。そこそこベスト のワンオフを作れる、枠組みを検討しよう。
スケジューラアクティベーション続き。ブロックした時について。スケジュー ラアクティベーションというのは、タスクに対して物理プロセッサの抽象を提 供とするというのが前提になっている。それがカーネル内でブロックした時、 そのアクティベーションをそのままユーザにもって行かず、新しくアクティベー ションを用意するというのは、これは単に通知のためだ。「このプロセッサは ブロックされました」というプロセッサ状態を伝える。しかしカーネル内でブ ロックしているのでブロックが解除された時にはそこからユーザに戻るための コンテキストをカーネルで保持していないといけないというジレンマがある。
Adding Scheduler Activations to Mach 3.0 Paul Barton-Davis, Dylan McNamee, Raj Vaswani, and Edward D.Lazowska University of Washington Technical Report 92-08-03 Reversed March 1993続き。
2.2.1 ブロック アクティベーションがブロックされた時、その'event_sa'はアクティベーショ ンそれ自身の時点として設定され、そのユーザ層への継続はsa_notify(カーネ ルルーチン)に設定される(これらはブロックが解除される時に使われる;2.2.2 章を見よ)。プロセッサのイベントフラグはPROC_SA_BLOCKEDに設定される。こ れによって、thread_select()は新しいスケジューラアクティベーションを通知 するために作成する(他の実行可能なアクティベーションを選ぶのではなく)。 新しく作られたアクティベーションのevent_saはブロックされたアクティベー ションを指し示す。新しいアクティベーションはsa_notify()で初まり、それは アップコール用の引数を置くためにユーザ層のスタックをとってくる。その引 数は現在のアクティベーションと、ブロックされたアクティベーションである。 ユーザ層のスタックは、トラップから返るようにその場で設定され、プログラ ムカウンタはタスクのアップコールの入口であるsa_blocked()に設定される。 最終的に、通知のためのアクティベーションはthread_exception_return()を使っ て、ユーザ層で実行を始める。
