[b-free: 165] Re: Driver.

内藤 隆一 (GGC00661@niftyserve.or.jp)
Mon, 20 Mar 1995 17:21:00 +0900

隆一です。

B-Free メイリングリストの皆さん、こんにちは。

>> On Mon, 20 Mar 1995 12:00:00 +0900, PBC03033@niftyserve.or.jp said:

>> dev_define デバイスドライバの登録
>> dev_remove デバイスドライバの削除
>> dev_find デバイスドライバの検索
>>
>> これらは、基本的にはポートマネージャと同様の処理になります。
>> (つまり、デバイスドライバマネージャはデータベース的な動作をすることに
>> なります)。
>> あとは、デバイスドライバをロードする機能でしょうか。これについては、ファ
>> イルマネージャができないことには難しいと思います。

> ファイルマネージャを使って、HDドライバをロードすることは不可能ですから、
> システム立上後に、動的にデバイスドライバをロード/アンロード機能だと理解し
> ます。しかし、後述のように、デバイスドライバ自身が、デバイスドライバとして
> 登録/削除を行うのであれば、BTRONのシステムコール[ cre_prc()]を使っ
> て普通にプロセスを生成すれば事足りるのでは無いでしょうか?
> 普通のアプリケーションから起動できないような仕組みは必要かもしれませんが..

うーん、すべてのドライバを動的にロードするのではなく、最小限のドライバ
はあらかじめ組み込んでおくようにすれば、システム立ち上げ時に動的に組み
込むことはできると思います。

また、今のところ私が考えているところでは、デバイスドライバ自身がデバイ
スマネージャに登録というのは、BTRON アプリケーションがデバイスドライバ
を使用するときにデバイスドライバのアクセス用のメッセージバッファ ID を
得るためです(簡単にいうと、デバイスドライバマネージャは、デバイス名と
メッセージバッファ ID の対を記憶するだけのものです)。

デバイスドライバ自身が動くために必要な初期化(タスクを作るとか、必要な
資源を確保するなど)は、デバイスドライバの登録とは別の処理となります。

>> これらのインタフェースのうち、dev_define (登録)/dev_remove (削除)は、
>> デバイスドライバ自身が初期化時に実行することになります。

> これに関しては、全然勘違いしていました。
> DOSのconfig.sysの様なファイルの中に、デバイス(ユニット名)とタスクの関係が
> 記述して有り、デバイスドライバの外部(ブート、あるいはデバイスマネージャ等)
> プログラムで、タスクとデバイスを関係付ける物だとばかり思っていました。

いや、こういう方法もあると思います(実装を考えると、一番簡単かも。。。)。
実際、私がいろいろ出しているのは単なる提案にすぎません。これから、本当
にどうするかは皆で考えましょう。

-- 
内藤隆一 (ggc00661@niftyserve.or.jp)