3

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

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

出于性能目的,我需要未缓存的缓冲区 - 来自硬件的数据被放置到缓冲区,然后程序使用它一次 - 缓冲区中的旧数据将不会被使用,所以缓存在那里没有用。

4

0 回答 0