[发明专利]一种减少不可重入函数的重构方法有效
申请号: | 201810292482.0 | 申请日: | 2018-03-30 |
公开(公告)号: | CN108920217B | 公开(公告)日: | 2021-12-03 |
发明(设计)人: | 方加强;胡嘉维;方泽文 | 申请(专利权)人: | 惠州市德赛西威汽车电子股份有限公司 |
主分类号: | G06F9/448 | 分类号: | G06F9/448 |
代理公司: | 广州粤高专利商标代理有限公司 44102 | 代理人: | 陈卫;禹小明 |
地址: | 516006 广东省*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 减少 不可 函数 方法 | ||
本发明涉及一种减少不可重入函数的重构方法,包括如步骤:S10、根据对外接口分析实现函数之间的调用关系,并识别出所有不可重入函数;S20、构建函数调用关系映射表,以不同全局资源为分类依据对不可重入函数进行分类;S30、针对每种全局资源单独构建封装函数,并以该封装函数作为新的调用接口,供对应的不可重入函数调用。本发明的减少不可重入函数的重构方法所起到的有益效果包括:1、有效地使软件模块中的不可重入函数减少,降低了多任务运行时发生资源冲突的风险。2、函数之间的耦合度进一步降低,提高了代码的可测试性。3、函数对全局资源的访问入口更加集中,程序运行时易于监测跟踪。4、重构后的函数调用关系更加清晰。
技术领域
本发明涉及车载广播信号调制接收领域,特别涉及一种减少不可重入函数的重构方法。
背景技术
目前大多数嵌入式产品使用了多任务抢占式的系统,在这种多任务抢占的软件环境中,避免全局资源的抢占冲突问题尤为重要。不可避免的是,系统中或多或少都有不可重入函数存在,不可重入函数由于访问了全局资源,当被多个任务并发调用时,容易造成资源冲突。
当不可重入函数的数量越多时,造成资源冲突的风险就越大,系统稳定性就越小,因此,需要通过一些方法减少软件模块中的不可重入函数,以降低资源冲突的风险。
发明内容
本发明为了解决上述技术问题,提供一种减少不可重入函数的重构方法。
一种减少不可重入函数的重构方法,包括如步骤:
S10、根据对外接口分析实现函数之间的调用关系,并识别出所有不可重入函数;
S20、构建函数调用关系映射表,以不同全局资源为分类依据对不可重入函数进行分类;
S30、针对每种全局资源单独构建封装函数,并以该封装函数作为新的调用接口,供对应的不可重入函数调用。
进一步的,步骤S10包括如下子步骤:
S11、根据已定义的模块对外接口,并以该对外接口为起点识别对应的实现函数;
S12、以每个实现函数为起点,自函数顶层开始向下逐层分析模块内所有函数之间的调用关系;
S13、根据该调用关系,识别出模块内的不可重入函数。
进一步的,所述不可重入函数为直接访问全局资源或者直接调用不可重入函数的函数。
进一步的,所述步骤S20包括如下子步骤:
S21、根据被调用的全局资源数量进行构建分组;
S22、对直接调用同一个全局资源的函数归入对应分组中;
S23、对直接或间接调用同一个不可重入函数的函数归入被调用不可重入函数的分组中。
进一步的,所述步骤S30包括如下子步骤:
S31、针对每一个全局资源分别构建一个函数;
S32、将对应分组内的所有函数访问行为封装到步骤S31的新构建函数中形成封装函数;
S33、将该封装函数作为访问该全局资源的新入口。
进一步的,所述封装函数以Stub的形式提供调用接口。
进一步的,在识别出不可重入函数后,将该函数的属性更新为不可重入属性。
进一步的,所述步骤S32包括如下子步骤:
S321、分析出分组内不可重入函数对全局资源的操作方式;
S322、分离出操作方式,并构建特征码与该操作方式对应;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于惠州市德赛西威汽车电子股份有限公司,未经惠州市德赛西威汽车电子股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810292482.0/2.html,转载请声明来源钻瓜专利网。