__setup、early_param的解析
内核初始化时根据字符串匹配获得相应的处理函数,查找的时候有些麻烦。
写个脚本对将内核中的__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的解析的更多相关文章
- 【转】Linux Kernel __setup(str, fn)解析
__setup这条宏在Linux Kernel中使用最多的地方就是定义处理Kernel的启动参数的函数及数据结构,宏定义如下: #define __setup(str, fn) \ __setup_p ...
- Linux __setup解析【转】
本文转载自:http://blog.csdn.net/fdaopeng/article/details/7895037 __setup这条宏在Linux Kernel中使用最多的地方就是定义处理Ker ...
- Linux Command Line 解析
Linux Command Line 解析 0 处理模型 Linux kernel的启动包括很多组件的初始化和相关配置,这些配置参数一般是通过command line进行配置的.在进行后续分析之前,先 ...
- Linux移植之tag参数列表解析过程分析
在Linux移植之内核启动过程start_kernel函数简析中已经指出了start_kernel函数的调用层次,这篇主要是对具体的tag参数列表进行解析. 1.内存参数ATAG_MEM参数解析 2. ...
- linux kernel的cmdline参数解析原理分析【转】
转自:https://blog.csdn.net/skyflying2012/article/details/41142801 版权声明:本文为博主kerneler辛苦原创,未经允许不得转载. htt ...
- Linux内核(11) - 子系统的初始化之内核选项解析
首先感谢国家.其次感谢上大的钟莉颖,让我知道了大学不仅有校花,还有校鸡,而且很多时候这两者其实没什么差别.最后感谢清华女刘静,让我深刻体会到了素质教育的重要性,让我感到有责任写写子系统的初始化. 各个 ...
- linux kernel的cmdline參数解析原理分析
利用工作之便,今天研究了kernel下cmdline參数解析过程.记录在此.与大家共享.转载请注明出处.谢谢. Kernel 版本:3.4.55 Kernel启动时会解析cmdline,然后依据这些參 ...
- __setup 在内核中的作用【转】
本文转载自:http://blog.csdn.net/lanmanck/article/details/7613305 本文来自: http://blog.chinaunix.net/uid-1379 ...
- CMDLINE的解析
在linux的config文件中有一个特殊的宏定义CMDLINE,以前也一直在使用这个宏的参数,但是真正这个宏的解析和使用却不怎么明确.这次有机会多对它有些了解,不妨把这个浅显的认识说出来,记下来. ...
随机推荐
- JAVA-JSP内置对象之request对象参数
相关资料:<21天学通Java Web开发> request对象1.request对象不但可以用来设置和取得requset范围变量,还可以用来获得客户端请求参数请求的来源.表头.cooki ...
- [转]你所不知的 CSS ::before 和 ::after 伪元素用法
SS 有两个说不上常用的伪类 :before 和 :after,偶尔会被人用来添加些自定义格式什么的,但是它们的功用不仅于此.前几天发现了 Creative Link Effects 这个非常有意思的 ...
- Python进阶(三十五)-Fiddler命令行和HTTP断点调试
Python进阶(三十五)-Fiddler命令行和HTTP断点调试 一. Fiddler内置命令 上一节(使用Fiddler进行抓包分析)中,介绍到,在web session(与我们通常所说的se ...
- Android Things专题5 I2C
文| 谷歌开发人员技术专家, 物联网方向 (IOT GDE) 王玉成(York Wang) 上一讲中.我们说到 Android Things 的 API,以及 Peripheral I/O 设备包括的 ...
- for语句查看js对象
for (var obj in o.curform) { document.write("<p>" + obj + " = " + o.curfor ...
- Java编程的逻辑 (38) - 剖析ArrayList
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...
- hbase源码系列(一)Balancer 负载均衡
看源码很久了,终于开始动手写博客了,为什么是先写负载均衡呢,因为一个室友入职新公司了,然后他们遇到这方面的问题,某些机器的硬盘使用明显比别的机器要多,每次用hadoop做完负载均衡,很快又变回来了. ...
- UIWebview交互之自己定义传值跳转
UIWebview常常会用到和原生页面的跳转.有的可能还须要传值跳转.自己写了一个自己定义跳转的webview,能够跳转到指定控制器并传值,这须要和后台协商好.html中怎样传值跳转,即:html中的 ...
- 多选下拉框带搜索(aps.net)
自己写了一个带搜索功能的多选下拉框,为了要获取值,就没有封装插件,实现思路 1.一个文本框 做搜索 2.一个文本框显示选中文本,一个隐藏控件存值 3.一个div里面绑定CheckBoxList控件(这 ...
- R-Sys.time计算程序运行时间
R用Sys.time()可以查看当前系统时间程序开始时记录: timestart<-Sys.time()程序临结束时记录: timeend<-Sys.time()程序运行时间: runni ...