linux 获取用户空间中的PAGE_NAME值

7rfyedvj  于 5个月前  发布在  Linux
关注(0)|答案(2)|浏览(63)

当在Linux内核空间中时,人们总是可以使用内核自己的PAGE_SIZE和PAGE_SIZE宏,但是当我想编写用户空间代码时,无论当前机器中这些变量的大小如何,我必须使用sysconf。例如,要获取页面的大小,可以运行sysconf(_SC_PAGESIZE).然而,我正在寻找PAGE_SIZE值。是否有类似的正确方法来获得它,或者我必须从页面的大小计算它?

wmtdaxz3

wmtdaxz31#

PAGE_SHIFT应该在<sys/user.h>

$ printf '#include <sys/user.h>\nPAGE_SHIFT' | gcc -xc -E -P - | tail -n1
12

字符串

pieyvz9o

pieyvz9o2#

您不希望使用固定的PAGE_BLOG,因为页面大小不一定在所有架构上都是常数。
你可以使用第一个比特集(应该是唯一的比特集,因为页面大小总是2的幂!)来确定移位。在线上有很多这样的代码示例。(一些库可能有ffs或bsf或类似的函数来做这件事。)

相关问题