gpt4 book ai didi

c - 如何仅从虚拟地址获取内存段的页面大小?

转载 作者:行者123 更新时间:2023-12-03 17:22:18 24 4
gpt4 key购买 nike

Linux 可以同时拥有标准 4KiB 页面内存和 1GiB(巨大)页面内存(以及 2MiB 页面,但我不知道是否有人使用它)。
是否有从任意虚拟地址获取页面大小的标准调用?指针可能指向 4K 页或大页。
手头的问题是理智( assert(...) )检查函数的参数,该函数要求区域的基地址和大小需要是页面大小的倍数,以传递给 mbind .但是页面大小因系统而异。没有完整性检查,返回值 mbind只给 Invalid argument这对调试没有帮助。
我看过这个答案 How to get linux kernel page size programmatically但它给出的答案是假设整个系统是相同的,并且它们也是编译时常量。还有 getpagesize()做同样的事情,无论如何它都被弃用了。

最佳答案

这与MMU有关,参见https://unix.stackexchange.com/questions/128213/how-is-page-size-determined-in-virtual-address-space通常整个系统/内核的页面大小是相等的,这是在内核编译期间确定的

关于c - 如何仅从虚拟地址获取内存段的页面大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66949269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com