版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
ICS01.140.20CCSL7043信息技術(shù)應(yīng)用創(chuàng)新工程建設(shè)規(guī)范第11部分:遷移適配通用技術(shù)要求EngineeringspecificationfortheApplicationInnovationProjectofInformationTechnologyPart11:Generaltechnicalrequirementsofmigrationandadaptation DB43/T2258—2021I前言 Ⅲ Ⅴ 12規(guī)范性引用文件 13術(shù)語和定義 14縮略語 15應(yīng)用軟件遷移適配要求 25.1遷移適配評估 25.2編譯型應(yīng)用軟件遷移適配實(shí)施要求 25.3解釋型應(yīng)用軟件遷移適配實(shí)施要求 35.4存儲位置要求 35.5權(quán)限要求 35.6安裝腳本要求 35.7兼容性要求 45.8功能驗(yàn)證 45.9性能優(yōu)化 46編譯型內(nèi)核驅(qū)動軟件遷移適配要求 56.1遷移適配評估 56.2遷移適配實(shí)施要求 56.3功能驗(yàn)證 66.4性能優(yōu)化 6附錄A(規(guī)范性)Qt開發(fā)環(huán)境遷移 7附錄B(規(guī)范性)Gtk開發(fā)環(huán)境遷移 附錄C(規(guī)范性)Python開發(fā)環(huán)境遷移 附錄D(資料性)驅(qū)動軟件遷移適配的軟件分析方法 DB43/T2258—2021本文件按照GB/T1.1—2020《標(biāo)準(zhǔn)化工作導(dǎo)則第1部分:標(biāo)準(zhǔn)化文件的結(jié)構(gòu)和起草規(guī)則》的規(guī)定起草。請注意本文件的某些內(nèi)容可能涉及專利。本文件的發(fā)布機(jī)構(gòu)不承擔(dān)識別專利的責(zé)任?!缎畔⒓夹g(shù)應(yīng)用創(chuàng)新工程建設(shè)規(guī)范》分為以下幾個部分:——第1部分:臺式微型計(jì)算機(jī)通用技術(shù)要求;——第2部分:便攜式微型計(jì)算機(jī)通用技術(shù)要求;——第3部分:服務(wù)器通用技術(shù)要求;——第4部分:操作系統(tǒng)通用技術(shù)要求;——第5部分:操作系統(tǒng)硬件兼容性通用技術(shù)要求;——第6部分:操作系統(tǒng)軟件兼容性通用技術(shù)要求;——第7部分:辦公套件通用技術(shù)要求;——第8部分:電子公文通用技術(shù)要求;——第9部分:驅(qū)動開發(fā)通用技術(shù)要求;——第10部分:應(yīng)用開發(fā)通用技術(shù)要求;——第11部分:遷移適配通用技術(shù)要求;——第12部分:國產(chǎn)化信息系統(tǒng)建設(shè)質(zhì)量管理規(guī)范;——第13部分:國產(chǎn)化信息系統(tǒng)運(yùn)行維護(hù)規(guī)范;——第14部分:國產(chǎn)化信息系統(tǒng)建設(shè)驗(yàn)收規(guī)范;——第15部分:云計(jì)算通用技術(shù)要求。本部分為第11部分。本部分由湖南省國家密碼管理局提出。本部分由湖南省工業(yè)和信息化廳歸口。本部分起草單位:銀河麒麟軟件(長沙)有限公司、中國人民解放軍國防科技大學(xué)、飛騰信息技術(shù)有限公司、湖南湘江鯤鵬信息科技有限責(zé)任公司、湖南中軟信息系統(tǒng)有限公司、湖南長城科技信息有限公司、湖南國科微電子股份有限公司、長沙景嘉微電子股份有限公司、珠海金山辦公軟件有限公司、鵬城實(shí)驗(yàn)室。本部分主要起草人:魏立峰、吳慶波、張鐸、孫立明、彭歡、蔣林軒、戰(zhàn)茅、王曉川、朱浩、王靜、諶志華、蔡威、張?jiān)隆㈨n光、呂超、董昱、曹澤文、孫洪橋、付志鵬。DB43/T2258—2021V引言湖南省為深入貫徹國家網(wǎng)絡(luò)強(qiáng)國戰(zhàn)略,全面落實(shí)中央有關(guān)文件精神,部署開展湖南省信息技術(shù)應(yīng)用創(chuàng)新工程建設(shè),保障全省各級黨政機(jī)關(guān)關(guān)鍵信息基礎(chǔ)設(shè)施信息安全和信息系統(tǒng)安全可靠運(yùn)行。針對自主可控產(chǎn)品體系初具規(guī)模,但相關(guān)產(chǎn)品和工程實(shí)施標(biāo)準(zhǔn)規(guī)范還很缺乏的現(xiàn)狀,為了規(guī)范工程建設(shè),加速工程進(jìn)度,擴(kuò)大建設(shè)結(jié)果,同時有力提升自主可控產(chǎn)業(yè)發(fā)展水平,確保信息安全,由湖南省國家密碼管理局作為業(yè)務(wù)主管單位、湖南省工業(yè)和信息化廳作為技術(shù)歸口單位,由中國人民解放軍國防科技大學(xué)、中國電子信息產(chǎn)業(yè)集團(tuán)有限公司等單位與湖南省合作制定了《信息技術(shù)應(yīng)用創(chuàng)新工程建設(shè)規(guī)范》地方標(biāo)準(zhǔn)?!缎畔⒓夹g(shù)應(yīng)用創(chuàng)新工程建設(shè)規(guī)范》主要由自主可控核心產(chǎn)品、典型應(yīng)用、工程管理等方面的規(guī)范組成,重點(diǎn)解決應(yīng)用創(chuàng)新工程建設(shè)當(dāng)中產(chǎn)品選型、應(yīng)用開發(fā)、工程實(shí)施等基礎(chǔ)環(huán)節(jié)的實(shí)際問題,可為應(yīng)用創(chuàng)新工程的用戶使用單位、集成建設(shè)單位和相關(guān)產(chǎn)品研制單位,在產(chǎn)品和應(yīng)用規(guī)范化、軟硬件兼容適配、工程實(shí)施標(biāo)準(zhǔn)等方面提供一般性指引?!缎畔⒓夹g(shù)應(yīng)用創(chuàng)新工程建設(shè)規(guī)范》未來將根據(jù)自主可控產(chǎn)業(yè)和應(yīng)用創(chuàng)新工程的發(fā)展變化進(jìn)行相應(yīng)的必要調(diào)整和補(bǔ)充。DB43/T2258—20211信息技術(shù)應(yīng)用創(chuàng)新工程建設(shè)規(guī)范第11部分:遷移適配通用技術(shù)要求本文件規(guī)定了應(yīng)用軟件程序和設(shè)備驅(qū)動程序在不同操作系統(tǒng)之間遷移適配的技術(shù)要求,應(yīng)用軟件遷移適配要求包括開發(fā)環(huán)境遷移適配、代碼重編譯、運(yùn)行環(huán)境遷移適配、存儲位置、權(quán)限、安裝腳本和兼容性要求,設(shè)備驅(qū)動程序遷移適配包括代碼設(shè)計(jì)、代碼適配、代碼重編譯、打包、內(nèi)核兼容性等要求,并提出遷移后的功能驗(yàn)證和性能優(yōu)化要求。本文件適用于指導(dǎo)信息技術(shù)應(yīng)用創(chuàng)新工程建設(shè)中應(yīng)用軟件和設(shè)備驅(qū)動程序在不同操作系統(tǒng)上的遷移適配工作,也為應(yīng)用軟件和設(shè)備驅(qū)動程序遷移后的軟件測試提供指導(dǎo)。2規(guī)范性引用文件下列文件中的內(nèi)容通過文中的規(guī)范性引用而構(gòu)成本文件必不可少的條款。其中,注日期的引用文件,僅該日期對應(yīng)的版本適用于本文件;不注日期的引用文件,其最新版本(包括所有的修改單)適用于本文件。DB43/T1777.6—2020信息技術(shù)應(yīng)用創(chuàng)新工程建設(shè)規(guī)范第6部分:操作系統(tǒng)軟件兼容性通用技術(shù)要求DB43/T2260—2021信息技術(shù)應(yīng)用創(chuàng)新工程建設(shè)規(guī)范第9部分:驅(qū)動開發(fā)通用技術(shù)要求DB43/T2259—2021信息技術(shù)應(yīng)用創(chuàng)新工程建設(shè)規(guī)范第10部分:應(yīng)用開發(fā)通用技術(shù)要求3術(shù)語和定義下列術(shù)語和定義適用于本文件。3.1動態(tài)鏈接庫dynamiclinklibrary是一種不可執(zhí)行的二進(jìn)制程序文件,它允許程序共享執(zhí)行特殊任務(wù)所必需的代碼和其他資源。3.2驅(qū)動程序driver驅(qū)動程序是硬件廠商根據(jù)操作系統(tǒng)編寫的配置文件,操作系統(tǒng)通過驅(qū)動來與控制設(shè)備和進(jìn)行通信。3.3版本魔術(shù)信息vermagicinformation版本魔術(shù)信息是一個描述內(nèi)核版本號以及基礎(chǔ)內(nèi)核配置的字符串。4縮略語下列縮略語適用于本文件:2DB43/T2258—2021CRC:循環(huán)冗余校驗(yàn)(CyclicRedundancyCheck)DKMS:動態(tài)內(nèi)核模塊支持(DynamicKernelModuleSupport)GDK:圖形開發(fā)工具包(GraphicsDevelopmentKit)GPU:圖形處理器(GraphicsProcessingUnit)GTK:跨多種平臺的圖形工具包(GIMPToolkit)5應(yīng)用軟件遷移適配要求5.1遷移適配評估在遷移適配工作開始之前,應(yīng)按以下要求進(jìn)行遷移適配評估:a)遷移軟件源碼分析:分析遷移軟件的主要功能和模塊組成,建立功能模塊與功能實(shí)現(xiàn)的映射關(guān)系;b)基礎(chǔ)運(yùn)行環(huán)境分析:分析遷移軟件所在源平臺和目標(biāo)平臺的開發(fā)環(huán)境、運(yùn)行環(huán)境、開發(fā)規(guī)范以及處理器指令集的差異,評估這些差異對遷移軟件代碼的影響;c)第三方軟件棧分析:分析目標(biāo)平臺上的第三方軟件棧(包括數(shù)據(jù)庫、中間件、辦公套件、瀏覽器等)數(shù)據(jù)、二次開發(fā)接口、操作習(xí)慣等是否兼容,確定可以重用、需要遷移改造的功能模塊和代碼段范圍,確定遷移適配的技術(shù)路線;d)遷移適配工作量評估:根據(jù)遷移適配可能的技術(shù)路線,從技術(shù)方案和管理實(shí)施等角度評估不同組合的遷移工作量、復(fù)雜度和成本;e)遷移環(huán)境準(zhǔn)備:主要包括硬件設(shè)備、操作系統(tǒng)以及調(diào)試工具等的準(zhǔn)備和部署。5.2編譯型應(yīng)用軟件遷移適配實(shí)施要求5.2.1開發(fā)環(huán)境遷移適配要求a)應(yīng)分析應(yīng)用軟件的架構(gòu)和實(shí)現(xiàn)技術(shù)、與操作系統(tǒng)平臺的耦合度和依賴度,確定遷移所涉及的各類系統(tǒng)機(jī)制;b)將與系統(tǒng)調(diào)用無關(guān)的部分代碼進(jìn)行剝離,在國產(chǎn)操作系統(tǒng)環(huán)境下重建工程,重用代碼;c)根據(jù)軟件分析中運(yùn)行環(huán)境、開發(fā)環(huán)境和接口的差異進(jìn)行代碼修改,實(shí)現(xiàn)與原系統(tǒng)相同的軟件功能,例如Qt項(xiàng)目遷移,當(dāng)前主要從Qt4遷移到Qt5,具體遷移參照表應(yīng)符合附錄A的規(guī)定;Gtk遷移主要從gtk2遷移到gtk3,具體內(nèi)容應(yīng)符合附錄B的規(guī)定。5.2.2代碼重編譯要求代碼重新編譯時,應(yīng)對編譯腳本和編譯選項(xiàng)進(jìn)行移植,將編譯腳本和編譯選項(xiàng)更改為目標(biāo)體系結(jié)構(gòu)支持的編譯腳本和編譯選項(xiàng)。生成軟件包時,命名和打包規(guī)范應(yīng)按照DB43/T1777.6—2020中6.5節(jié)要求執(zhí)行。5.2.3運(yùn)行環(huán)境遷移適配要求應(yīng)用軟件運(yùn)行前應(yīng)確認(rèn)所依賴的第三方運(yùn)行庫是否存在,如缺少對應(yīng)的動態(tài)鏈接庫,應(yīng)針對不同的操作系統(tǒng)查找和安裝動態(tài)鏈接庫對應(yīng)的軟件包。在采用Deb格式軟件包的操作系統(tǒng)中,可通過執(zhí)行“apt-filesearch動態(tài)庫名”的方式來查找指定的動態(tài)鏈接庫所對應(yīng)的軟件包;在采用RPM格式軟件包的操作系統(tǒng)中,可通過“yumwhatprovides動態(tài)庫名”的方式來查找指定的動態(tài)鏈接庫所對應(yīng)的軟件包。找到對應(yīng)的動態(tài)庫包之后,可通過操作系統(tǒng)DB43/T2258—2021DB43/T2258—2021廠商提供的軟件源進(jìn)行下載和安裝。如已安裝動態(tài)鏈接庫軟件包但是鏈接地址錯誤,可以通過將動態(tài)鏈接庫所在的目錄路徑添加到LD_LIBRARY_PATH環(huán)境變量或者系統(tǒng)指定的鏈接庫配置文件/etc/ld.so.conf的方式進(jìn)行修復(fù)。5.3解釋型應(yīng)用軟件遷移適配實(shí)施要求解釋型應(yīng)用軟件可在操作系統(tǒng)環(huán)境下直接運(yùn)行,具有較好的跨平臺可移植性,大部分軟件無需修改源代碼,遷移工作量相對較小。但針對以下情況,應(yīng)進(jìn)行少量修改并重新編譯:a)當(dāng)目標(biāo)平臺和移植前的環(huán)境不一致時,則需根據(jù)版本差異,修改源代碼中庫和接口的調(diào)用相關(guān)部分,例如Python應(yīng)用程序,目前主要從python2遷移到python3,遷移后應(yīng)注意語法變化和遷移時宜使用的工具,應(yīng)符合附件C的要求;b)如果通過JNI或其他形式調(diào)用的庫是采用C/C++等編譯型語言開發(fā),則被調(diào)用庫的代碼需按照5.2節(jié)重新編譯或修改;c)對軟件運(yùn)行需要的第三方軟件棧,包括第三方國產(chǎn)數(shù)據(jù)庫、中間件、辦公套件、瀏覽器等軟件棧進(jìn)行遷移和替換;d)系統(tǒng)運(yùn)行時如缺少對應(yīng)的動態(tài)鏈接庫,則需要針對不同的國產(chǎn)操作系統(tǒng),按照5.2.3節(jié)尋找和安裝對應(yīng)的動態(tài)庫包。5.4存儲位置要求應(yīng)用軟件可執(zhí)行程序、動態(tài)庫、配置文件、數(shù)據(jù)文件、緩存文件的存儲位置,應(yīng)符合DB43/T2259—2021第6章的要求。5.5權(quán)限要求5.5.1權(quán)限分離要求具有前端交互邏輯的應(yīng)用軟件的可執(zhí)行程序,應(yīng)以普通用戶權(quán)限運(yùn)行,不應(yīng)使用sudo、pkexec等命令來提權(quán)運(yùn)行。具有前端交互邏輯的應(yīng)用軟件的可執(zhí)行程序,如果需要特權(quán)態(tài)執(zhí)行某些操作,應(yīng)使用前后端分離的方式實(shí)現(xiàn),通過dbus等技術(shù)與后端具有管理員權(quán)限的服務(wù)端通訊,實(shí)現(xiàn)相關(guān)功能。5.5.2權(quán)限提升要求時用戶鑒別要求前端應(yīng)用程序使用dbus等技術(shù)與后端具備管理員權(quán)限的服務(wù)通訊時,應(yīng)使用policykit等技術(shù)進(jìn)行身份鑒別,用于確定用戶是否具備該項(xiàng)行為的權(quán)限。5.6安裝腳本要求a)宜將維護(hù)者腳本作為軟件包的一部分,當(dāng)安裝、升級、移除軟件包時,軟件包管理系統(tǒng)會自動執(zhí)行這些腳本;b)維護(hù)者腳本應(yīng)是可執(zhí)行文件,以#!符號開頭,且這些腳本應(yīng)是可讀的,可被任何人執(zhí)行,不應(yīng)全局可寫;c)包管理系統(tǒng)可查看維護(hù)者腳本的退出狀態(tài),如果腳本運(yùn)行錯誤,應(yīng)返回一個非零值;如果腳本運(yùn)行正常,應(yīng)返回零值;d)用戶與軟件包通過維護(hù)者腳本中的配置文件進(jìn)行交互時,應(yīng)先安裝一個配置腳本作為控制信息文件;e)升級軟件包時,包管理系統(tǒng)將調(diào)用舊版本和新版本軟件包中的腳本組合,用戶應(yīng)檢查參數(shù)DB43/T2258—20214f)在軟件包解壓之前應(yīng)先為正在被升級的包停止相關(guān)服務(wù),然后完成所需的配置工作;在移除軟件包之前,應(yīng)先停止一個軟件包的相關(guān)進(jìn)程,然后修改相關(guān)文件或連接,和/或卸載軟件包所創(chuàng)建的文件;g)維護(hù)者腳本調(diào)用的程序不應(yīng)在程序名前添加路徑,其路徑會設(shè)置在PATH環(huán)境變量中。5.7兼容性要求5.7.1與操作系統(tǒng)解耦要求應(yīng)用軟件不應(yīng)依賴操作系統(tǒng)提供的任何動態(tài)鏈接庫(除基礎(chǔ)C庫外)。應(yīng)用軟件不應(yīng)直接修改操作系統(tǒng)提供的配置文件,宜通過操作系統(tǒng)提供的接口來修改。部分系統(tǒng)配置可通過新增高優(yōu)先級配置文件來進(jìn)行配置覆蓋,新增的配置文件以“兩位數(shù)字-應(yīng)用名.conf”的形式命名。5.7.2動態(tài)庫依賴自包含要求應(yīng)用軟件所使用的動態(tài)鏈接庫應(yīng)盡量獨(dú)立于操作系統(tǒng),應(yīng)用軟件所依賴的動態(tài)鏈接庫(除基礎(chǔ)C庫外)應(yīng)放置在自設(shè)置的lib目錄中。5.8功能驗(yàn)證應(yīng)用軟件遷移適配后,應(yīng)進(jìn)行以下功能驗(yàn)證:a)按照應(yīng)用軟件的功能點(diǎn)逐一進(jìn)行功能測試,保證遷移后的系統(tǒng)與原有系統(tǒng)功能一致;b)檢查遷移后應(yīng)用軟件的用戶界面,是否符合通用規(guī)范,是否符合美觀性和易用性;c)檢查遷移后應(yīng)用軟件的安全性,是否與原有系統(tǒng)具有相同的安全性;d)檢查遷移后應(yīng)用軟件的容錯性,是否與原有系統(tǒng)具有相同的容錯性;e)檢查應(yīng)用軟件在不同平臺的安裝配置能力,檢查在不同平臺、不同配置下應(yīng)用軟件的適配性;f)與原有系統(tǒng)集成適配驗(yàn)證;g)用戶使用場景驗(yàn)證。5.9性能優(yōu)化遷移適配時,應(yīng)通過數(shù)據(jù)采集、瓶頸分析、問題定位、策略優(yōu)化、修改驗(yàn)證5個過程的多次迭代進(jìn)行性能優(yōu)化,使應(yīng)用軟件遷移后的性能不低于遷移前的性能。遷移過程包含以下內(nèi)容:a)數(shù)據(jù)采集:通過設(shè)置Web會話、線程、CPU、I/O、網(wǎng)絡(luò)、內(nèi)存等數(shù)據(jù)采集點(diǎn),持續(xù)采集應(yīng)用軟件的運(yùn)行數(shù)據(jù),同時根據(jù)性能指標(biāo)評估體系,對應(yīng)用軟件性能指標(biāo)采集性能評估數(shù)據(jù);b)瓶頸分析:對采集到的數(shù)據(jù)開展分析,對耗時較多部分,運(yùn)用時間切片工具進(jìn)行分析,找出消耗量大的資源;c)問題定位:使用運(yùn)行監(jiān)控分析工具分析資源消耗較大的原因,可從線程、內(nèi)存等層面逐步定位問題;d)策略優(yōu)化:建立用于性能優(yōu)化的專家知識庫,提供系統(tǒng)性建議,為快速解決問題提供依據(jù)和建議方案;e)修改驗(yàn)證:實(shí)施建議方案并進(jìn)行效果驗(yàn)證,確保問題得到解決;f)宜通過loadrunner、JMeter等性能測試工具分析應(yīng)用軟件的性能,分析比對找出瓶頸并進(jìn)行優(yōu)化。 DB43/T2258—202156編譯型內(nèi)核驅(qū)動軟件遷移適配要求6.1遷移適配評估在遷移適配工作開始之前,應(yīng)按以下要求進(jìn)行遷移適配評估:a)軟件分析:應(yīng)從適配性、規(guī)范性以及體系結(jié)構(gòu)相關(guān)代碼三個方面進(jìn)行分析,初步得到了代碼的移植范圍。具體的軟件分析方法見附錄D;b)技術(shù)路線選定:應(yīng)根據(jù)軟件分析的成果,按照盡量少地對驅(qū)動程序進(jìn)行修改的原則設(shè)計(jì)遷移技術(shù)路線,以滿足驅(qū)動的兼容性要求;c)工作量評估:應(yīng)結(jié)合關(guān)鍵性、性能、復(fù)雜處理、體系結(jié)構(gòu)支持等對工作量進(jìn)行加權(quán),獲取較為科學(xué)的工作量,并根據(jù)這個工作量以及工作計(jì)劃要求來合理配置研發(fā)人員和測試人員;d)遷移環(huán)境準(zhǔn)備:主要包括硬件設(shè)備、操作系統(tǒng)以及測試驗(yàn)證工具的準(zhǔn)備和部署。6.2遷移適配實(shí)施要求6.2.1代碼設(shè)計(jì)要求驅(qū)動程序宜進(jìn)行合理的代碼層次分離,分為內(nèi)核框架層和核心代碼邏輯層,其中內(nèi)核框架層實(shí)現(xiàn)驅(qū)動程序內(nèi)核與Linux內(nèi)核進(jìn)行對接的部分,調(diào)用Linux提供的API接口函數(shù)和數(shù)據(jù)結(jié)構(gòu),這部分隨著內(nèi)核的升級而變化,需要重編譯;核心代碼邏輯層實(shí)現(xiàn)驅(qū)動程序的核心功能,比如讀硬件寄存器的操作、核心算法等,通過內(nèi)核框架層代碼掛接入Linux內(nèi)核。6.2.2代碼編寫要求代碼編寫應(yīng)符合以下適配要求:a)驅(qū)動程序中應(yīng)加入驅(qū)動簽名,增加作者和許可證等簽名信息;b)應(yīng)根據(jù)內(nèi)核和相關(guān)依賴模塊的接口變化模塊校驗(yàn)信息和模塊版本控制信息,修改驅(qū)動程序接口,保證符號表、模塊校驗(yàn)信息和模塊版本控制信息等與當(dāng)前系統(tǒng)的匹配;c)應(yīng)對驅(qū)動程序代碼中的體系結(jié)構(gòu)相關(guān)指令、嵌入式匯編函數(shù)和編譯宏進(jìn)行替換。為了保證Linux內(nèi)核升級時驅(qū)動程序內(nèi)部調(diào)用的符號可用,應(yīng)遵循DB43/T2260.1—2021中5.1節(jié)規(guī)定的原則。6.2.3代碼重編譯要求代碼重新編譯時,應(yīng)對編譯腳本和編譯選項(xiàng)進(jìn)行移植,將編譯腳本和編譯選項(xiàng)更改為目標(biāo)體系結(jié)構(gòu)支持的編譯腳本和編譯選項(xiàng)。6.2.4打包要求為了減少Linux內(nèi)核升級導(dǎo)致設(shè)備驅(qū)動程序重新編譯的工作量,驅(qū)動程序打包時宜采用DKMS內(nèi)核模塊打包方式,內(nèi)核模塊打包應(yīng)符合DB43/T2260—2021中第6.6節(jié)要求。6.2.5內(nèi)核兼容性要求導(dǎo)出符號的CRC信息設(shè)備驅(qū)動程序所使用的導(dǎo)出符號的CRC信息應(yīng)與內(nèi)核中所記錄的對應(yīng)符號的CRC信息保持一致,以確保設(shè)備驅(qū)動程序和內(nèi)核的兼容性。DB43/T2258—20216多內(nèi)核版本兼容若識別驅(qū)動程序需同時兼容多個內(nèi)核版本,驅(qū)動程序中應(yīng)包含對所兼容的內(nèi)核版本的相關(guān)判斷邏輯。6.3功能驗(yàn)證驅(qū)動程序遷移適配后,應(yīng)進(jìn)行以下功能驗(yàn)證:a)按照驅(qū)動程序的功能點(diǎn)逐一進(jìn)行功能測試,保證遷移后的驅(qū)動與原有功能一致;b)檢查內(nèi)核能否正常加載驅(qū)動程序;c)檢查驅(qū)動程序在不同平臺的安裝配置能力,檢查在不同平臺、不同配置下驅(qū)動程序的適配性;d)若發(fā)現(xiàn)問題,應(yīng)跟蹤系統(tǒng)日志,分析問題產(chǎn)生的原因并進(jìn)行相應(yīng)的修改,然后進(jìn)行回歸測試,直到通過所有的功能測試。6.4性能優(yōu)化遷移適配時,應(yīng)根據(jù)應(yīng)用場景和體系結(jié)構(gòu)對操作系統(tǒng)參數(shù)配置進(jìn)行優(yōu)化,包含以下內(nèi)容:a)在工作場景(比如高速網(wǎng)卡的高并發(fā)訪問、GPU顯卡的實(shí)時虛擬化等)下,應(yīng)對通用場景下的默認(rèn)系統(tǒng)參數(shù)重新進(jìn)行優(yōu)化配置;b)宜通過修改內(nèi)核源碼目錄下etc目錄中的配置文件sysctl.conf來實(shí)現(xiàn)配置優(yōu)化;c)針對特定的國產(chǎn)處理器,宜根據(jù)處理器的拓?fù)洹⒑藬?shù)、工作頻率等,對設(shè)備、驅(qū)動程序、應(yīng)用軟件等的工作方式進(jìn)行針對性優(yōu)化;d)宜利用ftrace、kprobe、kgdb、systemtap等內(nèi)核調(diào)試工具分析驅(qū)動程序代碼的執(zhí)行效率,分析比對找出瓶頸并進(jìn)行優(yōu)化。 DB43/T2258—20217Qt開發(fā)環(huán)境遷移Qt項(xiàng)目遷移前應(yīng)配置項(xiàng)目所需的Qt模塊,包括提供GUI程序基本功能的qtbase基礎(chǔ)模塊,提供渲染和創(chuàng)建svg文件功能的qtsvg,以及提供腳本化機(jī)制的qtscript等擴(kuò)展模塊。Qt遷移應(yīng)包括頭文件遷移、函數(shù)遷移、類遷移、常量遷移、模塊遷移、webkit頭文件遷移和webkit類遷移。A.1Qt頭文件遷移Qt4和Qt5的頭文件遷移參照表見表A.1。表A.1頭文件遷移參照表A.2Qt函數(shù)遷移Qt4和Qt5的函數(shù)遷移參照表見表A.2,Qt5缺失的函數(shù)應(yīng)修改遷移軟件源代碼實(shí)現(xiàn)程序邏輯。表A.2函數(shù)遷移參照表無無QCoreApplication::setEQCoreApplication::installNativeEv無QAbstractItemModel::seQAbstractItemModel::rolQDesktopServices::storagQStandardPaths::writableQDesktopServices::diQGuiApplication::commitDaDB43/T2258—20218表A.2函數(shù)遷移參照表(續(xù))QHeaderView::setMovable(boQHeaderView::setSectioQHeaderView::sectionQHeaderView::setClickable(boolclicQHeaderView::setSectionsQHeaderView::sectionsCQHeaderView::setResizeMode(intloQHeaderView::setSectionRQHeaderView::resizeMode(intlogicQHeaderView::sectionReQNetworkConfiguration::bQNetworkConfiguration::beareQSslCertificate::isBlaQSslCertificate::alternateSuQSslCertificate::subjectAlternativeQTest::qWaitForWindoA.3Qt類遷移Qt4和Qt5類遷移見表A.3。表A.3類遷移參照表QHttpResponseHeader,QHttpReA.4Qt常量遷移Qt4和Qt5常量遷移見表A.4,Qt5缺失的常量應(yīng)修改遷移軟件源代碼實(shí)現(xiàn)程序邏輯。9DB43/T2258—2021DBT— 43/2258DBT—表A.4常量遷移參照表無無Qt::WA_MergeSoftkeysRec無無無無無QEvent::Accessibility無A.5Qt模塊遷移Qt4和Qt5模塊遷移見表A.5。表A.5模塊遷移參照表A.6webkit頭文件遷移webkit到webengine頭文件遷移見表A.6。表A.6webkit到webengine頭文件遷移參照表A.7webkit類遷移webkit到webengine類遷移對照見表A.7。DB43/T2258—2021表A.7webkit到webengine類遷移參照表 DB43/T2258—2021Gtk開發(fā)環(huán)境遷移B.1開發(fā)者在已有的gtk2項(xiàng)目中應(yīng)做的適配a)開發(fā)者不得引用無效頭文件gtk3規(guī)定的可引用的頭文件見表B.1。表B.1gtk3中可引用的頭文件使用makeCFLAGS+="-DGTK_DISABLE_SINGLE_INCLUDES"去除無效頭文件。b)應(yīng)去除已棄用符號使用makeCFLAGS+="-DGDK_DISABLE_DEPRECATED-DGTK_DISABLE_DEPRECATED"定義去除已棄用符c)應(yīng)使用已有的訪問接口,不得直接訪問gtk對象使用makeCFLAGS+="-DGSEAL_ENABLE"去除無效接口。d)應(yīng)把GDK_<keyname>替換為GDK_KEY_<keyname>e)應(yīng)通過GIO打開外部程序f)應(yīng)通過cairo進(jìn)行繪制GdkGC和GdkImage對象不能繼續(xù)使用。1)開發(fā)者不應(yīng)繼續(xù)使用GdkBitmap位圖操作,宜使用cairo_mask()實(shí)現(xiàn)相同效果;2)開發(fā)者不應(yīng)繼續(xù)使用gdk_draw_drawable(),宜使用cairo_push_group()實(shí)現(xiàn)相同效果;3)開發(fā)者應(yīng)使用pango_cairo_show_layout()替換gdk_draw_layout_with_colors();B.2開發(fā)者將程序代碼向gtk3遷移應(yīng)做的適配a)開發(fā)者應(yīng)使用get_preferred_width/height替換size_request;b)開發(fā)者應(yīng)使用以下cairo接口進(jìn)行GDK功能替換,見表B.2;DB43/T2258—2021表B.2替換GDK功能的cairo接口無c)開發(fā)者應(yīng)使用cairosurfaces替換GdkPixmap對象和相關(guān)函數(shù);d)開發(fā)者應(yīng)使用GdkVisual處理圖層信息,替換GdkColormap和其相關(guān)函數(shù);e)開發(fā)者應(yīng)使用cairo_surface或GdkPixBufGdk替換GDKDrawable、GdkPixmGdkWindow類中可以替換GdkDrawable相關(guān)的函數(shù)見表B.3。表B.3GdkWindow類中替換GdkDrawable相關(guān)的函數(shù)DB43/T2258—2021DBT— 43/2258DBT—和gdk_display_add_client_message_filter();g)開發(fā)者宜通過添加<gtk/gtkx.h>來使用GtkPlug與GtkSocket組件;h)開發(fā)者應(yīng)使用cairo_t替代GtkWidget::draw信號;i)開發(fā)者應(yīng)使用gtk_orientable_set_orientation()和gtk_progress_bar_set_inverted()替換gtk_progress_bar_set_orientation()來設(shè)置GtkProgressBar進(jìn)度條,當(dāng)前進(jìn)度條的方向值見表B.4。表B.4當(dāng)前進(jìn)度條的方向值j)開發(fā)者應(yīng)通過GtkBoxexpand和GtkBoxfill擴(kuò)大和填充標(biāo)志,默認(rèn)值已由原來的“水平”和“垂直”變成了“從不”和“自動”;k)開發(fā)者不應(yīng)使用GtkObject類,若已有代碼中有從GtkObject類中繼承的對象,需要進(jìn)行l(wèi))GtkEntryCompletion信號“match-selected”和“cursor-on-match”在gtk2中的錯誤已被修復(fù),如涉及相關(guān)代碼,開發(fā)者需要進(jìn)行相應(yīng)調(diào)整;m)開發(fā)者宜使用gtk_window_set_has_resize_grip()和gtk_window_get_has_resize_grip()替換gtk_statusbar_set_has_resize_grip()和gtk_statusbar_get_has_resize_grip();n)開發(fā)者應(yīng)在正確的位置安裝gtk+的模塊,gtk+2.x的位置是libdir/gtk-2.0及其子目錄,gtk+3的位置是libdir/gtk-3.0及其子目錄,如使用GTK+3鏈接到libgtk2.x的模塊,將導(dǎo)致錯誤。DB43/T2258—2021Python開發(fā)環(huán)境遷移應(yīng)用程序從python2遷移到python3,語法變化見表C.1。表C.1python2到python3遷移參照表無無無無從python2遷移到python3,宜使用以下工具:a)python自帶的2to3腳本,可對單個文件或目錄進(jìn)行自動檢測,標(biāo)示遷移python3需要修改的b)Pylint、Pyflakes(或flake8封裝器)工具,能檢測出python2到python3無法檢測出的、遷移python3導(dǎo)致異常的不良代碼。 DB43/T2258—2021驅(qū)動軟件遷移適配的軟件分析方法D.1適配性分析驅(qū)動軟件的適配性分析,主要是結(jié)合Linux內(nèi)核驅(qū)動程序的動態(tài)加載過程,分析該驅(qū)動軟件與內(nèi)核模塊或者內(nèi)核接口的適配性。包含以下幾個方面:一是模塊信息校驗(yàn)匹配,設(shè)備驅(qū)動程序的編譯和加載應(yīng)針對同一內(nèi)核版本完成,只有和當(dāng)前運(yùn)行內(nèi)核版本信息一致的驅(qū)動程序才能被加載;二是驅(qū)動軟件版本控制匹配,內(nèi)核通過檢查module_layout校驗(yàn),對驅(qū)動軟件版本MODVERSIONS進(jìn)行匹配校驗(yàn),要求和內(nèi)核版本保持一致。內(nèi)核在加載外置模塊時會校驗(yàn)驅(qū)動模塊版本魔術(shù)信息,版本魔術(shù)信息定義如下:#defineVERMAGIC_STRING\MODULE_VERMAGIC_SMP\MODULE_VERMAGIC_PREEMPT\MODULE_VERMAGIC_MODULE_UNLOAD\MODULE_VERMAGIC_MODVERSIONS\MODULE_ARCH_VERMAGIC\MODULE_RANDSTRUCT
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生物標(biāo)志物在藥物臨床試驗(yàn)中的生物標(biāo)志物前沿技術(shù)
- 生物材料在皮膚修復(fù)中的創(chuàng)新策略
- 生物大分子藥物的納米緩釋保護(hù)策略
- 生物制品穩(wěn)定性試驗(yàn)效力保持評估
- 生物3D打印腎臟移植免疫排斥防控策略
- 深度解析(2026)《GBT 19584-2010銀行卡磁條信息格式和使用規(guī)范》
- 哈電集團(tuán)車間主任筆試題庫含答案
- 氣候科學(xué)家面試題及答案
- 深度解析(2026)《GBT 19322.2-2017小艇 機(jī)動游艇空氣噪聲 第2部分:用標(biāo)準(zhǔn)艇進(jìn)行噪聲評估》
- 萬能硬度計(jì)項(xiàng)目可行性分析報告范文
- 財務(wù)顧問服務(wù)協(xié)議合同
- 國家開放大學(xué)《社會工作概論#》補(bǔ)修課形考答案
- 2025國家統(tǒng)計(jì)局齊齊哈爾調(diào)查隊(duì)招聘公益性崗位5人考試筆試參考題庫及答案解析
- 前列腺術(shù)后尿控功能康復(fù)策略
- 2025年浙江紅船干部學(xué)院、中共嘉興市委黨校公開選聘事業(yè)人員2人考試參考題庫附答案解析
- 美容機(jī)構(gòu)的課程
- 路面工程安全專項(xiàng)施工方案
- 2025重慶市環(huán)衛(wèi)集團(tuán)有限公司招聘27人筆試歷年參考題庫附帶答案詳解
- 通信網(wǎng)絡(luò)工程師維護(hù)與服務(wù)水平績效考核表
- 燃?xì)馐┕ぐ踩嘤?xùn)計(jì)劃
- 2025應(yīng)用為王中國大模型市場
評論
0/150
提交評論