В драйвере устройства Ethernet PCI, если драйвер позволяет приложениям сопоставлять буфер пользовательского пространства с виртуальной памятью драйвера и разрешать пользователю вызывать MMAP в файле драйвера устройства после его открытия. Тогда как реализовать MMAP в драйвере сетевого устройства PCI ETHERNET?
Я уже посмотрел в структуре dev_pci. Есть некоторые элементы, названные так, как будто они имеют какое-то отношение к MMAP, но я не смог точно указать, как заставить драйвер устройства реализовать MMAP.
В книге «Драйвер устройства Linux» автор специально не связывал сопоставление памяти в драйвере устройства с драйвером устройства PCI или драйвером сетевого устройства.
Любая помощь в том, как включить мой драйвер устройства PCI/Network/Ethernet для обработки вызовов MMAP из пользовательского пространства и сопоставления буфера, предоставленного пользователю, в виртуальную память драйвера. Я особенно ищу, как зарегистрировать функцию реализации XX___mmap(...)
в драйвере устройства с PCI и драйвер сетевого устройства. У меня есть драйверы устройств dev_pci и net_dev в драйвере устройства.
vm_area_struct
, и в ней у меня есть vm_start и vm_end & offset, то как записывать пакеты на виртуальный адрес пользовательского буфера, сопоставленного с ядром, который я буду делать в обработчике опроса netdev_ops для получения пакетов - person user786   schedule 19.01.2021if I use char driver with file operations for mmap
иpci driver for pci device
для устройства Ethernet и ОБА объединены в один файл драйвера c с одним__init
. Я думаю, это единственный способ сделать это. если нет другого варианта. Пожалуйста, объясни - person user786   schedule 19.01.2021e1000e
Ethernet pci. - person user786   schedule 19.01.2021int pci_mmap_page_range
, объявленную в pci.h, для создания новой страницы в виртуальной памяти ядра, которую я буду использовать в реализованной функции mmap в драйвере. - person user786   schedule 19.01.2021