作为libvirt自带的VMM管理工具,可以说是开发其他VMM管理工具的基础。虽然它是一个应用程序,但是自己分析的时候并没有那么顺利,现将自己的分析做一分析,不足之处,还请多多指点!
从main函数分析,C语言程序员都知道的事,但是好多稍微复杂点的程序,常常进入main函数后,让我们无从下手,因为做了太多的封装,致使分析受挫!可能稍微有些经验的会知道,命令行解析函数,肯能是一个重要的突破口,确实不知道的话,可以执行命令,根据命令行提示信息,在源代码里搜索,然后就可以找到解析了,比如virsh --help |less,找到比较重要的命令,比如create,就可以找到突破口了~也许都是过度对函数封装惹的祸(开玩笑了!封装还是必要的)。对了,千万别吊死到main这个函数上,其他重要函数同样可以是突破口的~
从main函数分析,C语言程序员都知道的事,但是好多稍微复杂点的程序,常常进入main函数后,让我们无从下手,因为做了太多的封装,致使分析受挫!可能稍微有些经验的会知道,命令行解析函数,肯能是一个重要的突破口,确实不知道的话,可以执行命令,根据命令行提示信息,在源代码里搜索,然后就可以找到解析了,比如virsh --help |less,找到比较重要的命令,比如create,就可以找到突破口了~也许都是过度对函数封装惹的祸(开玩笑了!封装还是必要的)。对了,千万别吊死到main这个函数上,其他重要函数同样可以是突破口的~
现在已virsh create test.xml为例,分析virsh命令行程序。当时的问题是,真心想明白*.xml是怎么被使用的,于是找到CmdCreate函数,该函数必定要使用*.xml配置文件的。以CmdCreate函数进行“上下五千年”式的探索。
vshParseArgv<-vshCommandArgvParse<-vshCommandParse<-vshCmdDef<-cmdgroups<-domManagementCmds[]<-CmdCreate->virFileReadAll->virFileReadLimFD->saferade_lim->saferead->read
就是这样,搞清楚了create是怎么回事,也即是可以参考着,自己写一个create了~