Query regarding mechanism of reading-from/writing-to PCI-device from kernel-space VS user-space

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi everyone.

First, setting up context; kindly correct me if I am wrong :)

In kernel-space :
-----------------------

*
We use ioremap to map a BAR-area physical-memory into kernel's
virtual-address space.

*
We then need to use *special* accessor-functions (ioread/iowrite and
friends) to ensure that the I/O is propagated through fine via path
kernel-virtual-memory <=> BAR-physical-memory <=> device


In user-space :
-----------------------

*
We mmap() a sysfs-file, which causes the kernel to map a userspace VMA
to the same BAR-area physical-memory (using remap_pfn_range() or
equivalent).

*
We then use *vanilla* dereferencing to read/write via path
userspace-VMA <=> BAR-physical-memory <=> device.


Now, my queries are regarding the usage of *special*
accessor-functions in kernel-mode, versus *vanilla* dereferencing in
user-mode.

a)
Firstly, is my assertion true? :)

b)
If yes, then how is the path userspace-VMA <=> BAR-physical-memory <=>
device possible via *vanilla* dereferencing in user-mode?


Will be grateful for insights ..

Thanks and Regards,
Ajay




[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux