mmapの仕様に混乱しています。
mmappa
のリターンアドレスとする(仕様と同じ)
pa = mmap(addr, len, prot, flags, fildes, off);
私の意見では、関数呼び出しが成功した後、次の範囲が有効です
[ パ、パ+レン )
私の質問は、次の範囲がまだ有効かどうかです。
[ round_down(pa, pagesize) , round_up(pa+len, pagesize) )
[ base, base + size ] 略して
つまり、次のようになります。
base
常にページ境界に配置されていますか?- 常にページサイズの
size
倍数ですか(つまり、粒度はページサイズです)?
ご協力いただきありがとうございます。
この段落で暗示されていると思います:
off引数は、_SC_PAGESIZE または _SC_PAGE_SIZE が渡されたときにsysconf()によって返される値に従って位置合わせおよびサイズ設定されるように制約されます。MAP_FIXED が指定されている場合、アプリケーションは、引数addrもこれらの制約を満たしていることを確認する必要があります。実装は、ページ全体でマッピング操作を実行します。したがって、引数 len はサイズまたはアラインメントの制約を満たす必要はありませんが、実装では、範囲 [pa,pa+len) で指定された部分ページをすべてのマッピング操作に含める必要があります。
しかし、よくわかりませんし、POSIX の経験もあまりありません。
- もっと明確で決定的な証拠を見せてください
- または、POSIX をサポートし、動作が異なるシステムを少なくとも 1 つ表示してください。
ありがとうございます。