当在Linux内核空间中时,人们总是可以使用内核自己的PAGE_SIZE和PAGE_SIZE宏,但是当我想编写用户空间代码时,无论当前机器中这些变量的大小如何,我必须使用sysconf。例如,要获取页面的大小,可以运行sysconf(_SC_PAGESIZE).然而,我正在寻找PAGE_SIZE值。是否有类似的正确方法来获得它,或者我必须从页面的大小计算它?
wmtdaxz31#
PAGE_SHIFT应该在<sys/user.h>中
PAGE_SHIFT
<sys/user.h>
$ printf '#include <sys/user.h>\nPAGE_SHIFT' | gcc -xc -E -P - | tail -n1 12
字符串
pieyvz9o2#
您不希望使用固定的PAGE_BLOG,因为页面大小不一定在所有架构上都是常数。你可以使用第一个比特集(应该是唯一的比特集,因为页面大小总是2的幂!)来确定移位。在线上有很多这样的代码示例。(一些库可能有ffs或bsf或类似的函数来做这件事。)
2条答案
按热度按时间wmtdaxz31#
PAGE_SHIFT
应该在<sys/user.h>
中字符串
pieyvz9o2#
您不希望使用固定的PAGE_BLOG,因为页面大小不一定在所有架构上都是常数。
你可以使用第一个比特集(应该是唯一的比特集,因为页面大小总是2的幂!)来确定移位。在线上有很多这样的代码示例。(一些库可能有ffs或bsf或类似的函数来做这件事。)