Caching 从内核空间清除未缓存的缓冲区

Caching 从内核空间清除未缓存的缓冲区,caching,mmap,Caching,Mmap,我正在为嵌入式linux机器编写设备驱动程序,我有下一个问题:是否可以通过设备驱动程序在内核空间分配缓冲区,而不是通过应用程序分配mmap(),这样在从驱动程序和程序读取/写入缓冲区时就不会有任何缓存,也就是说,程序将立即看到驱动程序写入该缓冲区的内容,反之亦然 据我所知,使用O_DIRECT标志打开设备文件不是为mmap设计的(它用于read()和write()系统调用),我在一个电子邮件列表中注意到标志MAP_UNCAHED是有用的,但它不是为我的arch定义的 我需要一个未缓存的缓冲区,用

我正在为嵌入式linux机器编写设备驱动程序,我有下一个问题:是否可以通过设备驱动程序在内核空间分配缓冲区,而不是通过应用程序分配mmap(),这样在从驱动程序和程序读取/写入缓冲区时就不会有任何缓存,也就是说,程序将立即看到驱动程序写入该缓冲区的内容,反之亦然

据我所知,使用O_DIRECT标志打开设备文件不是为mmap设计的(它用于read()和write()系统调用),我在一个电子邮件列表中注意到标志MAP_UNCAHED是有用的,但它不是为我的arch定义的

我需要一个未缓存的缓冲区,用于性能目的——将硬件中的数据放在缓冲区中,然后程序使用它一次——缓冲区中的旧数据将不被使用,因此,缓存在那里不可用