摘 要 Linux内核版本变更带来驱动程序调用内核接口的不一致性错误非常频繁,其通过手工修复不仅工作量繁重,还可能引入新的错误.针对这个问题,驱动移植中间库辅助适配和驱动移植辅助信息等方面的已有研究提供了辅助示例,但是还需要人工分析和手工构造补丁,人工修复的工作量依然较大并且效率较低.为此,通过推荐高质量补丁降低人工修复的工作量并提高修复效率.与传统方法通过错误代码形式的相似性识别同类错误不同,提出依据错误发生的相同原因和来源识别同类错误.提出了一种分层搜索算法用于获取待修复错误对应的错误根因,通过错误根因识别同类错误的修复实例,从其中提取并选择针对性修复模板实现同类未修复错误的高质量补丁推荐.在收集的19个真实驱动程序数据集上的实验表明,所提方法相比传统方法的补丁推荐正确率有显著提高.
关键词 驱动移植;修复实例;引入错误变更;修复模板;补丁推荐; 错误根因
Linux驱动程序是操作系统中非常重要的系统组件且代码体量庞大,占据Linux内核大约70%的代码量[1].在实际操作系统研发中,如何使设备驱动程序跟上对应操作系统其他部分的版本演进是当前面临的最大问题之一[2].当Linux内核版本升级后,由于内核版本的升级可能引入一些内核接口服务的变更,使得驱动程序代码中一些内核接口调用不再适应更新后的内核版本,导致原有驱动程序在新的内核环境中由于不相适配可能产生不一致性错误[3].为了适配频繁变化的内核版本并维持已有设备在新内核环境中的可用性,开发者需要针对驱动程序代码进行持续的适配性修改并完成驱动程序移植.然而内核版本变更对驱动程序带来的关联影响程度和影响范围都很大,由于Linux内核版本的变更使得对应驱动程序在移植中所需的适配