欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種提升嵌入式設備配置文件讀寫效率的方法與流程

文檔序號:12886985閱讀:754來源:國知局
一種提升嵌入式設備配置文件讀寫效率的方法與流程

本發(fā)明涉及通信領域,具體涉及一種提升嵌入式設備配置文件讀寫效率的方法。



背景技術:

對嵌入式設備進行管理時,一般都需要對設備的配置進行保存,保存配置的文件叫配置文件,多以.cfg命名。設備在啟動的時候,需要讀取初始化的配置或者保存后的配置,所以對配置文件需要進行讀寫操作。

epon設備的配置信息較多,包括olt和onu的配置,現(xiàn)有olt設備的配置文件名稱為startup.cfg,往往讀寫配置的實現(xiàn)方式如附圖1所示,具體過程為調(diào)用cmdrecreatefile函數(shù),發(fā)送信號量gcfgfilegensem,當任務cmdcfgfilemaintask接收到信號量之后去創(chuàng)建文件,并將配置的命令寫入到臨時的配置文件中,當系統(tǒng)執(zhí)行write命令的時候,就從這些臨時配置文件中讀取并寫到startup.cfg中,雖然能滿足讀寫的要求,但是仍然存在以下不足:

(1)將配置數(shù)據(jù)存放在臨時配置文件中,當用戶需要進行showrunning-config操作即讀配置時或者保存配置(即寫配置)時是通過讀寫文件進行操作的。對文件進行頻繁的打開和讀寫操作,會影響系統(tǒng)讀寫配置文件的性能;

(2)當配置內(nèi)容較多或者系統(tǒng)滿配時,文件內(nèi)容較大,需要的時間較長,不能滿足用戶的要求。

針對onu的配置,當pon板滿配onu時,onu的數(shù)目多達10240個,每個onu最少有4個端口,如果onu及其端口都滿配,顯而易見配置文件是很大的,對較大的配置文件進行讀寫時,如果不使用高效的讀寫方法,需要的時間較長,影響系統(tǒng)讀寫配置文件的性能,不能滿足用戶的要求。



技術實現(xiàn)要素:

本發(fā)明要解決的技術問題是,針對現(xiàn)有讀取較大文件性能存在的上述不足,提供一種讀寫嵌入式設備配置文件的方法,將配置信息直接存儲到內(nèi)存中供讀寫,把相應的配置數(shù)據(jù)存儲到內(nèi)存中,當保存或者讀取配置時就直接從內(nèi)存中讀取數(shù)據(jù)組成相應的配置命令,改善嵌入設備保存配置命令的性能,特別是在大配置的時候,雖然會占用多一點的內(nèi)存空間,但是明顯提高系統(tǒng)配置性能。

本發(fā)明為解決上述技術問題所采用的技術方案是:

一種提升嵌入式設備配置文件讀寫效率的方法,包括如下步驟:

(1)初始化cfgmgr模塊時,掛載回調(diào)函數(shù),每一個配置項對應一個函數(shù),回調(diào)函數(shù)函數(shù)包含增加、刪除、修改記錄項節(jié)點,為提供查找效率,通過b樹的方式將所有的節(jié)點存儲;

(2)下發(fā)配置文件時,通過回調(diào)函數(shù)對數(shù)據(jù)庫進行相應的增加、刪除、修改記錄項操作;

(3)根據(jù)數(shù)據(jù)庫表id分別調(diào)用不同的cfgmgr內(nèi)部接口函數(shù),獲取的數(shù)據(jù)通過動態(tài)內(nèi)存的方式存儲到開辟的內(nèi)存;

(4)保存配置文件時,直接對內(nèi)存進行操作,將從內(nèi)存中獲取的所有數(shù)據(jù)寫入相應配置文件并存儲到flash中;

(5)讀配置文件獲取數(shù)據(jù)時,直接對表id表項進行操作,從內(nèi)存中讀取數(shù)據(jù)輸出到相應的界面。

按上述方案,所述步驟(1)中cfgmgr模塊包括startcfg模塊和runningcfg模塊,startcfg模塊主要用于統(tǒng)一管理配置保存的startcfg文件,給cmd模塊提供獲取此文件的指針,cmd模塊用于讀取、生成、擦除、恢復配置操作;runningcfg模塊用于管理當前運行的配置,包括保存、修改和刪除,以及向外提供接口,供生成buildrun信息或生成startcfg文件。

按上述方案,所述步驟(2)中下發(fā)配置文件時配置文件的修改都在內(nèi)存中進行,回調(diào)函數(shù)節(jié)點的查找通過hash算法進行查找。

按上述方案,所述步驟(3)中表id表項的查找通過hash算法來完成,查找到相應的表項后直接操作回調(diào)函數(shù);通過動態(tài)內(nèi)存的方式存儲到開辟的內(nèi)存是指內(nèi)存在在堆里,堆里的內(nèi)存空間動態(tài)釋放。

按上述方案,所述步驟(4)中flash掛載一個可讀性的文件系統(tǒng),當有保存配置的需求時才進行寫flash。

按上述方案,所述步驟(5)中直接對表id表項進行操作是指將配置文件的數(shù)據(jù)通過內(nèi)存數(shù)據(jù)庫將數(shù)據(jù)存儲起來,數(shù)據(jù)的信息以原始的命令行信息展示給客戶。

本發(fā)明的工作原理:該方法包括把相應的配置文件中的數(shù)據(jù)(簡稱配置數(shù)據(jù))通過有向雙向鏈表的形式動態(tài)備份到系統(tǒng)特定內(nèi)存塊中,當需要讀取配置數(shù)據(jù)或者將配置數(shù)據(jù)存儲到flash中時,系統(tǒng)將直接從此特定內(nèi)存塊中通過有效索引去讀取到相應數(shù)據(jù),然后以epon需求組成相應的配置命令,顯示到用戶界面或者寫入相應配置文件并存儲到flash中。當系統(tǒng)操作數(shù)據(jù)庫的時候,不再是去調(diào)用原本的接口,而是改成了調(diào)用在cfgmgr模塊初始化的時候掛載上去的幾個回調(diào)函數(shù),并且根據(jù)表id來分發(fā)是對哪個數(shù)據(jù)表的操作,然后在cfgmgr內(nèi)部根據(jù)表id將要配置的數(shù)據(jù)寫到開辟的內(nèi)存空間,即將配置數(shù)據(jù)保存到內(nèi)存中,需要的時候直接從內(nèi)存中讀取。

與現(xiàn)有技術相比,本發(fā)明具有以下有益效果:

1、現(xiàn)有保存配置文件的思路是每下發(fā)一條配置寫到配置文件中,讀寫操作需要對文件進行頻繁的打開和關閉,且讀取文件需要的時間較長,影響系統(tǒng)的配置性能以及用戶感受,使用本發(fā)明的方法把數(shù)據(jù)存放到內(nèi)存中,不再從flash中獲取配置文件中的數(shù)據(jù),需要的時候直接從內(nèi)存中讀取,從內(nèi)存中直接讀取數(shù)據(jù)肯定比從文件中讀取數(shù)據(jù)要快,提高配置文件的訪問速率;

2、配置文件中的數(shù)據(jù)的修改都在內(nèi)存中完成,提高配置文件的修改效率,改善嵌入設備保存配置命令的性能,特別是在大配置的時候,雖然會占用多一點的內(nèi)存空間,但是明顯提高系統(tǒng)配置性能;

3、通過動態(tài)內(nèi)存的方式存儲到開辟的內(nèi)存是指內(nèi)存在在堆里,堆里的內(nèi)存空間可以動態(tài)釋放,提高內(nèi)存的使用效率;當有保持配置的需求時才進行寫flash,降低些flash的頻率。

附圖說明

圖1為現(xiàn)有olt設備的配置文件讀寫配置的實現(xiàn)方式框圖;

圖2為本發(fā)明讀寫嵌入式設備配置文件的方法的流程圖;

圖3為本發(fā)明實施例將配置數(shù)據(jù)直接存儲到內(nèi)存中的框架圖;

圖4為本發(fā)明實施例將配置數(shù)據(jù)直接存儲到內(nèi)存中的具體實施流程圖。

具體實施方式

以下結合附圖對本發(fā)明的原理和特征進一步的描述,所舉實例只用于解釋說明本發(fā)明,并非限定本發(fā)明的應用范圍。

如圖2~圖4所示,本發(fā)明實施例所述的提升嵌入式設備配置文件讀寫效率的方法,將配置文件中的數(shù)據(jù)直接存儲到內(nèi)存中,包括以下步驟:

(1)初始化cfgmgr模塊,掛載回調(diào)函數(shù)

cfgmgr模塊有兩大模塊,startcfg模塊和runningcfg模塊,startcfg模塊主要用于統(tǒng)一管理配置保存的startcfg文件,給cmd模塊提供獲取此文件的指針,cmd模塊用于讀取、生成、擦除、恢復配置等操作;runningcfg模塊用于管理當前運行的配置,包括保存、修改和刪除,以及向外提供接口,供生成buildrun信息或生成startcfg文件。

(2)下發(fā)配置文件時,通過回調(diào)函數(shù)對數(shù)據(jù)庫進行相應的增加、刪除、修改記錄項操作;

(3)根據(jù)數(shù)據(jù)庫表id分別調(diào)用不同的cfgmgr內(nèi)部接口函數(shù),表id表項的查找通過hash算法來完成,查找到相應的表項后直接操作回調(diào)函數(shù),為防止內(nèi)存浪費,獲取的配置文件中的數(shù)據(jù)通過動態(tài)內(nèi)存的方式使用鏈表結構體存儲到開辟的內(nèi)存空間,鏈表操作的結構體用一個key作為索引,不同的部分在與數(shù)據(jù)域的成員,根據(jù)此種情況,定義cfgmgr通用鏈表結構體即能滿足要求,結構體如下:

其中,pnext指針為指向單向鏈表的下一個節(jié)點的指針,uikey為鏈表節(jié)點的索引,pdata為指向該種鏈表對應數(shù)據(jù)結構的數(shù)據(jù)域。

同時,根據(jù)上面定義的cfgmgr通用鏈表結構體,定義了3個鏈表操作的函數(shù)接口:

i)鏈表的插入操作:

其中,pstheadnode為鏈表頭結點指針,pdata為將要插入的數(shù)據(jù)域指針,uikey為鏈表節(jié)點的索引值;

ii)鏈表的刪除操作:

其中,pstheadnode為鏈表頭結點指針,uikey為將要刪除節(jié)點的索引值;

iii)鏈表的修改操作:

其中,pstheadnode為鏈表頭結點,pdata為指向?qū)⒁薷臄?shù)據(jù)的區(qū)域,uikey為鏈表節(jié)點的索引值,uilength為將要修改數(shù)據(jù)的數(shù)據(jù)域長度。

通過定義上面3個鏈表操作通用接口函數(shù),就可以完全滿足cfgmgr模塊中關于鏈表操作的實現(xiàn)。

定義外部接口

(4)保存配置文件時,刪掉以前的配置文件,將從內(nèi)存中獲取的所有數(shù)據(jù)寫入相應配置文件并存儲到flash中,在flash中以文件的方式存儲,所以flash需要掛載一個可讀性的文件系統(tǒng);

(5)讀配置文件時,直接對表id表項進行操作,從內(nèi)存中讀取數(shù)據(jù)輸出到相應的界面,為提高用戶的體驗,數(shù)據(jù)的信息以原始的命令行信息展示給客戶。

以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之類,所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
新巴尔虎右旗| 石首市| 泾源县| 二手房| 贺兰县| 太白县| 修武县| 隆德县| 襄城县| 枝江市| 台湾省| 浪卡子县| 隆林| 贡觉县| 乡城县| 本溪市| 桦甸市| 什邡市| 杭锦后旗| 芦山县| 安多县| 丰镇市| 余江县| 九龙坡区| 康马县| 同仁县| 海南省| 南召县| 黄平县| 藁城市| 澄迈县| 深水埗区| 延安市| 长乐市| 靖西县| 东乌珠穆沁旗| 长寿区| 盘锦市| 镇宁| 攀枝花市| 宝山区|