为什么flush_dcache_page()在linux内核中什么都不做?

str*_*718 5 linux cpu caching kernel instructions

我发现flush_dcache_page()在x86架构上的linux内核中没有执行任何操作,如下所示

包括/asm-generic/cacheflush.h

Line 17    #define flush_dcache_page(page) do {} while (0)
Run Code Online (Sandbox Code Playgroud)

我认为 x86 arch 上有缓存刷新指令“CLFLUSH”,它可以用于此页面刷新。

然而,flush_dcache_page() 并不像上面的源代码那样运行任何 CPU 指令。

为什么flush_dcache_page()不在x86架构上运行任何指令?

它是否保证将 dcache 中的页面写入主内存?

小智 3

来自https://www.kernel.org/doc/Documentation/cachetlb.txt

“如果 D 缓存别名不是问题,则该例程可以简单地定义为该架构上的 nop。”