[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: acardide?



>>>>> On Sun, 15 Feb 2004 11:07:06 +0900 (JST),
	enami tsugutomo <enami@but-b.or.jp> said:

>> とりあえず、raw device アクセスの場合には、アラインメント制約を満たさ
>> ない場合、EINVAL を返すようにした方がいいですよねえ…
>> (バウンスバッファを用意するという手もあるけど。とりあえず壊れるよりマシ)

> 僕も error でいいと思いますが, いくつに align されていることを要求すれ
> ばいいのかな?  PR#18608 (i386 で ld で 4byte align されていない) や 
> PR#19269 (mips で wd で 4byte align されていない) の場合は ALIGN() で
> 足りるけど, この acardide はそれでは足りない場合ですよね.  DEV_BSIZE?

(疑問文の意味を誤解しているような気もするけど)
NetBSD の現状ではその種の制約はないので、全デバイスに対して、問答無用
で制約をかけると、動かなくなるプログラムが結構でてまずいよね。
というわけで、デバイス単位で制約をかけるしかなくて、その場合には、実際
にそのデバイスで必要な alignment 制約を使えば良い。ただし、ユーザー
プログラムが正しく動作するために、いったい、どういう制約を当てにすれば
良いか規約を作っておかないと困る。その規約をどうすれば良いか? という
意味でいいのかな。

選択肢としては、
- 固定サイズで決めておく。
  Linux なんかだと、実際のデバイスによる制約が全くない場合にも、問答無用
  で 512byte align を要求していることだし (← これ自体は Linux 特有の話)、
  まあ DEV_BSIZE にしてしまう。
- alignment 制約を返すような ioctl を増設して、それを使うことを強制する。
- やっぱり bounce buffering。
ぐらい?
うーん…
--
soda