如何从用户空间使用asm / system.h?

时间:2012-10-31 15:15:17

标签: c network-programming linux-kernel

对于我的Linux网络应用程序,我指的是lincap.c以了解如何使用PACKET_MMAP方法通过环形缓冲区接收以太网数据包。

lincap.c使用asm / system.h中定义的内存屏障宏mb()。但是,该标头文件中的代码被#ifdef __KERNEL__包含在内。我猜这意味着它是一个内核头文件。如何在用户空间应用程序中使用mb()(我相信lincap.c是?)

BR

大卫

1 个答案:

答案 0 :(得分:0)

也许您可以使用__sync_synchronize内置的gcc提供。我不确定它是否生成完全相同的代码,但它应该足够相似。因此,简单地将mb定义为该别名应该有效。