[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 メーリングリストの案内