• __read_mostly变量含义


    

     

                  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段之后等等。

  • 相关阅读:
    Find a way(两个BFS)
    ACM代码模板
    ElasticSearch-集群
    ElasticSearch-倒排索引
    ElasticSearch-IK分词器
    ElasticSearch-数据类型
    ElasticSearch-REST APIS
    cmd命令行中的errorlevel和延迟赋值
    ubuntu 12.04内核升级到3.13.1
    ubuntu 12.04安装TP-LINK TL-WN725N v2
  • 原文地址:https://www.cnblogs.com/youngerchina/p/5624542.html
Copyright © 2020-2023  润新知