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