專利名稱:一種定時(shí)器實(shí)現(xiàn)方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及多核處理系統(tǒng)技術(shù)領(lǐng)域,尤指多核處理系統(tǒng)中的一種定時(shí)器 實(shí)現(xiàn)方法和裝置。
背景技術(shù):
目前,在多核網(wǎng)絡(luò)通信設(shè)備中,通常采用數(shù)據(jù)平面和控制平面分離的一
種非對稱處理結(jié)構(gòu)。即控制平面運(yùn)行在一個(gè)或多個(gè)CPU上,并且運(yùn)行一個(gè)
完整的嵌入式操作系統(tǒng),有完整的多任務(wù)管理、中斷管理、時(shí)間管理和定時(shí)
器管理等等;數(shù)據(jù)平面運(yùn)行在其他的CPU上,沒有操作系統(tǒng)或者是提供了 很簡單的資源管理,通常只是做簡單的數(shù)據(jù)流處理和轉(zhuǎn)發(fā)工作,無法提供協(xié) 議軟件中常需要使用的軟件定時(shí)器機(jī)制。
隨著處理業(yè)務(wù)復(fù)雜度的增加,數(shù)據(jù)平面在處理流程中不可避免要出現(xiàn)創(chuàng) 建和刪除定時(shí)的操作。如何提供一種可靠的、高效的、對數(shù)據(jù)平面的處理流 程影響較小的數(shù)據(jù)平面的定時(shí)器機(jī)制,是改善多核網(wǎng)絡(luò)通信設(shè)備性能的 一個(gè) 必須考慮的問題。但是,現(xiàn)有技術(shù)中并沒有一種在非對稱多核處理系統(tǒng)中給 數(shù)據(jù)平面提供一種高效、可靠的定時(shí)器機(jī)制的方案。
發(fā)明內(nèi)容
本發(fā)明提供了一種定時(shí)器實(shí)現(xiàn)方法,該方法為非對稱多核處理系統(tǒng)中的 數(shù)據(jù)平面提供了一種高效、可靠的定時(shí)器機(jī)制。
本發(fā)明還提供了 一種定時(shí)器實(shí)現(xiàn)裝置,該裝置為非對稱多核處理系統(tǒng)中 的數(shù)據(jù)平面提供了一種高效、可靠的定時(shí)器機(jī)制。
為達(dá)到上述目的,本發(fā)明的技術(shù)方案具體是這樣實(shí)現(xiàn)的
本發(fā)明公開了一種定時(shí)器實(shí)現(xiàn)方法,該方法包括第 一數(shù)據(jù)平面CPU在目標(biāo)數(shù)據(jù)平面CPU的定時(shí)器空閑鏈表中獲取一個(gè)
新的定時(shí)器數(shù)據(jù)結(jié)構(gòu),設(shè)置所述定時(shí)器數(shù)據(jù)結(jié)構(gòu)中的定時(shí)器參數(shù);其中所述 第一數(shù)據(jù)平面CPU設(shè)置的定時(shí)器參數(shù)包括目標(biāo)數(shù)據(jù)平面CPU的標(biāo)識;
第一數(shù)據(jù)平面CPU向控制平面CPU發(fā)送定時(shí)器創(chuàng)建消息;該定時(shí)器創(chuàng) 建消息中攜帶與所述定時(shí)器數(shù)據(jù)結(jié)構(gòu)對應(yīng)的定時(shí)器標(biāo)識;
控制平面CPU收到定時(shí)器創(chuàng)建消息后,根據(jù)其中的定時(shí)器標(biāo)識,找到 所述定時(shí)器數(shù)據(jù)結(jié)構(gòu),根據(jù)其中的目標(biāo)數(shù)據(jù)平面CPU的標(biāo)識,將該定時(shí)器 數(shù)據(jù)結(jié)構(gòu)加入目標(biāo)數(shù)據(jù)平面CPU的定時(shí)器運(yùn)行鏈表中;
其中,所述第 一數(shù)據(jù)平面CPU與所述目標(biāo)數(shù)據(jù)平面CPU是同 一個(gè)CPU, 或者是不同的CPU。
本發(fā)明還公開一種定時(shí)器實(shí)現(xiàn)裝置,該裝置包括屬于數(shù)據(jù)平面CPU 的數(shù)據(jù)平面模塊和屬于控制平面CPU的控制平面模塊,其中,
數(shù)據(jù)平面模塊,用于在目標(biāo)數(shù)據(jù)平面CPU的定時(shí)器空閑鏈表中獲取一 個(gè)新的定時(shí)器數(shù)據(jù)結(jié)構(gòu),設(shè)置所述定時(shí)器數(shù)據(jù)結(jié)構(gòu)中的定時(shí)器參數(shù);其中所 述設(shè)置的定時(shí)器參數(shù)包括目標(biāo)數(shù)據(jù)平面CPU的標(biāo)識;用于向控制平面模塊 發(fā)送定時(shí)器創(chuàng)建消息;該定時(shí)器創(chuàng)建消息中攜帶與所述定時(shí)器數(shù)據(jù)結(jié)構(gòu)對應(yīng) 的定時(shí)器標(biāo)識;
控制平面模塊,用于在收到定時(shí)器創(chuàng)建消息后,根據(jù)其中的定時(shí)器標(biāo)識, 找到所述定時(shí)器數(shù)據(jù)結(jié)構(gòu),根據(jù)其中的目標(biāo)數(shù)據(jù)平面CPU的標(biāo)識,將該定 時(shí)器數(shù)據(jù)結(jié)構(gòu)加入目標(biāo)數(shù)據(jù)平面CPU的定時(shí)器運(yùn)行鏈表中。
由上述技術(shù)方案可見,本發(fā)明這種第一數(shù)據(jù)平面CPU在目標(biāo)數(shù)據(jù)平面 CPU的定時(shí)器空閑鏈表中獲取一個(gè)新的定時(shí)器數(shù)據(jù)結(jié)構(gòu),設(shè)置所述定時(shí)器數(shù) 據(jù)結(jié)構(gòu)中的定時(shí)器參數(shù);其中所述第一數(shù)據(jù)平面CPU設(shè)置的定時(shí)器參數(shù)包 括目標(biāo)數(shù)據(jù)平面CPU的標(biāo)識;第一數(shù)據(jù)平面CPU向控制平面CPU發(fā)送定 時(shí)器創(chuàng)建消息;該定時(shí)器創(chuàng)建消息中攜帶與所述定時(shí)器數(shù)據(jù)結(jié)構(gòu)對應(yīng)的定時(shí) 器標(biāo)識;控制平面CPU收到定時(shí)器創(chuàng)建消息后,根據(jù)其中的定時(shí)器標(biāo)識, 找到所述定時(shí)器數(shù)據(jù)結(jié)構(gòu),將該定時(shí)器數(shù)據(jù)結(jié)構(gòu)加入目標(biāo)數(shù)據(jù)平面CPU的定時(shí)器運(yùn)行鏈表中的技術(shù)方案,為非對稱多核處理系統(tǒng)中的數(shù)據(jù)平面提供了 一種高效、可靠的定時(shí)器機(jī)制。
圖1是本發(fā)明實(shí)施例一種定時(shí)器實(shí)現(xiàn)方法的流程圖2是本發(fā)明實(shí)施例中創(chuàng)建定時(shí)器時(shí)的數(shù)據(jù)平面處理流程圖3是本發(fā)明實(shí)施例中創(chuàng)建定時(shí)器時(shí)的控制平面處理流程圖4是本發(fā)明實(shí)施例中定時(shí)器的超時(shí)檢測和超時(shí)消息處理流程圖5是本發(fā)明實(shí)施例中修改定時(shí)器的屬性時(shí)數(shù)據(jù)平面的處理流程圖6是本發(fā)明實(shí)施例中修改定時(shí)器的屬性時(shí)控制平面的處理流程圖7是本發(fā)明實(shí)施例一種定時(shí)器實(shí)現(xiàn)裝置的結(jié)構(gòu)框圖。
具體實(shí)施例方式
圖1是本發(fā)明實(shí)施例一種定時(shí)器實(shí)現(xiàn)方法的流程圖。如圖l所示,該方 法包括以下步驟
步驟101, 任意第一數(shù)據(jù)平面CPU在目標(biāo)數(shù)據(jù)平面CPU的定時(shí)器空 閑鏈表中獲取一個(gè)新的定時(shí)器數(shù)據(jù)結(jié)構(gòu),設(shè)置所述定時(shí)器數(shù)據(jù)結(jié)構(gòu)中的定時(shí) 器參數(shù);其中所述第一數(shù)據(jù)平面CPU設(shè)置的定時(shí)器參數(shù)包括目標(biāo)數(shù)據(jù)平面 CPU的標(biāo)識。
本步驟中,所述第一數(shù)據(jù)平面CPU與目標(biāo)數(shù)據(jù)平面CPU可以是同一個(gè) CPU,也可以是不同的CPU。這是因?yàn)?,在業(yè)務(wù)流程上,各種業(yè)務(wù)的處理可 能在不同的核上處理, 一個(gè)報(bào)文的不同階段也可能在不同的核上進(jìn)行,因此, 有需要由不同的數(shù)據(jù)平面CPU來處理同一個(gè)業(yè)務(wù)流。例如,數(shù)據(jù)平面CPU A 對接收到報(bào)文進(jìn)行流分類處理,將屬于某一會話的報(bào)文發(fā)送給數(shù)據(jù)平面CPU B,并希望CPU B在一段時(shí)間后對該會話執(zhí)行某項(xiàng)操作,則CPU A會創(chuàng)建 屬于CPUB的會話定時(shí)器。
步驟102,第一數(shù)據(jù)平面CPU向控制平面CPU發(fā)送定時(shí)器創(chuàng)建消息;該定時(shí)器創(chuàng)建消息中攜帶與所述定時(shí)器數(shù)據(jù)結(jié)構(gòu)對應(yīng)的定時(shí)器標(biāo)識。
步驟103,控制平面CPU收到定時(shí)器創(chuàng)建消息后,根據(jù)其中的定時(shí)器 標(biāo)識,找到所述定時(shí)器數(shù)據(jù)結(jié)構(gòu),根據(jù)其中的目標(biāo)數(shù)據(jù)平面CPU的標(biāo)識, 將該定時(shí)器數(shù)據(jù)結(jié)構(gòu)加入目標(biāo)數(shù)據(jù)平面CPU的定時(shí)器運(yùn)行鏈表中。
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下對本發(fā)明進(jìn)一 步詳細(xì)說明。
在本發(fā)明中,每個(gè)數(shù)據(jù)平面CPU都有單獨(dú)的定時(shí)器數(shù)據(jù)的存儲結(jié)構(gòu),
包括定時(shí)器空閑鏈表和定時(shí)器運(yùn)行鏈表。鏈表由多個(gè)節(jié)點(diǎn)組成,每個(gè)節(jié)點(diǎn)都 是一個(gè)定時(shí)器數(shù)據(jù)的存儲結(jié)構(gòu),本文中稱之為定時(shí)器的數(shù)據(jù)結(jié)構(gòu)。空閑鏈表 是未創(chuàng)建實(shí)際的定時(shí)器時(shí)的數(shù)據(jù)結(jié)構(gòu)集合,而運(yùn)行鏈表則是已創(chuàng)建的定時(shí)器 的數(shù)據(jù)結(jié)構(gòu)結(jié)合。
本發(fā)明中,用定時(shí)器標(biāo)識(ID)來唯一標(biāo)識一個(gè)定時(shí)器存儲結(jié)構(gòu),或者 也可以說標(biāo)識一個(gè)定時(shí)器。定時(shí)器標(biāo)識可以是無符號整型數(shù)。
在本發(fā)明的一個(gè)實(shí)施例中,定時(shí)器標(biāo)識由控制平面CPU統(tǒng)一分配維護(hù)。 具體為,由控制平面CPU為每個(gè)數(shù)據(jù)平面CPU的空閑鏈表中每個(gè)定時(shí)器數(shù) 據(jù)結(jié)構(gòu)分配一個(gè)唯一的定時(shí)器標(biāo)識。
在本發(fā)明實(shí)施例中定義的定時(shí)器數(shù)據(jù)結(jié)構(gòu)包括以下參數(shù)成員前、后鏈 表指針;定時(shí)器的讀寫鎖;定時(shí)器所屬的CPU的ID;定時(shí)器的狀態(tài);定時(shí) 器的超時(shí)處理函數(shù);定時(shí)器的超時(shí)時(shí)間;定時(shí)器新的超時(shí)時(shí)間;定時(shí)器的類 型。
其中,前后鏈表指針標(biāo)識表示該定時(shí)器數(shù)據(jù)結(jié)構(gòu)在鏈表中的位置;定時(shí) 器所屬的CPU是指執(zhí)行定時(shí)器超時(shí)處理函數(shù)的數(shù)據(jù)平面CPU;定時(shí)器的超 時(shí)處理函數(shù)是該定時(shí)器超時(shí)時(shí)需要執(zhí)行的操作的函數(shù);定時(shí)器的超時(shí)時(shí)間是 創(chuàng)建定時(shí)器時(shí)設(shè)置的超時(shí)時(shí)間;定時(shí)器新的超時(shí)時(shí)間是修改定時(shí)器的定時(shí)時(shí) 間時(shí)設(shè)置的超時(shí)時(shí)間;定時(shí)器的狀態(tài)包括創(chuàng)建狀態(tài);運(yùn)行狀態(tài);參數(shù)修改 狀態(tài);刪除狀態(tài);無效狀態(tài);定時(shí)器的類型包括循環(huán)定時(shí)器和非循環(huán)定時(shí)器。
對于一個(gè)定時(shí)器機(jī)制的實(shí)現(xiàn),主要涉及以下方面定時(shí)器的創(chuàng)建,定時(shí)器的超時(shí)檢測和超時(shí)消息的處理,定時(shí)器的刪除和定時(shí)器的屬性(定時(shí)器超 時(shí)時(shí)間)修改。下面逐一進(jìn)行描述。 一、定時(shí)器的創(chuàng)建
在本發(fā)明的實(shí)施例中,任何數(shù)據(jù)平面CPU都可以創(chuàng)建定時(shí)器,創(chuàng)建定 時(shí)器時(shí)需要指定處理此定時(shí)器的數(shù)據(jù)平面CPU,即該要?jiǎng)?chuàng)建的定時(shí)器所屬的 數(shù)據(jù)平面CPU。要?jiǎng)?chuàng)建的定時(shí)器所屬的數(shù)據(jù)平面CPU既可以是除創(chuàng)建該定 時(shí)器的CPU以外的任何數(shù)據(jù)平面CPU,也可以是創(chuàng)建該定時(shí)器的CPU本身。 為了描述方便,下面假設(shè)有CPU A、 CPU B和CPU C,其中CPU A和 CPU B是數(shù)據(jù)平面CPU, CPU C是控制平面CPU?,F(xiàn)在CPU A要為CPU B 創(chuàng)建一個(gè)定時(shí)器,則該創(chuàng)建定時(shí)器的數(shù)據(jù)平面的流處理程和控制平面的處理 流程分別如圖2和圖3所示。
圖2是本發(fā)明實(shí)施例中創(chuàng)建定時(shí)器時(shí)的數(shù)據(jù)平面處理流程圖。如圖2所 示,包括以下步驟
步驟201 , CPU A獲取所要?jiǎng)?chuàng)建的定時(shí)器所屬的CPU B的標(biāo)識。 步驟202, CPU A從CPU B的定時(shí)器空閑鏈表中獲取一個(gè)新的未被使 用的定時(shí)器數(shù)據(jù)結(jié)構(gòu)。
本實(shí)施例中設(shè)本步驟中獲取的新的定時(shí)器數(shù)據(jù)結(jié)構(gòu)的標(biāo)識為5 。 步驟203, CPU A設(shè)置所獲取的定時(shí)器數(shù)據(jù)結(jié)構(gòu)中的定時(shí)器參數(shù)。 本步驟中,將定時(shí)器所屬的CPU的ID設(shè)置為CPU B的標(biāo)識,將定時(shí) 器的狀態(tài)設(shè)置為創(chuàng)建狀態(tài),設(shè)置好定時(shí)器的超時(shí)處理函數(shù)以及定時(shí)器的超時(shí) 時(shí)間。
步驟204, CPU A通過CPU間的通信機(jī)制向CPU C發(fā)送定時(shí)器創(chuàng)建消 息,該消息中攜帶與所述定時(shí)器數(shù)據(jù)結(jié)構(gòu)對應(yīng)的定時(shí)器標(biāo)識5。
圖3是本發(fā)明實(shí)施例中創(chuàng)建定時(shí)器時(shí)的控制平面處理流程圖。如圖3所 示,包括以下步驟
步驟301, CPU C接收到CPU A發(fā)送的定時(shí)器創(chuàng)建消息后,根據(jù)其中 的定時(shí)器標(biāo)識5找到對應(yīng)的定時(shí)器數(shù)據(jù)結(jié)構(gòu)。步驟302, CPUC根據(jù)所找到的定時(shí)器數(shù)據(jù)結(jié)構(gòu)中的狀態(tài)參數(shù)判斷該定 時(shí)器是否為刪除狀態(tài),是結(jié)束本流程,否者執(zhí)行步驟303。
本步驟中,定時(shí)器有可能是刪除狀態(tài)是因?yàn)槿魏我粋€(gè)數(shù)據(jù)平面CPU在 任何時(shí)刻都可以根據(jù)定時(shí)器ID對相應(yīng)的定時(shí)器進(jìn)行刪除或修改處理。定時(shí) 的刪除和修改將在后面介紹。
本步驟,通過修改定時(shí)器數(shù)據(jù)結(jié)構(gòu)中的前、后鏈表指針將其插入CPUB 的空閑鏈表中。
步驟303, CPU C繼續(xù)判斷該定時(shí)器是否為修改狀態(tài),是則執(zhí)行步驟
304,否則執(zhí)行步驟305。
步驟304, CPUC修改定時(shí)器的參數(shù),執(zhí)行步驟307。
步驟305, CPU C繼續(xù)判斷該定時(shí)器是否為創(chuàng)建狀態(tài),是則執(zhí)行步驟
306,否則結(jié)束。
步驟306,CPUC將標(biāo)識為5的定時(shí)器數(shù)據(jù)結(jié)構(gòu)中的狀態(tài)參數(shù)修改為運(yùn) 行狀態(tài),并根據(jù)其中的超時(shí)時(shí)間參數(shù),將該定時(shí)器數(shù)據(jù)結(jié)構(gòu)加入CPU B的 定時(shí)器運(yùn)行鏈表中的相應(yīng)位置。
至此,屬于CPUB的定時(shí)器建立完成。
在本發(fā)明的實(shí)施例中,為了保證數(shù)據(jù)平面除了自旋鎖之外,無阻塞地申 請到創(chuàng)建定時(shí)器所需的定時(shí)器數(shù)據(jù)結(jié)構(gòu),控制平面的CPU要保證每個(gè)數(shù)據(jù) 平面CPU的空閑鏈表的長度大于某個(gè)預(yù)設(shè)的值。具體為控制平面CPU檢 測每個(gè)數(shù)據(jù)平面CPU的定時(shí)器空閑鏈表的長度是否小于預(yù)設(shè)值,是則對該 空閑鏈表進(jìn)行擴(kuò)充處理,使得該空閑鏈表的長度不再小于預(yù)設(shè)值??刂破矫?CPU可以在處理定時(shí)器參數(shù)修改時(shí),或維護(hù)空閑鏈表的低優(yōu)先級任務(wù)運(yùn)行 時(shí),檢測數(shù)據(jù)平面CPU的定時(shí)器空閑鏈表的長度。
二、定時(shí)器的超時(shí)檢測以及超時(shí)消息的處理
在控制平面的時(shí)鐘中斷或者一個(gè)高優(yōu)先級的系統(tǒng)任務(wù)中進(jìn)行定時(shí)器的 超時(shí)4企測。
圖4是本發(fā)明實(shí)施例中定時(shí)器的超時(shí)檢測和超時(shí)消息處理流程圖。如圖步驟401,控制平面的CPU分別遍歷多核處理系統(tǒng)中的每個(gè)數(shù)據(jù)平面 CPU的定時(shí)器運(yùn)行鏈表,并與當(dāng)前的系統(tǒng)時(shí)間進(jìn)行比較,找出所有已超時(shí)的 定時(shí)器數(shù)據(jù)結(jié)構(gòu)。
延續(xù)上述例子,CPU C遍歷CPU B的定時(shí)器運(yùn)行鏈表,發(fā)現(xiàn)標(biāo)識為5 的定時(shí)器超時(shí)。
步驟402,控制平面CPU將超時(shí)的定時(shí)器數(shù)據(jù)結(jié)構(gòu)中的超時(shí)處理函數(shù) 封裝成定時(shí)器超時(shí)消息發(fā)送給該定時(shí)器所屬的數(shù)據(jù)平面CPU。
這里,則CPUC向CPUB發(fā)送定時(shí)器超時(shí)消息,該消息中攜帶標(biāo)識為 5的定時(shí)器數(shù)據(jù)結(jié)構(gòu)中的超時(shí)處理函數(shù)。
步驟403,接收到定時(shí)器超時(shí)消息的數(shù)據(jù)平面CPU,取出定時(shí)器超時(shí)消 息中的超時(shí)處理函數(shù),執(zhí)行相應(yīng)的處理。
本步驟中,CPU B接收到CPUC發(fā)送定時(shí)器超時(shí)消息,根據(jù)其中的定 超時(shí)處理函數(shù),執(zhí)行相應(yīng)的處理。
步驟404,控制平面CPU判斷所述超時(shí)的定時(shí)器數(shù)據(jù)結(jié)構(gòu)是否為循環(huán) 定時(shí)器,是則根據(jù)其超時(shí)時(shí)間將該定時(shí)器數(shù)據(jù)結(jié)構(gòu)重新放入其所屬CPU的 運(yùn)行鏈表中的新位置,否則將該定時(shí)器數(shù)據(jù)結(jié)構(gòu)從其所屬CPU的定時(shí)器運(yùn) 行鏈表中摘除,將其狀態(tài)改為無效狀態(tài),并放入其所屬CPU的定時(shí)器空閑 鏈表中。
三、定時(shí)器的刪除
在本發(fā)明中,定時(shí)器的刪除可以在任何數(shù)據(jù)平面CPU上進(jìn)行,刪除處 理包括
根據(jù)定時(shí)器標(biāo)識找到相應(yīng)的定時(shí)器數(shù)據(jù)結(jié)構(gòu); 如果定時(shí)器是刪除狀態(tài)或無效狀態(tài),則返回;
如果定時(shí)器是運(yùn)行狀態(tài),將所述找到的定時(shí)器數(shù)據(jù)結(jié)構(gòu)從其所屬CPU 的定時(shí)器運(yùn)行鏈表中摘除;
將定時(shí)器結(jié)構(gòu)插入其所屬CPU的定時(shí)器空閑鏈表中;
12將所述找到的定時(shí)器數(shù)據(jù)結(jié)構(gòu)中的狀態(tài)參數(shù)修改成為刪除狀態(tài)。 三、定時(shí)器的屬性修改
在本發(fā)明中,定時(shí)器的修改也可以在任何數(shù)據(jù)平面CPU上進(jìn)行,并且 涉及控制平面的CPU,定時(shí)器的屬性修改過程在數(shù)據(jù)平面和控制平面的處理 分別如圖5和6所示。
圖5是本發(fā)明實(shí)施例中修改定時(shí)器的屬性時(shí)數(shù)據(jù)平面的處理流程圖。如 圖5所示,包括以下步驟
步驟501,數(shù)據(jù)平面CPU根據(jù)定時(shí)器的標(biāo)識,找到相應(yīng)的定時(shí)器數(shù)據(jù) 結(jié)構(gòu)。
這里仍延續(xù)上述的例子,則可以為CPU A根據(jù)定時(shí)器標(biāo)識5找到CPU B 的定時(shí)器運(yùn)行鏈表中的標(biāo)識為5的定時(shí)器數(shù)據(jù)結(jié)構(gòu)。當(dāng)然,在其他的例子中, 也可以是CPU B自身對自己的定時(shí)器屬性進(jìn)行修改執(zhí)行步驟501 ,或者也可 以是除CPUA和CPUB以外的其他數(shù)據(jù)平面CPU執(zhí)行步驟501。
步驟502,數(shù)據(jù)平面CPU判斷所找到的定時(shí)器數(shù)據(jù)結(jié)構(gòu)中的狀態(tài)參數(shù) 是否為運(yùn)行狀態(tài)或創(chuàng)建狀態(tài),是則執(zhí)行步驟504,否則執(zhí)行步驟503。
步驟503,返回修改錯(cuò)誤,結(jié)束流程。
步驟504,數(shù)據(jù)平面CPU在找到的定時(shí)器數(shù)據(jù)結(jié)構(gòu)中設(shè)置新的超時(shí)時(shí)間。
本步驟中,CPUA在標(biāo)識為5的定時(shí)器數(shù)據(jù)結(jié)構(gòu)中設(shè)置新的超時(shí)時(shí)間。
步驟505,數(shù)據(jù)平面CPU在找到的定時(shí)器數(shù)據(jù)結(jié)構(gòu)中將定時(shí)器狀態(tài)參 數(shù)修改成為修改狀態(tài)。
本步驟中,CPU A在標(biāo)識為5的定時(shí)器數(shù)據(jù)結(jié)構(gòu)中將定時(shí)器狀態(tài)參數(shù) 修改成為^"改狀態(tài)。
步驟506,數(shù)據(jù)平面CPU判斷所找到的定時(shí)器數(shù)據(jù)結(jié)構(gòu)中的狀態(tài)參數(shù) 是否為運(yùn)行狀態(tài),是則執(zhí)行步驟507,否則執(zhí)行步驟508。
步驟507,數(shù)據(jù)平面CPU將所述找到的定時(shí)器數(shù)據(jù)結(jié)構(gòu)從其所屬CPU 的定時(shí)器運(yùn)行鏈表中摘除。本步驟中,CPU A將標(biāo)識為5的定時(shí)器數(shù)據(jù)結(jié)構(gòu)從CPUB的定時(shí)器運(yùn) 行鏈表中摘除。
步驟508,數(shù)據(jù)平面CPU向控制平面CPU發(fā)送攜帶定時(shí)器標(biāo)識的定時(shí) 器修改消息。
本步驟中,CPUA向CPUC發(fā)送攜帶定時(shí)器標(biāo)識為5的定時(shí)器修改消
白
圖6是本發(fā)明實(shí)施例中修改定時(shí)器的屬性時(shí)控制平面的處理流程圖。如 圖6所示,包括以下步驟
步驟601,控制平面CPU接收到定時(shí)器修改消息后,根據(jù)其中的定時(shí) 器標(biāo)識,找到相應(yīng)的定時(shí)器數(shù)據(jù)結(jié)構(gòu)。
延續(xù)上述的例子,CPU C根據(jù)定時(shí)器修改消息中的定時(shí)器標(biāo)識5找到 CPUB的標(biāo)識為5的定時(shí)器數(shù)據(jù)結(jié)構(gòu)。
步驟602,控制平面CPU判斷所找到的定時(shí)器數(shù)據(jù)結(jié)構(gòu)中的狀態(tài)參數(shù) 是否為修改狀態(tài),是則執(zhí)行步驟604,否則執(zhí)行步驟603。
本步驟中,CPU C判斷標(biāo)識為5的定時(shí)器數(shù)據(jù)結(jié)構(gòu)中的狀態(tài)參數(shù)是否為 修改狀態(tài)。
步驟603,控制平面CPU將所述找到的定時(shí)器數(shù)據(jù)結(jié)構(gòu)放入其所屬CPU 的定時(shí)器空閑鏈表中,結(jié)束流程。
本步驟中,CPUC將標(biāo)識為5的定時(shí)器數(shù)據(jù)結(jié)構(gòu)放入CPUB的定時(shí)器 空閑鏈表中。
步驟604,控制平面CPU用所述找到的定時(shí)器數(shù)據(jù)結(jié)構(gòu)中的新的超時(shí) 時(shí)間更新原有的超時(shí)時(shí)間。
本步驟中,CPUC用標(biāo)識為5的定時(shí)器數(shù)據(jù)結(jié)構(gòu)中的新的超時(shí)時(shí)間更新 原有的超時(shí)時(shí)間。
步驟605,控制平面CPU根據(jù)更新后的超時(shí)時(shí)間將該定時(shí)器數(shù)據(jù)結(jié)構(gòu) 加入到其所屬CPU的定時(shí)器運(yùn)行鏈表中。
本步驟中,CPUC根據(jù)更新后的超時(shí)時(shí)間將標(biāo)識為5的定時(shí)器數(shù)據(jù)結(jié)構(gòu)加入到CPU B的定時(shí)器運(yùn)行鏈表中,結(jié)束流程。
在上述實(shí)施例中以CPU A為CPUB創(chuàng)建定時(shí)器以及^f務(wù)改其中的超時(shí)時(shí) 間為例進(jìn)行了說明。在本發(fā)明的其他實(shí)施例中, 一個(gè)數(shù)據(jù)平面CPU,如上述 的CPU A或CPU B,也可以為自己創(chuàng)建定時(shí)器以及進(jìn)行屬性參數(shù)的修改, 其過程與上述實(shí)施例中的流程相同,這里不再復(fù)述。
通過上述實(shí)施例可以看出,除了少量的自旋鎖,數(shù)據(jù)平面的定時(shí)器幾乎 沒有阻塞操作。在實(shí)際實(shí)現(xiàn)中,自旋鎖的保護(hù)范圍被縮小到足夠小,不會影 響數(shù)據(jù)平面處理的效率。
圖7是本發(fā)明實(shí)施例一種定時(shí)器實(shí)現(xiàn)裝置的結(jié)構(gòu)框圖。如圖7所示,該 裝置包括屬于數(shù)據(jù)平面CPU的數(shù)據(jù)平面模塊和屬于控制平面CPU的控制 平面模塊,其中,
數(shù)據(jù)平面模塊,用于在目標(biāo)數(shù)據(jù)平面CPU的定時(shí)器空閑鏈表中獲取一 個(gè)新的定時(shí)器數(shù)據(jù)結(jié)構(gòu),設(shè)置所述定時(shí)器數(shù)據(jù)結(jié)構(gòu)中的定時(shí)器參數(shù);其中所 述設(shè)置的定時(shí)器參數(shù)包括目標(biāo)數(shù)據(jù)平面CPU的標(biāo)識;用于向控制平面模塊 發(fā)送定時(shí)器創(chuàng)建消息;該定時(shí)器創(chuàng)建消息中攜帶與所述定時(shí)器數(shù)據(jù)結(jié)構(gòu)對應(yīng) 的定時(shí)器標(biāo)識;
控制平面模塊,用于在收到定時(shí)器創(chuàng)建消息后,根據(jù)其中的定時(shí)器標(biāo)識, 找到所述定時(shí)器數(shù)據(jù)結(jié)構(gòu),根據(jù)其中的目標(biāo)數(shù)據(jù)平面CPU的標(biāo)識,將該定 時(shí)器數(shù)據(jù)結(jié)構(gòu)加入目標(biāo)數(shù)據(jù)平面CPU的定時(shí)器運(yùn)行鏈表中。
在圖7中,數(shù)據(jù)平面模塊設(shè)置的定時(shí)器參數(shù)還包括超時(shí)時(shí)間和超時(shí)處 理函數(shù);
控制平面模塊,用于根據(jù)所述定時(shí)器數(shù)據(jù)結(jié)構(gòu)中的超時(shí)時(shí)間檢測定時(shí)器 是否超時(shí),是則根據(jù)所述定時(shí)器數(shù)據(jù)結(jié)構(gòu)中的目標(biāo)數(shù)據(jù)平面CPU的標(biāo)識向 目標(biāo)數(shù)據(jù)平面CPU發(fā)送定時(shí)器超時(shí)消息;該定時(shí)器超時(shí)消息中攜帶所述定 時(shí)器數(shù)據(jù)結(jié)構(gòu)中的超時(shí)處理函數(shù),以使得目標(biāo)數(shù)據(jù)平面CPU接收到定時(shí)器 超時(shí)消息時(shí),根據(jù)其中的超時(shí)處理函數(shù)執(zhí)行相應(yīng)的處理??刂破矫婺K,還 可以進(jìn)一步判斷所述超時(shí)的定時(shí)器數(shù)據(jù)結(jié)構(gòu)是否為循環(huán)定時(shí)器,是則根據(jù)其超時(shí)時(shí)間將該定時(shí)器數(shù)據(jù)結(jié)構(gòu)重新放入其所屬CPU的運(yùn)行鏈表中的新位置, 否則將該定時(shí)器數(shù)據(jù)結(jié)構(gòu)從其所屬CPU的定時(shí)器運(yùn)行鏈表中摘除,將其狀
態(tài)改為無效狀態(tài),并放入其所屬CPU的定時(shí)器空閑鏈表中。
在圖7中,數(shù)據(jù)平面模塊設(shè)置的定時(shí)器參數(shù)還包括狀態(tài)參數(shù);數(shù)據(jù)平面 模塊在執(zhí)行所述設(shè)置定時(shí)器數(shù)據(jù)結(jié)構(gòu)中的定時(shí)器參數(shù)時(shí),將狀態(tài)參數(shù)設(shè)置為 創(chuàng)建狀態(tài)。
在圖7中,數(shù)據(jù)平面模塊,進(jìn)一步用于根據(jù)所述定時(shí)器標(biāo)識,找到所述 定時(shí)器數(shù)據(jù)結(jié)構(gòu),如果該定時(shí)器數(shù)據(jù)結(jié)構(gòu)的狀態(tài)參數(shù)為刪除狀態(tài)或無效狀 態(tài),則返回;如果該定時(shí)器數(shù)據(jù)結(jié)構(gòu)的狀態(tài)參數(shù)為運(yùn)行狀態(tài),將該定時(shí)器數(shù) 據(jù)結(jié)構(gòu)從所述目標(biāo)數(shù)據(jù)平面CPU的定時(shí)器運(yùn)行鏈表中摘除,然后將其中的 狀態(tài)參數(shù)設(shè)置為刪除狀態(tài),并插入到該目標(biāo)數(shù)據(jù)平面CPU的空閑鏈表中。
在圖7中,數(shù)據(jù)平面模塊,進(jìn)一步用于根據(jù)所述定時(shí)器標(biāo)識,找到所述 定時(shí)器數(shù)據(jù)結(jié)構(gòu),在其中設(shè)置新的超時(shí)時(shí)間,如果該定時(shí)器數(shù)據(jù)結(jié)構(gòu)的狀態(tài) 參數(shù)為運(yùn)行狀態(tài),將該定時(shí)器數(shù)據(jù)結(jié)構(gòu)從所述目標(biāo)數(shù)據(jù)平面CPU的運(yùn)行鏈 表中摘除,然后將其中的狀態(tài)參數(shù)設(shè)置為修改狀態(tài),向控制平面模塊發(fā)送定 時(shí)器修改消息;該定時(shí)器修改消息中攜帶所述定時(shí)器標(biāo)識;
控制平面模塊,進(jìn)一步用于在接收到定時(shí)器修改消息后,根據(jù)其中的定 時(shí)器標(biāo)識,找到所述定時(shí)器數(shù)據(jù)結(jié)構(gòu),如果該定時(shí)器數(shù)據(jù)結(jié)構(gòu)的狀態(tài)參數(shù)為 修改狀態(tài),用其中的新的超時(shí)時(shí)間更新原有的超時(shí)時(shí)間后,將該定時(shí)器數(shù)據(jù) 結(jié)構(gòu)加入目標(biāo)數(shù)據(jù)平面CPU的定時(shí)器運(yùn)行鏈表中。
在圖7中,控制平面模塊,進(jìn)一步用于檢測目標(biāo)數(shù)據(jù)平面CPU的定時(shí) 器空閑鏈表的長度是否小于預(yù)設(shè)值,是則對該空閑鏈表進(jìn)行擴(kuò)充處理,使得 該空閑鏈表的長度不再小于預(yù)設(shè)值。
由上述技術(shù)方案可見,本發(fā)明這種第一數(shù)據(jù)平面CPU在目標(biāo)數(shù)據(jù)平面 CPU的定時(shí)器空閑鏈表中獲取一個(gè)新的定時(shí)器數(shù)據(jù)結(jié)構(gòu),設(shè)置所述定時(shí)器數(shù) 據(jù)結(jié)構(gòu)中的定時(shí)器參數(shù);其中所述第一數(shù)據(jù)平面CPU設(shè)置的定時(shí)器參數(shù)包 括目標(biāo)數(shù)據(jù)平面CPU的標(biāo)識;第一數(shù)據(jù)平面CPU向控制平面CPU發(fā)送定時(shí)器創(chuàng)建消息;該定時(shí)器創(chuàng)建消息中攜帶與所述定時(shí)器數(shù)據(jù)結(jié)構(gòu)對應(yīng)的定時(shí) 器標(biāo)識;控制平面CPU收到定時(shí)器創(chuàng)建消息后,根據(jù)其中的定時(shí)器標(biāo)識, 找到所述定時(shí)器數(shù)據(jù)結(jié)構(gòu),將該定時(shí)器數(shù)據(jù)結(jié)構(gòu)加入目標(biāo)數(shù)據(jù)平面CPU的 定時(shí)器運(yùn)行鏈表中的技術(shù)方案,為非對稱多核處理系統(tǒng)中的數(shù)據(jù)平面提供了 一種高效、可靠的定時(shí)器機(jī)制。
以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù) 范圍,凡在本發(fā)明的精神和原則之內(nèi)所做的任何修改、等同替換、改進(jìn)等, 均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1、一種定時(shí)器實(shí)現(xiàn)方法,其特征在于,該方法包括第一數(shù)據(jù)平面CPU在目標(biāo)數(shù)據(jù)平面CPU的定時(shí)器空閑鏈表中獲取一個(gè)新的定時(shí)器數(shù)據(jù)結(jié)構(gòu),設(shè)置所述定時(shí)器數(shù)據(jù)結(jié)構(gòu)中的定時(shí)器參數(shù);其中所述第一數(shù)據(jù)平面CPU設(shè)置的定時(shí)器參數(shù)包括目標(biāo)數(shù)據(jù)平面CPU的標(biāo)識;第一數(shù)據(jù)平面CPU向控制平面CPU發(fā)送定時(shí)器創(chuàng)建消息;該定時(shí)器創(chuàng)建消息中攜帶與所述定時(shí)器數(shù)據(jù)結(jié)構(gòu)對應(yīng)的定時(shí)器標(biāo)識;控制平面CPU收到定時(shí)器創(chuàng)建消息后,根據(jù)其中的定時(shí)器標(biāo)識,找到所述定時(shí)器數(shù)據(jù)結(jié)構(gòu),根據(jù)其中的目標(biāo)數(shù)據(jù)平面CPU的標(biāo)識,將該定時(shí)器數(shù)據(jù)結(jié)構(gòu)加入目標(biāo)數(shù)據(jù)平面CPU的定時(shí)器運(yùn)行鏈表中;其中,所述第一數(shù)據(jù)平面CPU與所述目標(biāo)數(shù)據(jù)平面CPU是同一個(gè)CPU,或者是不同的CPU。
2、 如權(quán)利要求l所述的方法,其特征在于,所述第一數(shù)據(jù)平面CPU設(shè) 置的定時(shí)器參數(shù)還包括超時(shí)時(shí)間和超時(shí)處理函數(shù);該方法還包括控制平面CPU根據(jù)所述定時(shí)器數(shù)據(jù)結(jié)構(gòu)中的超時(shí)時(shí)間檢測定時(shí)器是否 超時(shí),是則根據(jù)所述定時(shí)器數(shù)據(jù)結(jié)構(gòu)中的目標(biāo)數(shù)據(jù)平面CPU的標(biāo)識向目標(biāo) 數(shù)據(jù)平面CPU發(fā)送定時(shí)器超時(shí)消息;該定時(shí)器超時(shí)消息中攜帶所述定時(shí)器 數(shù)據(jù)結(jié)構(gòu)中的超時(shí)處理函數(shù);目標(biāo)數(shù)據(jù)平面CPU接收到定時(shí)器超時(shí)消息時(shí),根據(jù)其中的超時(shí)處理函 數(shù)執(zhí)行相應(yīng)的處理。
3、 如權(quán)利要求2所述的方法,其特征在于,所述控制平面CPU根據(jù)所控制平面CPU在時(shí)間中斷或者在高優(yōu)先級的系統(tǒng)任務(wù)中檢測定時(shí)器是 否超時(shí)。
4、 如權(quán)利要求2所述的方法,其特征在于,所述定時(shí)器參數(shù)還包括狀態(tài)參數(shù),該方法進(jìn)一步包括所述第 一數(shù)據(jù)平面CPU執(zhí)行設(shè)置所述定時(shí)器數(shù)據(jù)結(jié)構(gòu)中的定時(shí)器參數(shù) 時(shí),將狀態(tài)參數(shù)設(shè)置為創(chuàng)建狀態(tài)。
5、 如權(quán)利要求4所述的方法,其特征在于,該方法進(jìn)一步包括 第二數(shù)據(jù)平面CPU根據(jù)所述定時(shí)器標(biāo)識,找到所述定時(shí)器數(shù)據(jù)結(jié)構(gòu),將其中的狀態(tài)參數(shù)設(shè)置為刪除狀態(tài),將該定時(shí)器數(shù)據(jù)結(jié)構(gòu)從所述目標(biāo)數(shù)據(jù)平 面CPU的定時(shí)器運(yùn)4亍鏈表中摘除,并插入到該目標(biāo)數(shù)據(jù)平面CPU的空閑鏈 表中;其中,所述第二數(shù)據(jù)平面CPU與所述第 一數(shù)據(jù)平面CPU是同 一個(gè)CPU, 或者,所述第二數(shù)據(jù)平面CPU與所述目標(biāo)數(shù)據(jù)平面CPU是同一個(gè)CPU,或 者,所述第二數(shù)據(jù)平面CPU是與所述第一數(shù)據(jù)平面CPU和目標(biāo)數(shù)據(jù)平面 CPU不同的CPU。
6、 如權(quán)利要求5所述的方法,其特征在于,該方法在控制平面CPU根據(jù)定時(shí)器創(chuàng)建消息中的定時(shí)器標(biāo)識,找到所述定時(shí)器數(shù)據(jù)結(jié)構(gòu)之后,在根據(jù)其中的目標(biāo)數(shù)據(jù)平面CPU的標(biāo)識,將該定時(shí)器數(shù)據(jù)結(jié)構(gòu)加入目標(biāo)數(shù)據(jù)平面 CPU的定時(shí)器運(yùn)行鏈表中之前進(jìn)一步包括控制平面CPU判斷所迷定時(shí)器數(shù)據(jù)結(jié)構(gòu)中的狀態(tài)參數(shù)是否為刪除狀 態(tài),是則結(jié)束。
7、 如權(quán)利要求4所述的方法,其特征在于,該方法進(jìn)一步包括 第三數(shù)據(jù)平面CPU根據(jù)所述定時(shí)器標(biāo)識,找到所述定時(shí)器數(shù)據(jù)結(jié)構(gòu),在其中設(shè)置新的超時(shí)時(shí)間,將其中的狀態(tài)參數(shù)設(shè)置為修改狀態(tài),將該定時(shí)器 數(shù)據(jù)結(jié)構(gòu)從所述目標(biāo)數(shù)據(jù)平面CPU的運(yùn)行鏈表中摘除,向控制平面CPU發(fā) 送定時(shí)器修改消,;該定時(shí)器修改消息中攜帶所述定時(shí)器標(biāo)識;控制平面CPU接收到定時(shí)器修改消息后,根據(jù)其中的定時(shí)器標(biāo)識,找 到所述定時(shí)器數(shù)據(jù)結(jié)構(gòu),用其中的新的超時(shí)時(shí)間更新原有的超時(shí)時(shí)間后,將 該定時(shí)器數(shù)據(jù)結(jié)構(gòu)加入目標(biāo)數(shù)據(jù)平面CPU的定時(shí)器運(yùn)行鏈表中;其中,所述第三數(shù)據(jù)平面CPU與所述第一數(shù)據(jù)平面CPU是同一個(gè)CPU,或者,所述第三數(shù)據(jù)平面CPU與所述目標(biāo)數(shù)據(jù)平面CPU是同一個(gè)CPU,或 者,所述第三數(shù)據(jù)平面CPU與所述第二數(shù)據(jù)平面CPU是同一個(gè)CPU,或者, 所述第三數(shù)據(jù)平面CPU是與所述第一數(shù)據(jù)平面CPU、第二數(shù)據(jù)平面CPU和 目標(biāo)數(shù)據(jù)平面CPU不同的CPU。
8、 如權(quán)利要求7所述的方法,其特征在于,該方法在控制平面CPU根據(jù)定時(shí)器創(chuàng)建消息中的定時(shí)器標(biāo)識,找到所述定時(shí)器數(shù)據(jù)結(jié)構(gòu)之后,在根據(jù)其中的目標(biāo)數(shù)據(jù)平面CPU的標(biāo)識,將該定時(shí)器數(shù)據(jù)結(jié)構(gòu)加入目標(biāo)數(shù)據(jù)平面 CPU的定時(shí)器運(yùn)行鏈表中之前進(jìn)一步包括控制平面CPU判斷所述定時(shí)器數(shù)據(jù)結(jié)構(gòu)中的狀態(tài)參數(shù)是否為修改狀 態(tài),是則用其中的新的超時(shí)時(shí)間更新原有的超時(shí)時(shí)間。
9、 如權(quán)利要求1至8中任一項(xiàng)所述的方法,其特征在于,該方法進(jìn)一 步包括控制平面CPU檢測每個(gè)數(shù)據(jù)平面CPU的定時(shí)器空閑鏈表的長度是否小 于預(yù)設(shè)值,是則對該空閑鏈表進(jìn)行擴(kuò)充處理,使得該空閑鏈表的長度不再小 于預(yù)設(shè)值。
10、 一種定時(shí)器實(shí)現(xiàn)裝置,其特征在于,該裝置包括屬于數(shù)據(jù)平面 CPU的數(shù)據(jù)平面模塊和屬于控制平面CPU的控制平面模塊,其中,數(shù)據(jù)平面模塊,用于在目標(biāo)數(shù)據(jù)平面CPU的定時(shí)器空閑鏈表中獲取一 個(gè)新的定時(shí)器數(shù)據(jù)結(jié)構(gòu),設(shè)置所述定時(shí)器數(shù)據(jù)結(jié)構(gòu)中的定時(shí)器參數(shù);其中所 述設(shè)置的定時(shí)器參數(shù)包括目標(biāo)數(shù)據(jù)平面CPU的標(biāo)識;用于向控制平面模塊 發(fā)送定時(shí)器創(chuàng)建消息;該定時(shí)器創(chuàng)建消息中攜帶與所述定時(shí)器數(shù)據(jù)結(jié)構(gòu)對應(yīng) 的定時(shí)器標(biāo)識;控制平面模塊,用于在收到定時(shí)器創(chuàng)建消息后,根據(jù)其中的定時(shí)器標(biāo)識, 找到所述定時(shí)器數(shù)據(jù)結(jié)構(gòu),根據(jù)其中的目標(biāo)數(shù)據(jù)平面CPU的標(biāo)識,將該定 時(shí)器數(shù)據(jù)結(jié)構(gòu)加入目標(biāo)數(shù)據(jù)平面CPU的定時(shí)器運(yùn)行鏈表中。
11、 如權(quán)利要求IO所述的裝置,其特征在于, 數(shù)據(jù)平面模塊設(shè)置的定時(shí)器參數(shù)還包括超時(shí)時(shí)間和超時(shí)處理函數(shù);控制平面模塊,用于根據(jù)所述定時(shí)器數(shù)據(jù)結(jié)構(gòu)中的超時(shí)時(shí)間檢測定時(shí)器是否超時(shí),是則根據(jù)所述定時(shí)器數(shù)據(jù)結(jié)構(gòu)中的目標(biāo)數(shù)據(jù)平面CPU的標(biāo)識向 目標(biāo)數(shù)據(jù)平面CPU發(fā)送定時(shí)器超時(shí)消息;該定時(shí)器超時(shí)消息中攜帶所述定 時(shí)器數(shù)據(jù)結(jié)構(gòu)中的超時(shí)處理函數(shù),以使得目標(biāo)數(shù)據(jù)平面CPU接收到定時(shí)器 超時(shí)消息時(shí),根據(jù)其中的超時(shí)處理函數(shù)執(zhí)行相應(yīng)的處理。
12、 如權(quán)利要求11所述的裝置,其特征在于,數(shù)據(jù)平面模塊設(shè)置的定 時(shí)器參數(shù)還包括狀態(tài)參數(shù);數(shù)據(jù)平面模塊在執(zhí)行所述設(shè)置定時(shí)器數(shù)據(jù)結(jié)構(gòu)中 的定時(shí)器參數(shù)時(shí),將狀態(tài)參數(shù)設(shè)置為創(chuàng)建狀態(tài)。
13、 如權(quán)利要求12所述的方法,其特征在于,數(shù)據(jù)平面模塊,進(jìn)一步用于根據(jù)所述定時(shí)器標(biāo)識,找到所述定時(shí)器數(shù)據(jù) 結(jié)構(gòu),將其中的狀態(tài)參數(shù)設(shè)置為刪除狀態(tài),將該定時(shí)器數(shù)據(jù)結(jié)構(gòu)從所述目標(biāo) 數(shù)據(jù)平面CPU的定時(shí)器運(yùn)行鏈表中摘除,并插入到該目標(biāo)數(shù)據(jù)平面CPU的 空閑鏈表中。
14、 如權(quán)利要求12所述的裝置,其特征在于,數(shù)據(jù)平面模塊,進(jìn)一步用于根據(jù)所述定時(shí)器標(biāo)識,找到所述定時(shí)器數(shù)據(jù) 結(jié)構(gòu),在其中設(shè)置新的超時(shí)時(shí)間,將其中的狀態(tài)參數(shù)設(shè)置為修改狀態(tài),將該 定時(shí)器數(shù)據(jù)結(jié)構(gòu)從所述目標(biāo)數(shù)據(jù)平面CPU的運(yùn)行鏈表中摘除,向控制平面 模塊發(fā)送定時(shí)器修改消息;該定時(shí)器修改消息中攜帶所述定時(shí)器標(biāo)識;控制平面模塊,進(jìn)一步用于在接收到定時(shí)器修改消息后,根據(jù)其中的定 時(shí)器標(biāo)識,找到所述定時(shí)器數(shù)據(jù)結(jié)構(gòu),用其中的新的超時(shí)時(shí)間更新原有的超 時(shí)時(shí)間后,將該定時(shí)器數(shù)據(jù)結(jié)構(gòu)加入目標(biāo)數(shù)據(jù)平面CPU的定時(shí)器運(yùn)行鏈表 中。
15、 如權(quán)利要求10至14中任一項(xiàng)所述的方法,其特征在于, 控制平面模塊,進(jìn)一步用于檢測目標(biāo)數(shù)據(jù)平面CPU的定時(shí)器空閑鏈表的長度是否小于預(yù)設(shè)值,是則對該空閑鏈表進(jìn)行擴(kuò)充處理,使得該空閑鏈表 的長度不再小于預(yù)設(shè)值。
全文摘要
本發(fā)明公開了一種定時(shí)器實(shí)現(xiàn)方法和裝置。方法包括第一數(shù)據(jù)平面CPU在目標(biāo)數(shù)據(jù)平面CPU的定時(shí)器空閑鏈表中獲取一個(gè)新的定時(shí)器數(shù)據(jù)結(jié)構(gòu),設(shè)置所述定時(shí)器數(shù)據(jù)結(jié)構(gòu)中的定時(shí)器參數(shù);其中所述第一數(shù)據(jù)平面CPU設(shè)置的定時(shí)器參數(shù)包括目標(biāo)數(shù)據(jù)平面CPU的標(biāo)識;第一數(shù)據(jù)平面CPU向控制平面CPU發(fā)送定時(shí)器創(chuàng)建消息;該定時(shí)器創(chuàng)建消息中攜帶與所述定時(shí)器數(shù)據(jù)結(jié)構(gòu)對應(yīng)的定時(shí)器標(biāo)識;控制平面CPU收到定時(shí)器創(chuàng)建消息后,根據(jù)其中的定時(shí)器標(biāo)識,找到所述定時(shí)器數(shù)據(jù)結(jié)構(gòu),將該定時(shí)器數(shù)據(jù)結(jié)構(gòu)加入目標(biāo)數(shù)據(jù)平面CPU的定時(shí)器運(yùn)行鏈表中。本發(fā)明的技術(shù)方案為非對稱多核處理系統(tǒng)中的數(shù)據(jù)平面提供了一種高效、可靠的定時(shí)器機(jī)制。
文檔編號G06F1/04GK101477386SQ20091007661
公開日2009年7月8日 申請日期2009年1月12日 優(yōu)先權(quán)日2009年1月12日
發(fā)明者林 柏 申請人:杭州華三通信技術(shù)有限公司