2012-10-31 14 views
0

對於我的Linux網絡應用程序,我指的是lincap.c以瞭解如何使用PACKET_MMAP方法通過環形緩衝區接收以太網數據包。如何從用戶空間使用asm/system.h?

lincap.c使用asm/system.h中定義的內存屏障宏mb()。但是,該頭文件中的代碼被#ifdef __KERNEL__包含。我想這意味着它是一個內核頭文件。我如何從用戶空間應用程序(我相信lincap.c是)使用mb()

BR

大衛

回答

0

也許你可以使用內置__sync_synchronize GCC提供。我不確定它是否生成完全相同的代碼,但它的效果應該足夠相似。所以簡單地定義mb作爲別名應該工作。

+0

感謝您的建議。 – user1768576