__read_mostly变量含义
2024-08-29 14:40:42
1. 定义
__read_mostly原语将定义的变量为存放在.data.read_mostly段中,原型在include/asm/cache.h 中定义:
#define __read_mostly __attribute__((__section__(".data.read_mostly")))
2. 作用
因为__read_mostl修饰的变量均放在.data.read_mostly段中,因此,我们可以将经常需要被读取的数据定义为__read_mostly类型, 这样Linux内核被加载时,该数据将自动被存放到Cache中,以提高整个系统的执行效率。
但是哪……
如果所在平台没有Cache,或者虽然有Cache,但是并不提供存放数据的接口,(也就是并不允许人工放置数据在Cache中), 那么定义为__read_mostly类型的数据将不能存放在Linux内核中,甚至也不能够被加载到系统内存去执行。
如果数据不能存放在linux内核,甚至也不能够被加载到系统内存去执行,后果非常严重,将造成Linux 内核启动失败。
3. 后果的避免方案
方案一:
修改include/asm/cache.h中的__ready_mostly定义为:
#define __read_mostly
方案二:
修改arch/xxx/kernel/vmlinux.S文件,将.data.read_mostly段的位置到实际内存空间中去,例如放置在 .data段之后等等。
最新文章
- Python之路Day19-Django(二)
- .NET平台下开源框架
- Linux 信号详解三(sleep,raise)
- Two Sigma OA
- 通用sqlserver分页存储过程
- 基于AWS的自动化部署实践
- 启用aspnet
- grep命令实例
- lnk后缀名打开方式
- cross-document message 跨文档通信 HTML5
- C++map类型 之 简单介绍
- 1.1 Java并发编程的一些概念
- ubuntu下无法在目录下创建文件夹,权限不足解决办法
- [20180606]如何dump数据库里面的汉字.txt
- Oracle Cursor用法总结
- 深入Spring Boot:怎样排查 Cannot determine embedded database driver class for database type NONE
- FileReader读取文件详解
- np.diff函数
- MAP 最大后验——利用经验数据获得对未观测量的点态估计
- 20155214 2016-2017-2 《Java程序设计》第3周学习总结