目前我正在 linux 上,写一个用户态的一个 c 程序。里面有一个逻辑是,去写了一段 RAM ,但写的动作实际上只发生在了 x86 CPU 的 cache 里面,还没有真正写到 RAM 里,然后这导致了错误发生(可以认为我需要结合 DMA 做一些操作,但 DMA 需要读到的东西还在 CPU 的 cache 里面呢)。 所以我想知道,linux 里有提供这种函数吗?(类似 arm ,都会提供这种函数的) 另外,我在网上搜,搜到的 全是 shell 里执行的命令:sync; echo 1 > /proc/sys/vm/drop_caches。这个关键词到底该怎么搜索。 Cache, 函数, Linux, dma
我觉得这里有很多概念上的问题啊。。。 /proc/sys/vm/drop_caches 这个显然和 cpu cache 没有关系 你要 bypass cpu cache 的话,直接 volatile 不就好了
@amiwrong123 (小寄巧:用 *(volatile int __attribute__((force)) *)&x = 1 写入 内核也在用,不过把 __attribute__((force)) 加了个宏__force 简化)