Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了带有MAP_POPULATE的Linux mmap(),手册页似乎给出了错误的信息大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

在我看来,MAP_POPULATE不仅仅适用于私有映射,与手册页所说的相反: MAP_POPULATE (since Linux 2.5.46) Populate (prefault) page tables for a mapping. For a file mapping, this causes read-ahead on the file. Later accesses to the ma
在我看来,MAP_POPULATE不仅仅适用于私有映射,与手册页所说的相反:

基于我对mmap.c的Linux内核源的粗略检查,看起来MAP_POPULATE与versions going back as far as 2.6.34中的MAP_PRIVATE完全没有关系.

以下是3.14内核实现中mmap.c的最新代码的摘录:

...
1364         addr = mmap_region(file,addr,len,vm_flags,pgoff);
1365         if (!IS_ERR_VALUE(addr) &&
1366             ((vm_flags & VM_LOCKED) ||
1367              (flags & (MAP_POPULATE | MAP_NONBLOCK)) == MAP_POPULATE))
1368                 *populate = len;
1369         return addr;
...

我的观察错了吗?

解决方法

自您提出问题后,措辞已更新:

Before: MAP_POPULATE is only supported for private mappings since Linux 2.6.23.
After:  MAP_POPULATE is supported for private mappings only since Linux 2.6.23.

换句话说,您可以将MAP_POPULATE用于私有映射,但至少需要Linux 2.6.23.

希望这能澄清它!

大佬总结

以上是大佬教程为你收集整理的带有MAP_POPULATE的Linux mmap(),手册页似乎给出了错误的信息全部内容,希望文章能够帮你解决带有MAP_POPULATE的Linux mmap(),手册页似乎给出了错误的信息所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。