[發明專利]一種減少不可重入函數的重構方法有效
| 申請號: | 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.szxzyx.cn/pat/books/201810292482.0/2.html,轉載請聲明來源鉆瓜專利網。





