0

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

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

BR

大卫

4

1 回答 1

0

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

于 2012-11-01T01:06:15.277 回答