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

[FDclone-users:00662] Re: Linux 2.6.18 で dosdisk.c コンパイルエラー (_syscall5 マクロ)



 しらいです。

In Message-Id <061207213712.M0109229@mix.syd.odn.ne.jp>
        <hma@syd.odn.ne.jp>さんwrites:
> こんばんは、濱崎です。

> このファイルは、Linux カーネルソース由来のファイルで、
> Debian では linux-kernel-headers パッケージに入っています。
> __KERNEL__ による条件分岐は 以前はなかったので、
> 2.6.{15,16,17} あたりで入ったものと思います。
> 
> llseek の man page を見てみると syscall(2) を使うことを勧めています。
> 根本的な解決をするには、呼び出し方法を変える必要があるのでしょうね。

 2.6-kernel の最新版が手元に無いので確認し切れません。HP の
testdrive でも 2.6.8 が最新でした。Linux って kernel source
を CVS で公開してたりはしないんでしょうか。

 その「syscall(2) を使え」という下りは古い kernel 環境だと
記述が存在しないんですが、具体的にどうしろと言ってるんでしょ
うか?
 下手に syscall(2) を使うと古い kernel 環境で互換性が無くな
ってしまうので、出来るだけ大きな変更はしたくないんですが。む
しろ __KERNEL__ を定義してしまう方が無難な解かも知れません。
 そもそも llseek(2) を使っているのは古い Linux 用なんですよ。
新しめの Linux なら -D_FILE_OFFSET_BITS=64 が効くから普通の
lseek(2) で十分だし。
 その肝腎の古い Linux で使えなくなるようだと本末転倒なので、
新旧どの Linux も救済される仕組みを選ばなくてはなりません。
頭の痛いところです。

 元々 Linux という文化は多分に ad-hoc に出来ているので、過
去との互換性とか継承性とか重視しないんですよね。CVS がないっ
てのもその傍証の一つだし。

                                               しらい たかし