关于PCIe设备驱动读取设备某个特定缓冲区的问题
请教大家一个关于PCIe设备驱动开发的问题。我有一个特殊用途的卡,卡上有固定数量(比如六个)的缓存区域。主机上有六个进程需要分别处理各自对应的缓存区里的数据。一种简单的做法是用一个分发进程调用驱动,把卡上六个缓存区的数据分发到六个进程各自的内存空间,但这会增加内存拷贝的次数。比如,数据先由卡读入到驱动程序的内核空间,然后内核空间的数据被拷贝到分发进程的内存,然后分发进程再把数据分别拷贝到六个进程的各自用户空间。
我的想法是,如果设备驱动支持传入一个参数,比如 六个进程各自执行 read(设备句柄,缓冲区编号,写入的目标地址,字节数量等),这样,每个进程把卡上的数据读入到各自进程的内存空间,可以减少一次内存拷贝的时间,尤其数据量大时很有意义,因为我的应用对时延要求很高。
我的问题是,linux或windows的驱动开发,是否支持自定义的参数传入?比如这个缓冲区编号,这个编号决定了驱动程序要读的那个区域。
多谢指导 :-)