码迷,mamicode.com
首页 > 系统相关 > 详细

Linux内存页大小

时间:2019-07-07 14:38:45      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:linux   解决方法   free   指定   int   实现   情况   平台   信息   

当使用内存时, 记住一个内存页是 PAGE_SIZE 字节, 不是 4KB. 假定页大小是 4KB 并且 硬编码这个值是一个 PC 程序员常见的错误, 相反, 被支持的平台显示页大小从 4 KB 到 64 KB, 并且有时它们在相同平台上的不同的实现上不同. 相关的宏定义是 PAGE_SIZE 和 PAGE_SHIT. 后者包含将一个地址移位来获得它的页号的位数. 对于 4KB 或者更大的页这 个数当前是 12 或者更大. 宏在 <asm/page.h> 中定义; 用户空间程序可以使用 getpagesize 库函数, 如果它们需要这个信息.

 

让我们看一下非一般的情况. 如果一个驱动需要 16 KB 来暂存数据, 它不应当指定一个

2 的指数 给 get_free_pages. 你需要一个可移植解决方法. 这样的解决方法, 幸运的是, 已经由内核开发者写好并且称为 get_order:

 

#include <asm/page.h>

int order = get_order(16*1024);

buf = get_free_pages(GFP_KERNEL, order);

 

记住, get_order 的参数必须是 2 的幂.

Linux内存页大小

标签:linux   解决方法   free   指定   int   实现   情况   平台   信息   

原文地址:https://www.cnblogs.com/fanweisheng/p/11146090.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!