在 Mac OS X 和 Xcode 上使用 mmap 时,出现错误:
使用未声明的标识符“MAP_POPULATE”
相同的代码在另一台机器上运行。我该如何解决?
MAP_POPULATE仅在 Linux 上可用,并且仅自版本 2.5.46 起(自版本 2.6.23 起用于私有映射)。MAP_POPULATE用于减少页面错误的损失,因此您的代码应该能够在没有页面错误的情况下运行。下面是如何使用预处理器在不同机器上运行相同代码的示例。
#if __linux__
#include <linux/version.h>
#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,22)
#define _MAP_POPULATE_AVAILABLE
#endif
#endif
#ifdef _MAP_POPULATE_AVAILABLE
#define MMAP_FLAGS (MAP_PRIVATE | MAP_POPULATE)
#else
#define MMAP_FLAGS MAP_PRIVATE
#endif
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2113 次 |
| 最近记录: |