驱动开发系列18 - PAGE_SHIFT 解释
一:概述:
PAGE_SHIFT
是一个在内核开发中常用的宏,通常用于计算与内存页面大小相关的值。它定义了页的大小通过位移(shift)的方式进行转换。
二:什么是 PAGE_SHIFT
?
PAGE_SHIFT
是一个预定义的常量,用来表示页面大小的位移量。操作系统中的内存通常以“页”(page)为单位进行管理。常见的页大小是 4 KB(4096 字节)。由于 4096 是 2 的 12 次方,可以用位移操作代替乘除法进行页面相关的计算,因此 PAGE_SHIFT
通常定义为 12。
#define PAGE_SHIFT 12 // 对应的页面大小为 2^12 = 4096 字节
三:用法场景
-
将页号转换为字节地址
页号(page frame number, PFN)通常指的是内存中的一个页面块。如果需要将页号转换为内存中的字节地址,就可以使用PAGE_SHIFT
。
// 将页号转换为物理地址
unsigned long pfn &