Я пишу драйвер PCIe для Linux, в настоящее время без DMA, и вам нужно знать, как читать и писать на устройство PCIe, когда оно включено из пользовательского пространства.PCIe Driver - Как пользовательское пространство доступа к нему?
В драйвере я делаю основы в зонде():
pci_enable_device();
pci_request_regions();
pci_iomap();
Но то, как получить доступ к этой памяти из пространства пользователя, чтобы читать и писать? Добавлять ли файлы в свой драйвер PCIe? память от pci_iomap показывает уровень вверх какое-то место, где код пространства пользователь может позвонить:
open('mapped memory location');
mmap(...);
Если да, то, что это место?
Примечание: PCIe устройства не будет затыкать в любой подсистемы Linux, такие как аудио, Ethernet и т.д.
Не уверен, что это рекомендуемый способ сделать что-то, но другие драйверы ядра выставляют виртуальные устройства, такие как '/ dev/vboxnetctl', которые, как я полагаю, вы можете выдавать команды. Я не уверен, что ядро Linux позволит любой программе пользовательского пространства читать/записывать на устройство PCIe волей-неволей, похоже, что это может быть опасно. –
Я тоже смотрел на это. Нужно ли что-нибудь делать, чтобы мое устройство появилось там? Например, какие API-вызовы я делаю в своем драйвере? – user2205930
Возможно, посмотрите на исходный код драйвера VirtualBox для идей. –