[kernel-ml 50] Re: Device driver

Naitoh Ryuichi ((no email))
Fri, 30 Jun 1995 01:25:38 +0900

隆一です。
こんにちは。

一週間以上間が空いてしまいましたが、青木さんのメイルについてコメントし
ます。

>> On Wed, 21 Jun 1995 00:18:00 +0900, 青木 義彦 <PBC03033@niftyserve.or.jp> said:

> 青木です。こんにちは。
> <内藤さん>
> >作成中の POSIX 環境では、LOWLIB が受け渡しできるメッセージの最大サイズ
> >は、1K 程度を考えています。これは read/write などの比較的大きなデータ
> >を受け渡しする場合です。他のシステムコールではもっとサイズが小さくなり
> >ます。

> 最低限、ブロック型デバイスの1ブロックをread/writeできる必要があると
> 思います。
> また、仮想記憶の処理も考慮したら、最低でもページサイズ(4k)程度は
> read/writeできる必要があるでしょう。

送受信するメッセージのサイズについては、各周辺核ごとに定める必要があり
ます。
ブロック型デバイスのサイズについては、最近のデバイスは大抵デフォルトが
512 バイトになっているので、1K バイト程度あれば読み書きはできます。
もちろん、効率などを考えると 1K バイト以上にする方がいいかもしれません。

仮想記憶の処理については、メッセージ自体にデータを入れる必要はないと思
います。たとえば、コピーの場合などを考えても単にコピー元とコピー先のア
ドレスを指定するだけでいいと思います。

> >そうですね。
> >これは、そのプロセス(またはタスク) でもっているメッセージキューの個数
> >によって決まります。
> >POSIX 環境だと、高々ひとつのメッセージの分しかメッセージバッファを確保
> >していません。ひとつ以上のメッセージを LOWLIB へ書き込もうとすると待ち
> >状態が発生します。

> ・LOWLIBはタスクのコンテキストで動作する。
> ・LOWLIBは、デバイスマネージャのメッセージバッファに要求メッセージを書き
>  込んだ直後に、デバイスマネージャからの応答メッセージの受信待ちになる
> ・LOWLIBは、プロセス単位(あるいはサブプロセス単位)に応答メッセージを受
>  け取るためのメッセージバッファを持っている。

> と考えていましたが、違うようですね。

> しかし、システムコールの完了待ちにメッセージキューが関係するというのは、
> 理解しがたいのですが、もう少し詳しく解説してもらえませんでしょうか

私としては、青木さんの以下のメイルを読んでコメントしたのであって、シス
テムコールの完了待ちのことを言ったつもりはなかったのですが。。。

>> On Mon, 19 Jun 1995 08:28:00 +0900, 青木 義彦 <PBC03033@niftyserve.or.jp> said:
<中略>
>  それと、LowLibへ終了のメッセージを送信する場合に待ちになる可能性は
>  あるのでしょうか?(LowLibのメッセージバッファサイズや個数(プロセ
>  スに1つ or サブプロセスに1つ or システムで1つ)がどうなるのかによって
>  決まる?)
<中略>

このメイルにある「LOWLIB へ終了のメッセージを送信する」というのは、シ
ステムコールではなくデバイスドライバからのメッセージだと思ったのですが、
違ったのでしょうか?

> ところで、メッセージキューはBTRONのメッセージキューですよね?

これについては藤井%Joy さんもおっしゃっているように、ITRON のメッセー
ジのことを言っているつもりです。

----------
内藤隆一 (ggc00661@niftyserve.or.jp/night@bfree.rim.or.jp)