Can PCIe device driver support to read a particlualr buffer in the PCIe device with mutiple buffers?
Hello everyone!
My question is about the development of PCIe device driver. I have a special-purpose card that has a fixed number (say, six) of buffers. There are six application processes on the host that need to process the data in their respective buffer. A simple approach is to use a dispatching process to call the driver and dispatch the data from the 6 buffers on the card to the 6 processes' respective memory space on the host, but this will increase the number of memory-copy operation. For example, the data is first read from the card buffers into the driver's kernel space, and then the data in the kernel space is copied to the memory of the dispatching process. The process then copies the data to the respective user memory spaces of the 6 application processes.
My thought is that if the device driver can read a particular buffer which is indicated by a parameter, for example each of the 6 application processes perform read(device handler, buffer ID, target address, number of bytes to read, ...) , in this way, each application process reads data into the memory space of the respective process. This can reduce one memory-copy operation. This is meaningful especially when the data volume is large, as my application requires very low latency.
My question is whether Linux driver can supports additional parameters, such as the buffer ID, this ID determines which buffer the driver wants to read.
Any response will be highly appreciated
Cheng
|