To mi wygląda MAP_POPULATE
nie tylko dla prywatnych odwzorowań, wbrew temu, co twierdzi strona człowiek mówi:Linux mmap() z MAP_POPULATE, strona człowiek wydaje się dawać nieprawidłowe info
MAP_POPULATE (od Linuksa 2.5 . 46) Zapełnianie (przedwczesne) tabel stron dla mapowania. W przypadku mapowania pliku, powoduje to wczytanie pliku do przodu. Później dostęp do mapowania nie zostanie zablokowany przez błędy strony. MAP_POPULATE obsługuje tylko prywatne odwzorowania od Linuksa 2.6.23.
podstawie moich pobieżnych oględzin źródła jądra Linux na mmap.c, wygląda MAP_POPULATE
ma absolutnie żadnego związku z MAP_PRIVATE
ogóle w versions going back as far as 2.6.34.
Oto fragment najnowszego kodu z mmap.c jako realizacji jądra 3.14:
...
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;
...
mylę w moich obserwacji?
Przeczytałem tę uwagę jako "przed 2.6.23, MAP_POPULATE nie było obsługiwane dla mapowań prywatnych" (bez informacji o MAP_POPULATE dla mapowań nieprywatnych). –
Sądzę, że można to zinterpretować w ten sposób. Może "oni" muszą zmienić język, aby był mniej dwuznaczny. –