Я выделяю буфер в своем драйвере с помощью devm_kzalloc(.., .., GFP_KERNEL)
, а затем регистрирую этот буфер в качестве драйвера фреймбуфера, чтобы он отображался как файл под /dev/fb0
. Затем я могу открыть этот файл и написать ему. Когда я делаю это так, все работает нормально, и мои данные поступают в буфер памяти драйвера.Драйвер ядра и mmap из пользовательского пространства
Однако, если я тогда mmap
его в пользовательском процессе следующим образом: mmap(NULL, size, PROT_WRITE, MAP_SHARED, fd, 0)
, используя тот же файл fd и попытайтесь записать в возвращенное пространство памяти, ничего не записывается в память драйвера.
Я что-то забыл?
http://man7.org/linux/man-pages/man2/mmap.2.html - внимательно прочитайте параграф MAP_SHARED, там может быть ключ. – Mat