[Suzaku:01056] Re: suzaku-s ftpdのget

chris mcharg email@hidden
2007年 10月 17日 (水) 17:04:00 JST


マカーグと申します。

藤沢 登美雄 さんは書きました:
> suzaku-s(SZ010-U00)のftpdで、他のマシンからputするときは、何も問題ないのですが、
> suzakuからファイルをgetすると、ファイルは正しく取り込んでいるのですが、コンソール
> に、次のようなメッセージが出ます。
> 
> MAP_SHARED not completely supported on !MMU
> 
> これは、無視してしまっても良いものなのでしょうか?それとも、何か対策が必要なので
> しょうか。

上記のカーネルメッセージが出てもsuzaku-sのftpサーバが問題なく動作するの
で、心配する必要はないと思います。

メッセージが出てしまう原因ですが、ftpサーバのソースでgetの時に実行される
mmapシステムコールでMAP_SHAREDフラグが指定されているからです。uClinux
カーネルではmmapの利用にいくつかの制限があります。その制限の1つはmmapで
MAP_SHAREDフラグを指定する時、マップ対象のファイルがシステムメモリ上のデ
バイス(ramfs)に保存されていないといけないようです。suzaku-sで利用され
ているファイルシステムがramfsではないため、カーネルが注意のメッセージを
出して、mmapシステムコールが失敗します。

ftpサーバではmmapシステムコールが失敗した場合、通常のread/writeシステム
コールが代わりに使われるので、ファイルが無事に転送がされます。

ただし、ftpサーバがファイルを転送しているだけなので、MAP_SHAREDを指定す
る必要はないと思います。uClinux-dist/user/ftpd/ftpd.cで以下の修正を行っ
てから、カーネルメッセージが表示されなくなることを確認しました。

buf = mmap (0, filesize, PROT_READ, MAP_SHARED, filefd, curpos);
↓
buf = mmap (0, filesize, PROT_READ, MAP_PRIVATE, filefd, curpos);

また、これでftpサーバでreadの代わりにmmap後のメモリアクセスが利用される
ようになるので、ファイル転送がちょっと速くなると思います。



suzaku メーリングリストの案内