发明名称 |
一种基于编译选项的Linux内核模块关系提取方法 |
摘要 |
本发明公开了一种基于编译选项的Linux内核模块关系提取方法。本方法为:1)将内核源代码根据其功能及逻辑关系进行划分,形成虚目录;2)对Linux内核实目录下每一个Kconfig文件进行语法分析,识别出所有的编译选项;然后从同目录下的编译文件解析出每个编译选项所需的源码文件;3)根据虚目录,以源码文件作为中介,将编译选项划分到相应的虚目录中;4)对每一源码文件进行正则分析,得到源码文件中定义的函数以及变量;5)对每一函数和变量的具体实现源码进行解析,提取出函数之间、变量之间的调用关系;6)根据上述关系构建出内核组织架构。本发明并不依赖于某一内核版本,可以清晰明了的获取内核模块间关系。 |
申请公布号 |
CN103699389A |
申请公布日期 |
2014.04.02 |
申请号 |
CN201310746159.3 |
申请日期 |
2013.12.30 |
申请人 |
北京大学 |
发明人 |
荆琦 |
分类号 |
G06F9/44(2006.01)I |
主分类号 |
G06F9/44(2006.01)I |
代理机构 |
北京君尚知识产权代理事务所(普通合伙) 11200 |
代理人 |
余长江 |
主权项 |
一种基于编译选项的Linux内核模块关系提取方法,其步骤为:1)将内核源代码根据其功能及逻辑关系进行划分,形成虚目录;2)对Linux内核实目录下每一个Kconfig文件进行语法分析,识别出所有的编译选项;然后对同目录下的编译文件进行语法分析,解析出每个编译选项所需的源码文件;3)根据划分好的虚目录,以源码文件作为中介,将编译选项划分到相应的虚目录中;4)对每一源码文件进行正则分析,得到源码文件中定义的函数以及变量;5)对每一函数的具体实现源码进行解析,提取出函数之间的调用关系;对每一变量的具体实现源码进行解析,提取出变量之间的调用关系;6)根据上述获取的虚目录与编译选项之间的包含关系、编译选项与源码文件之间的包含关系、源码文件与函数或变量之间的包含关系,以及函数之间的调用关系、变量之间的调用关系构建出Linux内核组织架构。 |
地址 |
100871 北京市海淀区颐和园路5号北京大学 |