首页/新闻资讯/正文详情

math PFN_UP

发布时间:2026/9/25 4:28:41 来源:云帆数科 栏目:资讯中心
math PFN_UP
PFN_UP是PFN_DOWN的配套宏用于将物理地址向上取整转换为页帧号PFN。定义在include/linux/pfn.h中。定义与原理#define PFN_UP(x) (((x) PAGE_SIZE - 1) PAGE_SHIFT)它的核心逻辑是先将地址加上PAGE_SIZE - 1再右移PAGE_SHIFT位相当于向上取整除法。在 x86 架构下PAGE_SHIFT为 12PAGE_SIZE为 4096因此PFN_UP(addr) (addr 4095) / 4096核心作用将物理地址向上取整到它所在的下一个页帧号。如果地址恰好落在页边界上则返回该页的页帧号否则返回下一页的页帧号。表达式结果说明PFN_UP(0)0恰好是页边界返回第 0 页PFN_UP(1)1跨越了第 0 页向上取整到第 1 页PFN_UP(4095)1仍在第 0 页内向上取整到第 1 页PFN_UP(4096)1恰好是页边界返回第 1 页PFN_UP(4097)2跨越了第 1 页向上取整到第 2 页与PFN_DOWN的对比宏行为示例PFN_DOWN(x)向下取整返回地址所在页的 PFNPFN_DOWN(4095) 0PFN_UP(x)向上取整返回地址之后的页的 PFNPFN_UP(4095) 1两者的关系可以用一个不等式表示PFN_DOWN(addr) PFN_UP(addr)内核中的典型用途PFN_UP最常见的场景是计算一段内存区域跨越的页数尤其是当起始或结束地址不在页边界上时计算覆盖某段内存所需的页数nr_pages PFN_UP(end) - PFN_DOWN(start);确保分配的内存覆盖请求范围如果请求的大小不是页大小的整数倍PFN_UP会确保分配的页数足够覆盖整个请求。DMA 缓冲区计算设备 DMA 操作通常要求缓冲区按页对齐PFN_UP用于确定实际需要映射的页数。使用注意PFN_UP是向上取整意味着即使地址只多出 1 字节也会算作新的一页。该宏假设输入是物理地址不适用于虚拟地址。在计算页数时通常需要PFN_UP(end) - PFN_DOWN(start)而不是简单的PFN_UP(end) - PFN_UP(start)否则可能少算一页。

相关推荐

math PFN_ALIGN
math PFN_ALIGN

PFN_ALIGN 是 Linux 内核中用于将地址向上对齐到页边界的宏。它与 PFN_DOWN、PFN_UP 同属 include/linux/pfn.h 中的页帧号工具集,但作用略有不同:它直接操作地址,返回对齐后的地址,而不是页帧号。定义与原理#define PFN_ALIGN(x)… · 2026/9/25 4:28:41

从零开始学硬件:用人体解剖学拆解电路板系统框架
从零开始学硬件:用人体解剖学拆解电路板系统框架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:28:35

ESP32开启-O2优化后代码跑飞?三个根因与排查指南
ESP32开启-O2优化后代码跑飞?三个根因与排查指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:28:35

动态路由配置
动态路由配置

动态路由配置原理RIPOSPF拓扑图示静态ip方式RIP方式要点说明案例OSPF方式要点说明案例ping通测试静态路由配置是动态路由配置的基础,动态路由先配置每一个端口的IP,之后在根据相应的动态路由配置协议进行相关配置原理 RIP RIP是一种基于距离向量&#… · 2026/9/25 5:06:36

【Python机器学习】零基础掌握小样本分类中 LDA 与 QDA 的选型思路
【Python机器学习】零基础掌握小样本分类中 LDA 与 QDA 的选型思路

样本很少时,分类边界越灵活越好吗?假如每类只有几十条训练记录,QDA 允许两类拥有不同的协方差结构,但估计的参数也更多。仅凭训练集上的一条漂亮曲线,不能判断它是否比 LDA 更适合未来数据。 本文用两组二维模拟数据演示选型:一组让两类共享协方差,另一组故意让协方差不… · 2026/9/25 5:06:36

【人脸检测 FPS 1000+】ubuntu下libfacedetection tensorrt部署
【人脸检测 FPS 1000+】ubuntu下libfacedetection tensorrt部署

TensorRT系列之 Windows10下yolov8 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov8 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov7 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov6 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov5 tensorrt模型加速… · 2026/9/25 5:06:36

win10下yolov5 tensorrt模型部署
win10下yolov5 tensorrt模型部署

TensorRT系列之 Win10下yolov8 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov8 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov7 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov6 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov5 tensorrt模型加速部署… · 2026/9/25 5:06:35

win10下u2net tensorrt模型部署
win10下u2net tensorrt模型部署

TensorRT系列之 Win10下yolov8 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov8 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov7 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov6 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov5 tensorrt模型加速部署… · 2026/9/25 5:06:35

【Python机器学习】零基础掌握两组变量关联建模中 CCA 与 PLS 的选择
【Python机器学习】零基础掌握两组变量关联建模中 CCA 与 PLS 的选择

同一批样本有两组变量,例如行为特征 X 与问卷分数 Y。发现两组变量存在共同变化方向,和“能用 X 准确预测 Y”是两件事。CCA、PLSCanonical、PLSSVD 更适合先讨论共同结构;PLSRegression 则直接服务于预测目标。若目标没说清楚,把它们按一个分数排队没有意义。 本文模拟两… · 2026/9/25 5:06:28

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码