Desidero impostare un intervallo di memoria non memorizzabile (Linux, x86-86) all'interno di un processo spazio utente. This question si avvicina, ma menziona solo i registri MTRR che funzionano con la memoria fisica. Voglio farlo usando le tabelle PAT poiché offrono un controllo più fine, consentono di impostare la memoria virtuale non memorizzabile pagina per pagina.Imposta memoria come non memorizzabile attraverso la tabella PAT x86
La documentazione di Linux, Documentation/x86/pat.txt, suggerisce che ci dovrebbe essere qualcosa con mmap
e un flag SYNC
, ma non riesco a trovare come farlo in pratica. Idealmente, mi piacerebbe usare una chiamata come mprotect(address, range, O_UNCACHABLE)
.
Sono 'madvise' /' mlock' sufficienti? –
No, sembra che questi abbiano effetto solo sulla mappatura virtuale (se le pagine sono in RAM o su disco), ma non sembrano influenzare il caching ... – Wim
Sì, ho frainteso. :( –