Несоответствие значений из-за ошибок страниц - PullRequest
0 голосов
/ 17 июня 2020

Я пишу псевдосимвольный драйвер устройства. Существует еще одна программа util , которая обрабатывает файлы этого драйвера. Программа util принимает строку сообщения от пользователя и помещает ее в файл устройства. И проблема, с которой я столкнулся, заключается в том, что когда произошла ошибка страницы, символ, который ранее был записан в файл, записывается в текущей позиции. На следующем рисунке это показано:

Предположим, ошибка страницы произошла в 't' при написании «... test ..», а размер моей страницы равен 4096, тогда dev_mem [4095] == 't', что и ожидается. И dev [4096] также означает «t», которое должно было быть «e». И оттуда он пишет эту сдвинутую версию, а не оригинал.

Я использую ввод-вывод с отображением в память, а ошибки страниц обрабатываются в моем файле драйвера. И в этом случае я использую "MAP_POPULATE" для предварительной выборки. Поскольку страницы предварительно загружаются, я не знаю, связана ли эта ошибка с ошибками страниц. Это происходит при каждой ошибке страницы. Я не мог понять, что не так. Очистить кеш или что-то в этом роде? Любая помощь приветствуется.

Заранее спасибо

...