内核初始化时根据字符串匹配获得相应的处理函数,查找的时候有些麻烦。

写个脚本对将内核中的__setup和early_param显式做了解析:

__setup

#! /bin/bash                                                                                                       

grep '\<__setup\>' ./ -rn --include='*.c' | awk 'BEGIN{FS=":"}{$1="";$2="";print $0}' | grep '^ *__setup' | sed -n -e 's/.*\(__setup\).*"\(.*\)" *, *\(.*\));/__setup_param \2 \3 \3 0/p' | awk '{printf("static const char __setup_str_%s[] __initconst __aligned(1) \n= \"%s\";\n\nstatic struct obs_kernel_param __setup_%s \n__used __section(.init.setup) \n__attribute__((aligned((sizeof(long))))) \n= \n{\n    _setup_str_%s, %s, %s\n};\n\n\n\n"),$3, $2, $3, $3, $4, $5}'

early_param

#! /bin/bash

grep '\<early_param\>' ./ -rn --include='*.c' | awk 'BEGIN{FS=":"}{$1="";$2="";print $0}' | grep '^ *early_param' | sed -n -e 's/.*\(early_param\).*"\(.*\)" *, *\(.*\));/__setup_param \2 \3 \3 1/p' | awk '{printf("static const char \n__setup_str_%s[] \n__initconst __aligned(1) \n= \"%s\";\n\nstatic struct obs_kernel_param __setup_%s \n__used __section(.init.setup) \n__attribute__((aligned((sizeof(long))))) \n= \n{\n    _setup_str_%s, %s, %s\n};\n\n\n\n"),$3, $2, $3, $3, $4, $5}' 

附:

__tagtable

grep '__tagtable(ATAG_.*,.*)' ./ -rn | awk 'BEGIN{FS=":"}{$1="";$2="";print $0}' | grep '^ *__tagtable' | sed -n -e 's/.*\(__tagtable\).*( *\(.*\) *, *\(.*\) *).*/\1  \2  \3/p' | awk '{printf("static struct tagtable\n__tagtable_%s\n__used __attribute__((__section__(\".taglist.init\")))\n= \n{\n   %s, %s\n}\n\n\n"),$3,$2,$3}'

__setup、early_param的解析的更多相关文章

  1. 【转】Linux Kernel __setup(str, fn)解析

    __setup这条宏在Linux Kernel中使用最多的地方就是定义处理Kernel的启动参数的函数及数据结构,宏定义如下: #define __setup(str, fn) \ __setup_p ...

  2. Linux __setup解析【转】

    本文转载自:http://blog.csdn.net/fdaopeng/article/details/7895037 __setup这条宏在Linux Kernel中使用最多的地方就是定义处理Ker ...

  3. Linux Command Line 解析

    Linux Command Line 解析 0 处理模型 Linux kernel的启动包括很多组件的初始化和相关配置,这些配置参数一般是通过command line进行配置的.在进行后续分析之前,先 ...

  4. Linux移植之tag参数列表解析过程分析

    在Linux移植之内核启动过程start_kernel函数简析中已经指出了start_kernel函数的调用层次,这篇主要是对具体的tag参数列表进行解析. 1.内存参数ATAG_MEM参数解析 2. ...

  5. linux kernel的cmdline参数解析原理分析【转】

    转自:https://blog.csdn.net/skyflying2012/article/details/41142801 版权声明:本文为博主kerneler辛苦原创,未经允许不得转载. htt ...

  6. Linux内核(11) - 子系统的初始化之内核选项解析

    首先感谢国家.其次感谢上大的钟莉颖,让我知道了大学不仅有校花,还有校鸡,而且很多时候这两者其实没什么差别.最后感谢清华女刘静,让我深刻体会到了素质教育的重要性,让我感到有责任写写子系统的初始化. 各个 ...

  7. linux kernel的cmdline參数解析原理分析

    利用工作之便,今天研究了kernel下cmdline參数解析过程.记录在此.与大家共享.转载请注明出处.谢谢. Kernel 版本:3.4.55 Kernel启动时会解析cmdline,然后依据这些參 ...

  8. __setup 在内核中的作用【转】

    本文转载自:http://blog.csdn.net/lanmanck/article/details/7613305 本文来自: http://blog.chinaunix.net/uid-1379 ...

  9. CMDLINE的解析

    在linux的config文件中有一个特殊的宏定义CMDLINE,以前也一直在使用这个宏的参数,但是真正这个宏的解析和使用却不怎么明确.这次有机会多对它有些了解,不妨把这个浅显的认识说出来,记下来. ...

随机推荐

  1. jsp----标签编程(JSTL)

    标签编程简介 JSP的开发是在HTML代码中嵌入了大量的Java代码,但是这样一来会使得JSP页面中充满了Java程序,修改或维护起来非常的不方便, 定义一个简单的标签----空标签 要想实现一个标签 ...

  2. 解决MYSQL ERROR 1045 (28000)问题

    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)   Red Hat Enterpr ...

  3. 【C#】多线程解决UI界面卡死的问题

    一个经典的例子: http://www.cnblogs.com/wangchuang/p/4485797.html 问题: 都说Invoke是同步的,BeginInvoke是异步的,但为何用Begin ...

  4. Linux 使用tty0 显示10分钟自动关闭功能

    如果用屏幕显示控制台,10分钟左右会自动关闭,有如下方法可以解决 在应用层调用如下代码: #include <fcntl.h> #include <stdio.h> #incl ...

  5. Docker常用命令<转>

    创建redis服务端docker run -p 6379:6379 -d --name redis-server docker.io/redis:3.0.7 redis-server -- port ...

  6. azkaban安装

    1.下载:git clone https://github.com/azkaban/azkaban.git 2.编译:./gradlew build -x test 3. 创建目录并拷贝 mkdir ...

  7. HttpWebRequest、HttpWebResponse获取网页

    1,通过HttpWebRequest.HttpWebResponse获取一个流 request = (HttpWebRequest)System.Net.WebRequest.Create(this. ...

  8. UI设计,使用 线框图(页面示意图或页面布局图)

    在进行页面框架设计的时候,尝试画个 线框图(页面示意图或页面布局图)吧.

  9. 创建Maven项目出错

    有时候创建maven项目的时候会出错,例如在创建Spring cloud 2 项目的时候,会出现org.apache.maven.archiver.MavenArchiver.getManifest( ...

  10. Java设计模式(13)模板模式(Template模式)

    Template模式定义:定义一个操作中算法的骨架,将一些步骤的执行延迟到其子类中. 其实Java的抽象类本来就是Template模式,因此使用很普遍.而且很容易理解和使用,我们直接以示例开始: pu ...