專利名稱:一種用于嵌入式系統(tǒng)的信號槽結(jié)構(gòu)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式系統(tǒng),特別是涉及一種用于嵌入式系統(tǒng)的信號槽結(jié)構(gòu)。
背景技術(shù):
信號槽這一概念最初來自奇趣科技公司的Qt庫(現(xiàn)在已經(jīng)被Nokia收購)。這一概念提出后便立刻引起計算機科學(xué)界的注意,提出了多種不同的實現(xiàn)方式?!靶盘枴敝傅氖且环N標(biāo)志或通知,“槽”指的是一個或多個的函數(shù),信號與槽之間可以是一對一的關(guān)系,也可以是一對多或多對一的關(guān)系。信號槽機制是面向組件編程的一種強大的工具,它能夠?qū)崿F(xiàn)組件之間的交互,能夠方便的在系統(tǒng)的一部分通知系統(tǒng)的另一部分完成相關(guān)操作。Qt庫得到廣泛的應(yīng)用,至今信號槽依然是該庫的核心之一,其他許多庫也提供了類似的實現(xiàn),甚至出現(xiàn)了一些專門提供這一機制的工具庫。信號槽實際是與語言無關(guān)的,有很多方法都可以 實現(xiàn)信號槽,不同的實現(xiàn)機制會導(dǎo)致信號槽差別很大,但是,用于通用操作系統(tǒng)中的Qt庫等的信號槽,結(jié)構(gòu)過于復(fù)雜,不能適用于嵌入式系統(tǒng)。
發(fā)明內(nèi)容
為解決上述技術(shù)問題,本發(fā)明提供了一種能用于嵌入式系統(tǒng)的信號槽結(jié)構(gòu),與Qt庫中的信號槽在原理上類似,但與其不同的是本發(fā)明的技術(shù)方案較為精簡,適用于小型的嵌入式系統(tǒng)。本發(fā)明提供的一種用于嵌入式系統(tǒng)的信號槽結(jié)構(gòu),包括信號槽模塊和內(nèi)存池模塊,信號槽模塊用于管理信號和槽,內(nèi)存池模塊用于創(chuàng)建和管理內(nèi)存池,給信號槽模塊提供內(nèi)存用以存儲信號和槽的關(guān)聯(lián)信息。信號槽模塊包括信號槽初始化單元,用于定義信號槽相關(guān)的頭文件和相關(guān)槽的處理動作;關(guān)聯(lián)信息調(diào)用單元,用于接收信號和槽的關(guān)聯(lián)信息,并關(guān)聯(lián)信號和槽;發(fā)送信號單元,用于向信號槽模塊發(fā)送信號;解除關(guān)聯(lián)單元,用于解除信號和槽的關(guān)聯(lián)。內(nèi)存池模塊包括內(nèi)存池初始化單元,用于給內(nèi)存池模塊配置內(nèi)存,創(chuàng)建內(nèi)存池;內(nèi)存池銷毀單元,用于釋放內(nèi)存池占用的內(nèi)存。關(guān)聯(lián)信息調(diào)用單元包括關(guān)聯(lián)信息調(diào)用接口,用于信號槽關(guān)聯(lián)函數(shù);發(fā)送信號單元包括發(fā)送信號接口,用于調(diào)用信號發(fā)送函數(shù);解除關(guān)聯(lián)單元包括解除關(guān)聯(lián)信息調(diào)用接口,用于調(diào)用解除關(guān)聯(lián)函數(shù)。信號槽模塊通過發(fā)送信號接口可以輸入不同類型的多個信號,所述多個信號的的處理方法是向內(nèi)存池申請一塊內(nèi)存作為被調(diào)用函數(shù)的棧,并將信號保存于該棧中,被調(diào)用槽函數(shù)從該棧中獲取信號信息。信號槽模塊使用散列表存儲信號和槽的關(guān)聯(lián)信息,對信號和槽進行管理。所述散列表的關(guān)鍵字為以一個字符串表示的信號名,表項為空項、或者為槽、或者為一條槽函數(shù)鏈表,若為槽函數(shù)鏈表則鏈表中的項目為槽函數(shù)。所述散列表的某一表項所在位置根據(jù)以下散列函數(shù)計算得到
權(quán)利要求
1.一種用于嵌入式系統(tǒng)的信號槽結(jié)構(gòu),其特征在于包括信號槽模塊和內(nèi)存池模塊,所述信號槽模塊用于管理信號和槽,所述內(nèi)存池模塊用于創(chuàng)建和管理內(nèi)存池,給信號槽模塊提供內(nèi)存用以存儲信號和槽的關(guān)聯(lián)信息。
2.根據(jù)權(quán)利要求I所述的一種用于嵌入式系統(tǒng)的信號槽結(jié)構(gòu),其特征在于, 所述信號槽模塊包括 信號槽初始化單元,用于定義信號槽相關(guān)的頭文件和相關(guān)槽的處理動作; 關(guān)聯(lián)信息調(diào)用單元,用于接收信號和槽的關(guān)聯(lián)信息,并關(guān)聯(lián)信號和槽; 發(fā)送信號單元,用于向信號槽模塊發(fā)送信號; 解除關(guān)聯(lián)單元,用于解除信號和槽的關(guān)聯(lián); 所述內(nèi)存池模塊包括 內(nèi)存池初始化單元,用于給內(nèi)存池模塊配置內(nèi)存,創(chuàng)建內(nèi)存池; 內(nèi)存池銷毀單元,用于釋放內(nèi)存池占用的內(nèi)存。
3.根據(jù)權(quán)利要求2所述的一種用于嵌入式系統(tǒng)的信號槽結(jié)構(gòu),其特征在于所述的關(guān)聯(lián)信息調(diào)用單元包括關(guān)聯(lián)信息調(diào)用接口,用于調(diào)用信號槽關(guān)聯(lián)函數(shù);所述發(fā)送信號單元包括發(fā)送信號調(diào)用接口,用于發(fā)送信號函數(shù);所述解除關(guān)聯(lián)單元包括解除關(guān)聯(lián)信息調(diào)用接口,用于調(diào)用解除關(guān)聯(lián)函數(shù)。
4.根據(jù)權(quán)利要求I所述的一種用于嵌入式系統(tǒng)的信號槽結(jié)構(gòu),其特征在于所述信號槽模塊通過發(fā)送信號接口可以輸入不同類型的多個信號,所述多個信號的的處理方法是向內(nèi)存池申請一塊內(nèi)存作為被調(diào)用函數(shù)的棧,并將信號保存于該棧中,被調(diào)用函數(shù)從該棧中獲取信號信息。
5.根據(jù)權(quán)利要求I一 4之一所述的一種用于嵌入式系統(tǒng)的信號槽結(jié)構(gòu),其特征在于信號槽模塊使用散列表存儲信號和槽的關(guān)聯(lián)信息,對信號和槽進行管理。
6.根據(jù)權(quán)利要求5所述一種用于嵌入式系統(tǒng)的信號槽結(jié)構(gòu),其特征在于所述散列表的關(guān)鍵字為以一個字符串表示的信號名,表項為空項、或者為槽、或者為一條槽函數(shù)鏈表,若為槽函數(shù)鏈表則鏈表中的項目為槽函數(shù)。
7.根據(jù)權(quán)利要求6所述一種用于嵌入式系統(tǒng)的信號槽結(jié)構(gòu),其特征在于所述散列表的某一表項所在位置根據(jù)以下散列函數(shù)計算得到
8.根據(jù)權(quán)利要求1、2、3、4之一所述的一種用于嵌入式系統(tǒng)的信號槽結(jié)構(gòu),其特征在于所述內(nèi)存池模塊通過建立一棵平衡二叉樹對內(nèi)存池中的內(nèi)存管理單元進行管理,并基于伙伴算法根據(jù)所構(gòu)建的伙伴結(jié)構(gòu)對內(nèi)存進行分配和回收。
9.根據(jù)權(quán)利要求5所述的一種用于嵌入式系統(tǒng)的信號槽結(jié)構(gòu),其特征在于所述內(nèi)存池模塊通過建立一棵平衡二叉樹對內(nèi)存池中的內(nèi)存管理單元進行管理,并基于伙伴算法根據(jù)所構(gòu)建的伙伴結(jié)構(gòu)對內(nèi)存進行分配和回收。
10.根據(jù)權(quán)利要求8所述的一種用于嵌入式系統(tǒng)的信號槽結(jié)構(gòu),其特征在于所述伙伴結(jié)構(gòu)中設(shè)置十個階數(shù)的伙伴鏈表。
11.根據(jù)權(quán)利要求9所述的一種用于嵌入式系統(tǒng)的信號槽結(jié)構(gòu),其特征在于所述伙伴結(jié)構(gòu)中設(shè)置十個階數(shù)的伙伴鏈表。
12.根據(jù)權(quán)利要求1、2所述的一種用于嵌入式系統(tǒng)的信號槽結(jié)構(gòu),其特征在于所述內(nèi)存池的大小為10KB。
全文摘要
本發(fā)明公開了一種用于嵌入式系統(tǒng)的信號槽結(jié)構(gòu),分為上下兩層,上層為信號槽模塊,下層為內(nèi)存池模塊,信號槽模塊使用散列表對信號和槽進行管理,內(nèi)存池模塊用于創(chuàng)建內(nèi)存池,給信號槽模塊提供必要的內(nèi)存用以存儲信號和槽的相關(guān)數(shù)據(jù),并且在信號和槽解除關(guān)聯(lián)的時候回收所占用的內(nèi)存。內(nèi)存池模塊通過建立一棵平衡二叉樹(AVL樹)對內(nèi)存塊進行管理,并基于伙伴(buddy)算法對內(nèi)存進行分配和回收。本發(fā)明應(yīng)用在嵌入式系統(tǒng)中能夠有效的組織和管理信號和槽,并且查找對應(yīng)信號的槽的時間復(fù)雜度為很小,無需像傳統(tǒng)方法那樣遍歷整個函數(shù)列表查找目標(biāo)函數(shù),提高了函數(shù)的調(diào)用效率,能實現(xiàn)系統(tǒng)組件化編程并提高各個組件間的通信效率。
文檔編號G06F9/44GK102945163SQ20121041818
公開日2013年2月27日 申請日期2012年10月29日 優(yōu)先權(quán)日2012年10月29日
發(fā)明者談恩民, 王煒, 李燁, 李洪剛 申請人:桂林電子科技大學(xué), 中國科學(xué)院深圳先進技術(shù)研究院