WindowsやLinuxにおいて、CPU CacheをWritebackしたり、Invalidateしたりする関数はあるのでしょうか？


WindowsやLinuxにおいて、ドライバ開発をする際にはCPU Cache操作が必要になることがあるとおもいますが、CPU
CacheをWritebackしたり、Invalidateしたりする関数はあるのでしょうか？

x86の命令には、WBINVD命令（Write Back and Invalidate Cache）やINVD命令（Invalidate Internal
Caches）があると思うので最終的にはこの命令を呼ぶとおもうのですが、これらをラップした関数が用意されているのか教えていただきたいです。




Visual
C++ですと[`<intrin.h>`ヘッダーに定義されている`__wbinvd`関数](https://msdn.microsoft.com/ja-
jp/library/ct1z0fcz.aspx)を使うことで`WBINVD`命令に展開できます。




メモリマップドI/Oとかでしょうか。

たとえばLinuxに含まれるfbdev（フレームバッファドライバ）の場合、wbinvdをインラインアセンブラで呼び出すインライン関数を定義しています。

[code]

    static inline void flush_cache(void)
    {
            asm volatile ("wbinvd":::"memory");
    }
    
[/code]

まあ、ラップしなくちゃならないほどのものでもないかと。

