does linsysfs support mmap on pci resources (e.g. pci device's registers etc.)
leon zadorin
leonleon77 at gmail.com
Wed Oct 1 05:44:49 UTC 2014
Hello everyone,
Sorry if this is a bit of a noob question -- I'm just starting on this
topic... does FreeBSD's emulation of sysfs (from linux world) support
"mmap" on pci resources?
Something similar to the following in the linux environment:
fd = open("/sys/devices/pci0001\:00/0001\:00\:07.0/resource0", O_RDWR | O_SYNC);
ptr = mmap(0, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
printf("PCI BAR0 0x0000 = 0x%4x\n", *((unsigned short *) ptr);
(above taken from
http://billfarrow.blogspot.com.au/2010/09/userspace-access-to-pci-memory.html)
The reason I am asking is because I would like to map pci device
registers/memory in user space (and read/write some of the device's
registers from userspace). The reasons are auxiliary to this post
(e.g. kernel-bypass, system call bypass, etc.) At this stage it would
suffice to simply accept that user space pci-register access is needed
without paying the price of any system/ioctl/etc. call on every
access-instance to device's config/control register(s).
I would prefer to avoid writing additional explicit (albeit generic)
pci related kernel module in order to provide "mmapping" of the given
pci resources to userspace if there is already such a generic way to
do it via sysfs "syntax" (I would like to reduce any of the
specific/additional code re-writing at the kernel level as much as
possible).
many thanks
leon.
More information about the freebsd-emulation
mailing list