zoukankan      html  css  js  c++  java
  • 如何获取内核代码的变更信息说明

    有时候内核代码因为各种原因,发生改变,如何查找更新理由?

    1、首先git内核全部代码,不能用下载的压缩包,git可以包含全部信息。

    git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git

    2、查看下载的内核版本?

    make kernelversion

    3、比如:我想查看 include/linux/kernel.h内的min3()函数是何时更改的?

    4、首先:用grep命令,查看min3的行号

    grep -n  min3  include/linux/kernel.h

    得到如下反馈:

    fly@noi:~/linux-stable$ grep -n min3 include/linux/kernel.h
    820: * min3 - return minimum of three values
    825:#define min3(x, y, z) min((typeof(x))min(x, y), z)

    5、根据行号:得到定义该宏的行号:825,然后使用git查hash码

    fly@noi:~/linux-stable$ git blame -L824,825 include/linux/kernel.h
    e8c97af0 (Randy Dunlap      2017-10-13 15:58:11 -0700 824)  */
    2e1d06e1 (Michal Nazarewicz 2014-10-09 15:30:13 -0700 825) #define min3(x, y, z) min((typeof(x))min(x, y), z)

    可以得知:hash码为:2e1d06e1

    6、使用git log命令查找相关的日志:

    git log 2e1d06e1

    哈哈,找到了更新min3函数的说明:

    commit 2e1d06e1c05af9dbe8a3bfddeefbf041ca637fff
    Author: Michal Nazarewicz <mina86@mina86.com>
    Date:   Thu Oct 9 15:30:13 2014 -0700
    
        include/linux/kernel.h: rewrite min3, max3 and clamp using min and max
        
        It appears that gcc is better at optimising a double call to min and max
        rather than open coded min3 and max3.  This can be observed here:
        
            $ cat min-max.c
            #define min(x, y) ({                            
                    typeof(x) _min1 = (x);                  
                    typeof(y) _min2 = (y);                  
                    (void) (&_min1 == &_min2);              
                    _min1 < _min2 ? _min1 : _min2; })
            #define min3(x, y, z) ({                        
                    typeof(x) _min1 = (x);                  
                    typeof(y) _min2 = (y);                  
                    typeof(z) _min3 = (z);                  
                    (void) (&_min1 == &_min2);              
                    (void) (&_min1 == &_min3);              
                    _min1 < _min2 ? (_min1 < _min3 ? _min1 : _min3) : 
                            (_min2 < _min3 ? _min2 : _min3); })
        
            int fmin3(int x, int y, int z) { return min3(x, y, z); }
            int fmin2(int x, int y, int z) { return min(min(x, y), z); }

    。。。后面还有很多

  • 相关阅读:
    mvc性能优化
    wordpress分享到微信无缩略图的问题
    wordpress插件汉化包,和使用教程
    wordpress重力表单实时提醒功能教程(亲测可用)
    无法建立目录wp-content/uploads/xxxx/xx。有没有上级目录的写权限?解决办法
    font-face自定义字体使用方法
    图片在父元素里面水平垂直居中
    wordpress改不了固定连接的解决办法
    wordpress更换域名
    iframe添加点击事件
  • 原文地址:https://www.cnblogs.com/litifeng/p/7693908.html
Copyright © 2011-2022 走看看