Sembra a me come MAP_POPULATE
non è solo per mappature privati, in contraddizione con ciò che la pagina uomo dice:Linux mmap() con MAP_POPULATE, pagina man sembra dare informazioni sbagliate
MAP_POPULATE (dal Linux 2.5 .46) Compilare le tabelle di pagina (pre-default) per una mappatura. Per un mapping di file, ciò causa read-ahead sul file. Gli accessi successivi alla mappatura non saranno bloccati da errori di pagina. MAP_POPULATE è supportato solo per i mapping privati da Linux 2.6.23.
Sulla base della mia un'ispezione sommaria dei sorgenti del kernel Linux per mmap.c, sembra che MAP_POPULATE
non ha assolutamente alcun rapporto con MAP_PRIVATE
di sorta in versions going back as far as 2.6.34.
Ecco un estratto del codice più recente dal mmap.c come dell'attuazione 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;
...
Mi sbaglio nella mia osservazione?
Ho letto quell'osservazione come "prima del 2.6.23, MAP_POPULATE non era supportato per i mapping privati" (senza informazioni su MAP_POPULATE per i mapping non privati). –
Immagino che possa essere interpretato anche in questo modo. Forse "loro" hanno bisogno di cambiare la lingua in modo che sia meno ambigua. –