Có vẻ với tôi như MAP_POPULATE
không chỉ dành cho các ánh xạ tư nhân, trong mâu thuẫn với những gì man page nói:Linux mmap() với MAP_POPULATE, trang người đàn ông dường như cung cấp thông tin sai
MAP_POPULATE (vì Linux 2.5 .46) Điền các bảng trang (prefault) cho một ánh xạ. Đối với một ánh xạ tệp, điều này gây ra đọc trước trên tệp. Quyền truy cập sau vào bản đồ sẽ không bị chặn bởi lỗi trang. MAP_POPULATE chỉ được hỗ trợ cho ánh xạ riêng tư kể từ Linux 2.6.23.
Dựa trên kiểm tra lướt qua của tôi về nguồn hạt nhân Linux cho mmap.c, nó trông giống như MAP_POPULATE
hoàn toàn không có mối quan hệ với MAP_PRIVATE
nào trong versions going back as far as 2.6.34.
Dưới đây là một đoạn trích của mã mới nhất từ mmap.c như việc thực hiện 3.14 kernel:
...
1364 addr = mmap_region(file, addr, len, vm_flags, pgoff);
1365 if (!IS_ERR_VALUE(addr) &&
1366 ((vm_flags & VM_LOCKED) ||
1367 (flags & (MAP_POPULATE | MAP_NONBLOCK)) == MAP_POPULATE))
1368 *populate = len;
1369 return addr;
...
Tôi có sai lầm trong quan sát của tôi?
Tôi đọc nhận xét đó là "trước 2.6.23, MAP_POPULATE không được hỗ trợ cho ánh xạ riêng" (không có thông tin về MAP_POPULATE cho ánh xạ không phải riêng tư). –
Tôi đoán nó có thể được diễn giải theo cách đó. Có lẽ "họ" cần phải thay đổi ngôn ngữ để nó ít mơ hồ hơn. –