Linux PAGE_ALIGN 宏定义的理解

news2024/9/24 19:14:50

前言

  • 最近再阅读 Linux ion(一种内存分配管理)时,遇到了 PAGE_ALIGN 宏,这个宏到底是怎么工作的? 【页对齐】时什么意思? 页大小就是 4096 吗?

追踪 PAGE_ALIGN

  • 通过一步一步的追踪,终于了解了 PAGE_ALIGN 宏的最终展开定义。其实就是 PAGE_SIZE 对齐,Linux 上默认是 4096

  • 源头: Linux 内核 drivers\staging\android\ion\ion_buffer.c -> ion_buffer_alloc

在这里插入图片描述

在这里插入图片描述

  • PAGE_ALIGN 的定义 include\linux\mm.h
/* to align the pointer to the (next) page boundary */
#define PAGE_ALIGN(addr) ALIGN(addr, PAGE_SIZE)
  • arch\arc\include\uapi\asm\page.h -> PAGE_SIZE 的定义: 4096 的来源 1<<12

在这里插入图片描述

  • include\linux\kernel.h ALIGN 的定义实现

  • 继续展开: include\uapi\linux\const.h,获取 PAGE_ALIGN 的最终实现

在这里插入图片描述

在这里插入图片描述

  • PAGE_ALIGN 的展开

((((len)) + ((typeof((len)))(((((1UL)) << (12)))) - 1)) & ~((typeof((len)))(((((1UL)) << (12)))) - 1))

  • 可以同时看到 mask (掩码)的巧妙获取,比如 PAGE_SIZE - 1

小结

  • 重视细节,掌握全局,认真阅读,勤做笔记

  • Linux 技术非常的使用,多研究,获取更多

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1131318.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于自动化工具autox.js的抢票(猫眼)

1.看到朋友圈抢周杰伦、林俊杰演唱会票贼难信息,特研究了一段时间,用autox.js写了自动化抢票脚本,购票页面自动点击下单(仅限安卓手机)。 2.脚本运行图 3.前期准备工作 (1)autox.js社区官网:AutoX.js (2)b站上学习资料:10分钟学会AutoX.js hello world_哔哩哔哩_bi…

下一个风口在哪里?云计算:未来十年最有潜力行业!

近年来&#xff0c;中国云计算产业发展迅猛&#xff0c;保持30%以上的年均增长率&#xff0c;成为全球增速最快的市场之一&#xff0c;云计算应用领域正向制造、政务、金融、医疗、教育等企业级市场延伸拓展。 目前&#xff0c;云计算应用的普及促使开源技术广受关注&#xff…

工控安全与网络安全有什么不同?

在当代&#xff0c;全球制造业正在经历一场前所未有的技术变革。工业4.0不仅代表着自动化和数据交换的进步&#xff0c;它还揭示了工业自动化、智能制造与系统集成的融合。这种集成为企业带来了效率和质量的双重提升&#xff0c;但同时也暴露出新的安全隐患。工控系统成为了这一…

守护线程:当一个线程使用setDaemon后,便成了守护线程,当守护线程结束,其相关线程也相应结束

public static void main(String[] args) throws InterruptedException {MyDaemonThread myDaemonThread new MyDaemonThread();//如果我们希望当main线程结束后&#xff0c;子线程自动结束//我们只需要将子线程设置为守护线程即可myDaemonThread.setDaemon(true);myDaemonThr…

机械设计制造,设计行业图纸透明加密保护。防止内部终端核心文件数据、资料外泄

当下互联网时代&#xff0c;许多设计单位的设计图纸都是以电子文件的形式存在于终端电脑和服务器上。在图纸的设计生产过程中&#xff0c;必定会经过多个部门人员之手&#xff0c;此过程中就隐藏着巨大的风险。所以&#xff0c;设计单位需要使用专业的图纸加密软件来保护内部图…

设计模式(14)备忘录模式

一、介绍&#xff1a; 1、定义&#xff1a;是一种行为设计模式&#xff0c;它允许将对象的内部状态保存在一个备忘录对象中&#xff0c;并在需要时恢复对象的状态&#xff0c;而不破坏对象的封装性。 2、使用场景&#xff1a; &#xff08;1&#xff09;当需要保存和恢复对象…

xcheck插件安装到idea中

一、安装xcheck-cli 1.部署好xbox环境之后&#xff0c;在 xcheck 页面右上角&#xff0c;点击帮助进入帮助中心&#xff0c;切换至资源下载tab&#xff0c;进入资源下载页面&#xff0c;下载好所需要的版本&#xff0c;我需要的是windows版本的xcheck-cli和xcheck-idea插件 2.添…

基于ssm卤菜销售系统

基于ssm卤菜销售系统 摘要 基于SSM&#xff08;Spring、SpringMVC、MyBatis&#xff09;框架的卤菜销售系统是一种现代化的食品销售管理系统&#xff0c;旨在提高卤菜店铺的效率、准确性和客户满意度。该系统通过整合多个关键组件&#xff0c;实现了卤菜销售业务的自动化管理&a…

【完美云曦篇】新预告,云曦遭魔改被抓,石昊首秀九天劫光,反杀战王

【侵权联系删除】【文/郑尔巴金】 随着石昊进入血色平原&#xff0c;与云曦开启大逃亡&#xff0c;万众期待的完美世界动画战王之殇的全新特别篇终于要来了。官方也是相当的给力&#xff0c;直接公布了特别篇第135集的先行预告&#xff0c;石昊的雷帝新形态直接帅翻了&#xf…

使用VisualStudio生成类图结构图for高效阅读代码

使用VisualStudio高效阅读代码 前言相关准备导入工程利用VisualStudio生成类图&#xff0c;结构体调用关系利用EnterpriseArchitect(EA)画时序图 前言 目前市面上代码阅读的IDE工具非常丰富&#xff0c;也各有千秋。由于工作经历原因&#xff0c;研发机经历过windows、Mac、Li…

vscode远程连接ubuntu

修改环境变量&#xff0c;改使用git自带的ssh工具 openssh: C:\Windows\System32\OpenSSH\ssh.exeGit ssh: C:\Program Files\Git\usr\bin\ssh.exe vscode安装插件remote-ssh 重开软件&#xff0c;在左侧拓展入口下方&#xff0c;进入远程资源管理器 点击设置&#xff0c;进…

在vs2019或者vs2022中写linux C/CPP程序或者QT程序总是乱码怎么办?

第一步 第二步 第三步 成果 1)情况1 或者: 2)情况2 (好像vs2022是情况1 , vs2019是情况2) 然后这样保存就好:

SYS/BIOS 开发教程: 创建自定义平台

目录 SYS/BIOS 开发教程: 创建自定义平台创建自定义平台新建工程并指定自定义平台修改现有工程使用自定义平台 参考: TI SYS/BIOS v6.35 Real-time Operating System User’s Guide 6.2节 本示例基于 EVMC6678L 开发板, 创建自定义平台, 并将代码段的位置指定到C6678器件内部的…

Chromium源码由浅入深(一)

工作中需要对Chromium源码、尤其是源码中图形部分进行深入研究&#xff0c;所以借此机会边学习边写文章&#xff0c;分享一下我的实时学习研究Chromium源码的由浅入深的过程。 闲言少叙&#xff0c;书归正传。 通过命令行启动Chrome浏览器&#xff0c;命令及结果如下&#xf…

docker 部署tig监控服务

前言 tig对应的服务是influxdb grafana telegraf 此架构比传统的promethus架构更为简洁&#xff0c;虽然influxdb开源方案没有集群部署&#xff0c;但是对于中小型服务监控需求该方案简单高效 本文以docker-compose来演示这套监控体系的快速搭建和效果。 部署 docker-compos…

vue手动拖入和导入excel模版

1.列表按钮 系统设置的按钮权限 v-if“$hasPermission(‘om:equipmentinformation:importProblemStatistics’)” <el-button click“importExcel(scope.row.id)” size“small” type“text” v-if“$hasPermission(‘om:equipmentinformation:importProblemStatistics’)…

【lesson14】进程控制之进程等待

文章目录 为什么要有进程等待&#xff1f;如何等待和什么是等待&#xff1f; 为什么要有进程等待&#xff1f; 1.子进程退出&#xff0c;父进程不管子进程&#xff0c;子进程就要处于僵尸状态------会导致内存泄漏 2.父进程创建子进程是要让子进程办事的&#xff0c;那么子进…

AI小百科 - 什么是词向量?

如何表示一个单词的意义&#xff1f;对人来说&#xff0c;一般用解释法&#xff0c;用一段话来解释词的含义。如“太阳”在新华字典中的释义是“太阳系的中心天体。银河系的一颗普通恒星。”然而&#xff0c;这样的解释计算机是听不懂的&#xff0c;必须用更简洁的方式来对词义…

图片放大缩小时,图片上会出现蓝色蒙版解决方案

1. 问题描述&#xff1a; 页面上需要展示几张图片&#xff0c;并且有放大、缩小、旋转功能&#xff0c;在放大时&#xff0c;图片上出现了蓝色蒙版&#xff0c;如下图&#xff1a; 2. 解决方案&#xff1a; body{ -webkit-user-select:none; -moz-user-select:none; -ms-user…

等电位连接器行业应用综合方案

等电位连接器的原理 等电位连接器的原理是利用气体放电管或压敏电阻等非线性元件&#xff0c;当连接器两端的电位差大于所限峰值电压时&#xff0c;连接器导通&#xff0c;迫使连接器两端不同接地体电位基本相等&#xff0c;消除接地体间放电现象&#xff0c;从而避免了由于地…