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

写个脚本对将内核中的__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. Delphi实现RGB色环的代码绘制(XE10.2+WIN764)

    相关资料: http://blog.csdn.net/tokimemo/article/details/18702689 http://www.myexception.cn/delphi/215402 ...

  2. mac上使用zsh配置环境变量

    Mac配置环境变量的地方 一./etc/profile (建议不修改这个文件 ) 全局(公有)配置,不管是哪个用户,登录时都会读取该文件. 二./etc/bashrc (一般在这个文件中添加系统级环境 ...

  3. 【WPF】右键菜单ContextMenu可点击区域太小的问题

    问题描述 正常使用右键菜单ContextMenu时,如果菜单项是不变的,可以直接在XAML中写死,如下是给一个Button按钮添加了右键菜单功能. <Button Content="T ...

  4. git log 关键字查找

    最近再搞 224 byte oob的 nandflash , 就查看一下 更新的 u-boot 有没有关于这方面的更新. 查找含有某个字符串的 commit git log --grep=224 // ...

  5. 【转】全Javascript的Web开发架构:MEAN和Yeoman【译】

    引言 最近在Angular社区的原型开发者间,一种全Javascript的开发架构MEAN正突然流行起来.其首字母分别代表的是:(M)ongoDB——noSQL的文档数据库,使用JSON风格来存储数据 ...

  6. (转)CDH中启动的hive,使用jdbc连接hiveServer2时候权限不足解决方案

    Hive JDBC:java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.securi ...

  7. [数据结构]A*寻路算法

    简易地图 如图所示简易地图, 其中绿色方块的是起点 (用 A 表示), 中间蓝色的是障碍物, 红色的方块 (用 B 表示) 是目的地. 为了可以用一个二维数组来表示地图, 我们将地图划分成一个个的小方 ...

  8. Extjs4.2 Tree使用技巧小结demo

    本案例使用了Ext.Tree.Panel的如下知识点: 1.刷新.重新加载Tree,定位到上次的节点位置 2.Tree的右键操作 3.Extjs4.x Tree获取当前选中的节点 4.新增.修改.删除 ...

  9. go channel例子

    channel初步认识: package main import "fmt" import "time" func main() { c := make(cha ...

  10. 关于sentinel LDK加密war包实现应用加密的使用方法

    经过一周多时间的研究,终于对sentinel产品的使用有个基本的掌握.其中走了不少的弯路,特此记录一下,以备后面回顾. 开发前的用料准备: windows 10 x64位, tomcat7 x64bi ...