Я хочу установить диапазон памяти как не кэшируемый (Linux, x86-86) из процесса пользовательского пространства. Этот вопрос подходит близко, но упоминает только регистры MTRR, которые работают с физической памятью. Я хочу сделать это с помощью таблиц PAT, поскольку они предлагают более детальный контроль, они позволяют устанавливать не кэшируемую виртуальную память постранично.
Документация Linux, Documentation / x86 / pat.txt , предполагает, что должно быть что-то с mmap
и флагом SYNC
, но я не могу найти, как это сделать на практике. В идеале я хотел бы использовать такой вызов, как mprotect(address, range, O_UNCACHABLE)
.