реализовать mmap с несколькими страницами в драйвере устройства - PullRequest
0 голосов
/ 03 октября 2010

У меня есть драйвер устройства, который использует буферы в оперативной памяти, и я хочу, чтобы пользователь мог отображать его в пространстве пользователя.Я прочитал http://lwn.net/images/pdf/LDD3/ch15.pdf, в котором говорится об использовании nopages, но в этом примере используются только отдельные страницы и сказано, что вы можете настроить количество использований, чтобы оно работало для нескольких страниц.Я не понимаю, как это работает.Он использует get_free_page с порядком 0 (то есть 1 свободная страница) для распределения своих буферов, но мой буфер имеет длину в две страницы.

Какое отношение имеет счет использования к чему-либо?Из того, что я понимаю, считается только первая страница.

1 Ответ

1 голос
/ 19 января 2011

Я считаю, что страницы должны быть смежными в памяти.Затем при вызове remap_pfn_range() (ядро 2.6) или remap_page_range() (ядро 2.4) страницы могут отображаться в памяти в пространстве пользователя.

Несколько лет назад я сделал это для драйвера устройства.Я считаю, что я использовал этот сайт в качестве руководства: http://www.scs.ch/~frey/linux/memorymap.html

...