亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種sparc平臺(tái)減少中斷響應(yīng)抖動(dòng)的技術(shù)的制作方法

文檔序號(hào):6538499閱讀:147來源:國(guó)知局
一種sparc平臺(tái)減少中斷響應(yīng)抖動(dòng)的技術(shù)的制作方法
【專利摘要】本發(fā)明公開了一種SPARC平臺(tái)減少中斷響應(yīng)抖動(dòng)的技術(shù),步驟如下:1)建立SPARC平臺(tái)原子交換函數(shù);2)實(shí)現(xiàn)內(nèi)核路徑上寫全局變量訪問操作的中斷響應(yīng)抖動(dòng)減少技術(shù);3)全局隊(duì)列訪問操作的中斷響應(yīng)抖動(dòng)減少技術(shù);4)全局堆棧訪問操作的中斷響應(yīng)抖動(dòng)減少技術(shù)。本發(fā)明可以保證對(duì)全局變量以及全局隊(duì)列、全局堆棧等數(shù)據(jù)結(jié)構(gòu)的讀寫訪問的一致性,而且所有臨界區(qū)都由7條SPARC平臺(tái)的匯編指令組成,關(guān)中斷的時(shí)間短且固定,能減少中斷響應(yīng)的抖動(dòng),并提高平均中斷響應(yīng)時(shí)間,減少外部中斷的丟失。
【專利說明】一種SPARC平臺(tái)減少中斷響應(yīng)抖動(dòng)的技術(shù)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于嵌入式實(shí)時(shí)操作系統(tǒng)領(lǐng)域,具體地說,涉及一種SPARC平臺(tái)減少中斷響應(yīng)抖動(dòng)的技術(shù)。
【背景技術(shù)】
[0002]SPARC是一種開源的RISC處理器架構(gòu)技術(shù),在國(guó)內(nèi)廣泛的應(yīng)用在航天領(lǐng)域。同時(shí),隨著航天任務(wù)的復(fù)雜化,嵌入式實(shí)時(shí)操作系統(tǒng)在航天領(lǐng)域的應(yīng)用也越來越廣泛。在嵌入式實(shí)時(shí)操作系統(tǒng)運(yùn)行過程中,有兩條最重要且執(zhí)行最頻繁的內(nèi)核路徑:任務(wù)切換路徑和中斷處理路徑。在這兩條路徑上有大量對(duì)全局變量及全局?jǐn)?shù)據(jù)結(jié)構(gòu)進(jìn)行讀寫的操作,為保證全局?jǐn)?shù)據(jù)的一致性,現(xiàn)有的嵌入式實(shí)時(shí)操作系統(tǒng)通常采用關(guān)中斷的方法確保多個(gè)任務(wù)對(duì)共享資源的互斥訪問。
[0003]現(xiàn)有技術(shù)存在的主要問題:
[0004]1、采用關(guān)中斷方法保護(hù)的臨界區(qū),通常是由C語(yǔ)言實(shí)現(xiàn)的對(duì)全局變量及全局?jǐn)?shù)據(jù)結(jié)構(gòu)進(jìn)行讀寫的操作,這些代碼長(zhǎng)短不一(如使用GCC3.4.4不做優(yōu)化,對(duì)代碼進(jìn)行編譯,對(duì)全局變量進(jìn)行寫的臨界區(qū)有10條匯編指令,隊(duì)列插入操作的臨界區(qū)有31條匯編指令,隊(duì)列刪除操作的臨界區(qū)有25條匯編指令),導(dǎo)致不同臨界區(qū)執(zhí)行時(shí)間不同。另外臨界區(qū)的代碼強(qiáng)烈依賴編譯器,不同編譯器或同一編譯器的不同配置,都有可能導(dǎo)致臨界區(qū)代碼執(zhí)行時(shí)間的變化(如使用GCC3.4.4 - 02級(jí)優(yōu)化對(duì)代碼進(jìn)行編譯,對(duì)全局變量進(jìn)行寫的臨界區(qū)有6條匯編指令,隊(duì)列插入操作的臨界區(qū)有15條匯編指令,隊(duì)列刪除操作的臨界區(qū)有17條匯編指令)。臨界區(qū)代碼的長(zhǎng)度不同,對(duì)中斷響應(yīng)的延遲也就不同,這會(huì)造成中斷響應(yīng)的延遲在不同的區(qū)間抖動(dòng),最終導(dǎo)致由中斷觸發(fā)的周期任務(wù)調(diào)度的抖動(dòng),這對(duì)實(shí)時(shí)性要求高的應(yīng)用(如運(yùn)動(dòng)控制)的穩(wěn)定性、可靠性都會(huì)造成負(fù)面影響。
[0005]2、另外如果關(guān)中斷的時(shí)間過長(zhǎng),會(huì)造成系統(tǒng)對(duì)外部事件反應(yīng)遲鈍,對(duì)多數(shù)實(shí)時(shí)系統(tǒng)而言,這會(huì)影響系統(tǒng)的中斷響應(yīng)時(shí)間,使得系統(tǒng)的實(shí)時(shí)性得不到保證;另外頻繁的關(guān)中斷可能變更整個(gè)系統(tǒng)的時(shí)序,帶來的副作用包括丟失外部事件和時(shí)鐘漂移。

【發(fā)明內(nèi)容】

[0006]本發(fā)明要解決的技術(shù)問題是克服上述缺陷,提供一種保證對(duì)全局變量以及全局隊(duì)列、全局堆棧等數(shù)據(jù)結(jié)構(gòu)的讀寫訪問的一致性,而且所有臨界區(qū)都由7條SPARC平臺(tái)的匯編指令組成,關(guān)中斷的時(shí)間短且固定,能減少中斷響應(yīng)的抖動(dòng),并提高平均中斷響應(yīng)時(shí)間,減少外部中斷的丟失的SPARC平臺(tái)減少中斷響應(yīng)抖動(dòng)的技術(shù)。
[0007]為解決上述問題,本發(fā)明所采用的技術(shù)方案是:
[0008]一種SPARC平臺(tái)減少中斷響應(yīng)抖動(dòng)的技術(shù),步驟如下:1)、建立SPARC平臺(tái)原子交換函數(shù);2)、實(shí)現(xiàn)內(nèi)核路徑上寫全局變量訪問操作的中斷響應(yīng)抖動(dòng)減少技術(shù);3)、全局隊(duì)列訪問操作的中斷響應(yīng)抖動(dòng)減少技術(shù);4 )、全局堆棧訪問操作的中斷響應(yīng)抖動(dòng)減少技術(shù)。
[0009]作為一種改進(jìn),所述建立SPARC平臺(tái)原子交換函數(shù)的算法如下:[0010]使用SPARC匯編指令實(shí)現(xiàn)了原子交換函數(shù),該函數(shù)共由7條指令組成,其原型如下:
[0011]int atomic_swap (int oldval, int*p_var, int newval)
[0012]返回值為int型,變量oldval存儲(chǔ)某一全局變量修改前的值,指針p_var指向該全局變量,而變量newval存儲(chǔ)將賦給該全局變量的值,返回O值表示用新值對(duì)全局變量原先的值進(jìn)行了替換,返回非O值,表示未用新值對(duì)全局變量原先的值進(jìn)行替換;所述原子交換函數(shù)的算法如下:
[0013]I)、快速關(guān)中斷;
[0014]2)、將oldval指向的地址處的值相減,將結(jié)果填入存放返回值的寄存器,如果為0,則繼續(xù)執(zhí)行第3步,如果不為0,則跳轉(zhuǎn)到第4步;
[0015]3)、將newval的值賦給p_var指向的地址;
[0016]4)、打開中斷,函數(shù)返回。
[0017]作為一種改進(jìn),所述實(shí)現(xiàn)內(nèi)核路徑上寫全局變量訪問操作的中斷響應(yīng)抖動(dòng)減少技術(shù)的函數(shù)原型如下:
[0018]void write_global(int*pglb, int new)
[0019]其中變量pglb指向要進(jìn)行寫操作的全局變量的地址,變量new指向?qū)⒁獙懭肴肿兞康闹?;所述?shí)現(xiàn)內(nèi)核路徑上寫全局變量訪問操作的中斷響應(yīng)抖動(dòng)減少技術(shù)算法如下:
[0020]I)、取出指針pglb指向的全局變量的值,賦給臨時(shí)變量temp ;
[0021]2)、調(diào)用原子交換函數(shù),格式為 atomic_swap(temp, pglb, new);
[0022]3)、如果原子交換函數(shù)返回值不為0,則調(diào)轉(zhuǎn)到第I步;如果返回值為0,則函數(shù)退出。
[0023]作為一種改進(jìn),所述全局隊(duì)列訪問操作的中斷響應(yīng)抖動(dòng)減少技術(shù)首先是插入節(jié)點(diǎn)操作,其函數(shù)原型如下:
[0024]void insert_queue(Node*pnew_node, const int&data, Queue*pqueue)
[0025]隊(duì)列是先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),插入操作總是在隊(duì)列尾進(jìn)行,所以第一個(gè)參數(shù)給出了將插入節(jié)點(diǎn)的指針,第二個(gè)參數(shù)給出了新節(jié)點(diǎn)中存儲(chǔ)的數(shù)據(jù),第三個(gè)參數(shù)是隊(duì)列指針;
[0026]所述全局隊(duì)列訪問操作的中斷響應(yīng)抖動(dòng)減少技術(shù)算法如下:
[0027]I)、將新節(jié)點(diǎn)數(shù)據(jù)域賦值為data,指針域賦值為null ;
[0028]2)、將當(dāng)前隊(duì)尾節(jié)點(diǎn)賦值給臨時(shí)變量old_tail,并將old_tail指針域指向新創(chuàng)建的節(jié)點(diǎn);
[0029]3)、調(diào)用原子交換函數(shù),格式為 atomic_swap (old_tail, &(pqueue_>tail), pnew_node);
[0030]4)、如果原子交換函數(shù)返回值不為0,則跳轉(zhuǎn)到第2步;如果返回值為0,則函數(shù)退出。
[0031]隊(duì)列的刪除操作在隊(duì)列頭進(jìn)行,其函數(shù)原型如下:
[0032]Node*delete_queue(Queue^pqueue)
[0033]其中變量pqueue為指向隊(duì)列的指針;
[0034]其隊(duì)列的刪除操作算法如下:
[0035]I)、取出當(dāng)前隊(duì)列的頭指針,賦值給臨時(shí)變量old_head ;[0036]2)、將old_head的指針域賦給臨時(shí)變量pnext ;
[0037]3)、調(diào)用原子交換函數(shù),格式為 atomic_swap (old_head,&(pqueue_>head),pnext);
[0038]4)、如果原子交換函數(shù)返回值不為0,則跳轉(zhuǎn)到第I步;如果返回值為0,則返回old_head,函數(shù)退出。
[0039]作為一種改進(jìn),所述全局堆棧訪問操作的中斷響應(yīng)抖動(dòng)減少技術(shù),其原型為:
[0040]void push (Node氺pnode, const int&data, stack氺pstack)
[0041]第一個(gè)參數(shù)是指向?qū)⒉迦氲墓?jié)點(diǎn)的指針,第二個(gè)參數(shù)data為待壓入節(jié)點(diǎn)數(shù)據(jù)域存儲(chǔ)的數(shù)據(jù),第三個(gè)參數(shù)為指向棧的指針;
[0042]所述全局堆棧訪問操作的中斷響應(yīng)抖動(dòng)減少技術(shù)的算法如下:
[0043]I)、將pnode數(shù)據(jù)域賦值為data ;
[0044]2)、用臨時(shí)變量old_top記錄當(dāng)前棧頂節(jié)點(diǎn)的指針;
[0045]3)、pnode 的指針域指向 old_top ;
[0046]4)、調(diào)用原子交換函數(shù),其格式為 atomic_swap (old_top,&(pstack_>top),pnode);
[0047]5)、如果原子交換函數(shù)返回值不為0,則跳轉(zhuǎn)到第I步;如果返回值為0,則函數(shù)退出;
[0048]出棧操作的原型如下:
[0049]Node*pop(stack*pstack)
[0050]唯一的一個(gè)參數(shù)為指向棧的指針,出棧操作的算法如下:
[0051]I)、用臨時(shí)變量old_top記錄當(dāng)前棧頂指針;
[0052]2)、將old_top的指針域賦值給臨時(shí)變量pnode ;
[0053]3)、調(diào)用原子交換函數(shù),其格式為 atomic_swap (old_top, pstack->top,pnode);
[0054]4)、如果原子交換函數(shù)返回值不為0,則跳轉(zhuǎn)到第I步;如果返回值為0,則返回old_top,函數(shù)退出。
[0055]由于采用了上述技術(shù)方案,與現(xiàn)有技術(shù)相比,本發(fā)明可以保證對(duì)全局變量以及全局隊(duì)列、全局堆棧等數(shù)據(jù)結(jié)構(gòu)的讀寫訪問的一致性,而且所有臨界區(qū)都由7條SPARC平臺(tái)的匯編指令組成,關(guān)中斷的時(shí)間短且固定,能減少中斷響應(yīng)的抖動(dòng),并提高平均中斷響應(yīng)時(shí)間,減少外部中斷的丟失。另外,由于臨界區(qū)是由匯編指令組成,可以排除編譯器導(dǎo)致的臨界區(qū)執(zhí)行時(shí)間的變化。
【專利附圖】

【附圖說明】
[0056]圖1為本發(fā)明一種實(shí)施例的中斷響應(yīng)抖動(dòng)效果圖;
[0057]圖2為本發(fā)明一種實(shí)施例的原子交換函數(shù)算法流程圖;
[0058]圖3為本發(fā)明一種實(shí)施例的全局變量寫操作算法流程圖;
[0059]圖4為本發(fā)明一種實(shí)施例的隊(duì)列訪問操作算法流程圖;
[0060]圖5為本發(fā)明一種實(shí)施例的隊(duì)列刪除操作算法流程圖;
[0061]圖6為本發(fā)明一種實(shí)施例的壓棧操作算法流程圖;
[0062]圖7為本發(fā)明一種實(shí)施例的壓棧操作算法流程圖。
【具體實(shí)施方式】[0063]實(shí)施例:
[0064]如圖1所示,一種SPARC平臺(tái)減少中斷響應(yīng)抖動(dòng)的技術(shù),步驟如下:1)、建立SPARC平臺(tái)原子交換函數(shù);2)、實(shí)現(xiàn)內(nèi)核路徑上寫全局變量訪問操作的中斷響應(yīng)抖動(dòng)減少技術(shù);3)、全局隊(duì)列訪問操作的中斷響應(yīng)抖動(dòng)減少技術(shù);4)、全局堆棧訪問操作的中斷響應(yīng)抖動(dòng)減少技術(shù)。
[0065]在本實(shí)施例中,所述建立SPARC平臺(tái)原子交換函數(shù)的算法如下:
[0066]使用SPARC匯編指令實(shí)現(xiàn)了原子交換函數(shù),該函數(shù)共由7條指令組成,其原型如下:
[0067]int atomic_swap (int oldval, int*p_var, int newval)
[0068]返回值為int型,變量oldval存儲(chǔ)某一全局變量修改前的值,指針p_var指向該全局變量,而變量newval存儲(chǔ)將賦給該全局變量的值,返回O值表示用新值對(duì)全局變量原先的值進(jìn)行了替換,返回非O值,表示未用新值對(duì)全局變量原先的值進(jìn)行替換。
[0069]如圖2所示,所述原子交換函數(shù)的算法如下:
[0070]I)、快速關(guān)中斷;
[0071]2)、將oldval指向的地址處的值相減,將結(jié)果填入存放返回值的寄存器,如果為0,則繼續(xù)執(zhí)行第3步,如果不為0,則跳轉(zhuǎn)到第4步;
[0072]3)、將newval的值賦給p_var指向的地址;
[0073]4)、打開中斷,函數(shù)返回。
[0074]在本實(shí)施例中,所述實(shí)現(xiàn)內(nèi)核路徑上寫全局變量訪問操作的中斷響應(yīng)抖動(dòng)減少技術(shù)的函數(shù)原型如下:
[0075]void write_global(int*pglb, int new)
[0076]其中變量pglb指向要進(jìn)行寫操作的全局變量的地址,變量new指向?qū)⒁獙懭肴肿兞康闹怠?br> [0077]如圖3所示,實(shí)現(xiàn)內(nèi)核路徑上寫全局變量訪問操作的中斷響應(yīng)抖動(dòng)減少技術(shù)算法如下:
[0078]I)、取出指針pglb指向的全局變量的值,賦給臨時(shí)變量temp ;
[0079]2)、調(diào)用原子交換函數(shù),格式為 atomic_swap(temp, pglb, new);
[0080]3)、如果原子交換函數(shù)返回值不為0,則調(diào)轉(zhuǎn)到第I步;如果返回值為0,則函數(shù)退出。
[0081]在本實(shí)施例中,所述全局隊(duì)列訪問操作的中斷響應(yīng)抖動(dòng)減少技術(shù)首先是插入節(jié)點(diǎn)操作,其函數(shù)原型如下:
[0082]void insert_queue(Node*pnew_node, const int&data, Queue*pqueue)
[0083]隊(duì)列是先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),插入操作總是在隊(duì)列尾進(jìn)行,所以第一個(gè)參數(shù)給出了將插入節(jié)點(diǎn)的指針,第二個(gè)參數(shù)給出了新節(jié)點(diǎn)中存儲(chǔ)的數(shù)據(jù),第三個(gè)參數(shù)是隊(duì)列指針;
[0084]如圖4所示,所述全局隊(duì)列訪問操作的中斷響應(yīng)抖動(dòng)減少技術(shù)算法如下:
[0085]I)、將新節(jié)點(diǎn)數(shù)據(jù)域賦值為data,指針域賦值為null ;
[0086]2)、將當(dāng)前隊(duì)尾節(jié)點(diǎn)賦值給臨時(shí)變量old_tail,并將old_tail指針域指向新創(chuàng)建的節(jié)點(diǎn);
[0087]3)、調(diào)用原子交換函數(shù),格式為 atomic_swap (old_tail, &(pqueue_>tail), pnew_node);
[0088]4)、如果原子交換函數(shù)返回值不為0,則跳轉(zhuǎn)到第2步;如果返回值為0,則函數(shù)退出。
[0089]隊(duì)列的刪除操作在隊(duì)列頭進(jìn)行,其函數(shù)原型如下:
[0090]Node*delete_queue(Queue^pqueue)
[0091]其中變量pqueue為指向隊(duì)列的指針;
[0092]如圖5所示,其隊(duì)列的刪除操作算法如下:
[0093]I)、取出當(dāng)前隊(duì)列的頭指針,賦值給臨時(shí)變量old_head ;
[0094]2)、將old_head的指針域賦給臨時(shí)變量pnext ;
[0095]3)、調(diào)用原子交換函數(shù),格式為 atomic_swap (old_head,&(pqueue_>head),pnext);
[0096]4)、如果原子交換函數(shù)返回值不為0,則跳轉(zhuǎn)到第I步;如果返回值為0,則返回old_head,函數(shù)退出。
[0097]在本實(shí)施例中, 所述全局堆棧訪問操作的中斷響應(yīng)抖動(dòng)減少技術(shù),其原型為:
[0098]void push (Node氺pnode, const int&data, stack氺pstack)
[0099]第一個(gè)參數(shù)是指向?qū)⒉迦氲墓?jié)點(diǎn)的指針,第二個(gè)參數(shù)data為待壓入節(jié)點(diǎn)數(shù)據(jù)域存儲(chǔ)的數(shù)據(jù),第三個(gè)參數(shù)為指向棧的指針;
[0100]如圖6所示,所述全局堆棧訪問操作的中斷響應(yīng)抖動(dòng)減少技術(shù)的算法如下:
[0101]I)、將pnode數(shù)據(jù)域賦值為data ;
[0102]2)、用臨時(shí)變量old_top記錄當(dāng)前棧頂節(jié)點(diǎn)的指針;
[0103]3)、pnode 的指針域指向 old_top ;
[0104]4)、調(diào)用原子交換函數(shù),其格式為 atomic_swap (old_top,&(pstack_>top),pnode);
[0105]5)、如果原子交換函數(shù)返回值不為0,則跳轉(zhuǎn)到第I步;如果返回值為0,則函數(shù)退出;
[0106]出棧操作的原型如下:
[0107]Node*pop(stack*pstack)
[0108]唯一的一個(gè)參數(shù)為指向棧的指針,如圖7所示,出棧操作的算法如下:
[0109]I)、用臨時(shí)變量old_top記錄當(dāng)前棧頂指針;
[0110]2)、將old_top的指針域賦值給臨時(shí)變量pnode ;
[0111]3)、調(diào)用原子交換函數(shù),其格式為 atomic_swap (old_top, pstack->top,pnode);
[0112]4)、如果原子交換函數(shù)返回值不為0,則跳轉(zhuǎn)到第I步;如果返回值為0,則返回old_top,函數(shù)退出。
[0113]本發(fā)明可以保證對(duì)全局變量以及全局隊(duì)列、全局堆棧等數(shù)據(jù)結(jié)構(gòu)的讀寫訪問的一致性,而且所有臨界區(qū)都由7條SPARC平臺(tái)的匯編指令組成,關(guān)中斷的時(shí)間短且固定,能減少中斷響應(yīng)的抖動(dòng),并提高平均中斷響應(yīng)時(shí)間,減少外部中斷的丟失。另外,由于臨界區(qū)是由匯編指令組成,可以排除編譯器導(dǎo)致的臨界區(qū)執(zhí)行時(shí)間的變化。
[0114]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種SPARC平臺(tái)減少中斷響應(yīng)抖動(dòng)的技術(shù),其特征在于: 步驟如下: 1)、建立SPARC平臺(tái)原子交換函數(shù); 2)、實(shí)現(xiàn)內(nèi)核路徑上寫全局變量訪問操作的中斷響應(yīng)抖動(dòng)減少技術(shù); 3)、全局隊(duì)列訪問操作的中斷響應(yīng)抖動(dòng)減少技術(shù); 4)、全局堆棧訪問操作的中斷響應(yīng)抖動(dòng)減少技術(shù)。
2.根據(jù)權(quán)利要求1中所述的SPARC平臺(tái)減少中斷響應(yīng)抖動(dòng)的技術(shù),其特征在于:所述建立SPARC平臺(tái)原子交換函數(shù)的算法如下: 使用SPARC匯編指令實(shí)現(xiàn)了原子交換函數(shù),該函數(shù)共由7條指令組成,其原型如下: int atomic_swap(int oldval, int*p_var, int newval) 返回值為int型,變量oldval存儲(chǔ)某一全局變量修改前的值,指針p_var指向該全局變量,而變量newval存儲(chǔ)將賦給該全局變量的值,返回O值表示用新值對(duì)全局變量原先的值進(jìn)行了替換,返回非O值,表示未用新值對(duì)全局變量原先的值進(jìn)行替換;所述原子交換函數(shù)的算法如下: 1)、快速關(guān)中斷; 2)、將oldval和p_var指向的地址處的值相減,將結(jié)果填入存放返回值的寄存器,如果為0,則繼續(xù)執(zhí)行第3步,如果不為0,則跳轉(zhuǎn)到第4步; 3)、將newval的值賦給p_var指向的地址; 4)、打開中斷,函數(shù)返回。
3.根據(jù)權(quán)利要求1中所述的SPARC平臺(tái)減少中斷響應(yīng)抖動(dòng)的技術(shù),其特征在于:所述實(shí)現(xiàn)內(nèi)核路徑上寫全局變量訪問操作的中斷響應(yīng)抖動(dòng)減少技術(shù)的函數(shù)原型如下:
void write_global(int*pglb, int new) 其中變量Pglb指向要進(jìn)行寫操作的全局變量的地址,變量new指向?qū)⒁獙懭肴肿兞康闹?;所述?shí)現(xiàn)內(nèi)核路徑上寫全局變量訪問操作的中斷響應(yīng)抖動(dòng)減少技術(shù)算法如下: 1)、取出指針pglb指向的全局變量的值,賦給臨時(shí)變量temp; 2)、調(diào)用原子交換函數(shù),格式為atomic_swap(temp, pglb, new); 3)、如果原子交換函數(shù)返回值不為0,則調(diào)轉(zhuǎn)到第I步;如果返回值為0,則函數(shù)退出。
4.根據(jù)權(quán)利要求3中所述的SPARC平臺(tái)減少中斷響應(yīng)抖動(dòng)的技術(shù),其特征在于:所述全局隊(duì)列訪問操作的中斷響應(yīng)抖動(dòng)減少技術(shù)首先是插入節(jié)點(diǎn)操作,其函數(shù)原型如下:
void insert_queue(Node*pnew_node, const int&data, Queue*pqueue) 隊(duì)列是先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),插入操作總是在隊(duì)列尾進(jìn)行,所以第一個(gè)參數(shù)給出了將插入節(jié)點(diǎn)的指針,第二個(gè)參數(shù)給出了新節(jié)點(diǎn)中存儲(chǔ)的數(shù)據(jù),第三個(gè)參數(shù)是隊(duì)列指針; 所述全局隊(duì)列訪問操作的中斷響應(yīng)抖動(dòng)減少技術(shù)算法如下: 1)、將新節(jié)點(diǎn)數(shù)據(jù)域賦值為data,指針域賦值為null; 2)、將當(dāng)前隊(duì)尾節(jié)點(diǎn)賦值給臨時(shí)變量old_tail,并將old_tail指針域指向新創(chuàng)建的節(jié)占.3)、調(diào)用原子交換 函數(shù),格式為atomic—swap (old—tail,&(pqueue_>tail),pnew_node); 4)、如果原子交換函數(shù)返回值不為0,則跳轉(zhuǎn)到第2步;如果返回值為0,則函數(shù)退出。隊(duì)列的刪除操作在隊(duì)列頭進(jìn)行,其函數(shù)原型如下:
Node氺delete—queue(Queue^pqueue) 其中變量pqueue為指向隊(duì)列的指針; 其隊(duì)列的刪除操作算法如下: 1)、取出當(dāng)前隊(duì)列的頭指針,賦值給臨時(shí)變量old_head; 2)、將old_head的指針域賦給臨時(shí)變量pnext; 3)、調(diào)用原子交換函數(shù),格式為atomic_swap (old_head,&(pqueue_>head),pnext); 4)、如果原子交換函數(shù)返回值不為0,則跳轉(zhuǎn)到第I步;如果返回值為0,則返回old_head,函數(shù)退出。
5.根據(jù)權(quán)利要求4中所述的SPARC平臺(tái)減少中斷響應(yīng)抖動(dòng)的技術(shù),其特征在于:所述全局堆棧訪問操作的中斷響應(yīng)抖動(dòng)減少技術(shù),其原型為:
void push (Node*pnode, const int&data, stack氺pstack) 第一個(gè)參數(shù)是指向?qū)⒉迦氲墓?jié)點(diǎn)的指針,第二個(gè)參數(shù)data為待壓入節(jié)點(diǎn)數(shù)據(jù)域存儲(chǔ)的數(shù)據(jù),第三個(gè)參數(shù)為 指向棧的指針; 所述全局堆棧訪問操作的中斷響應(yīng)抖動(dòng)減少技術(shù)的算法如下: 1)、將pnode數(shù)據(jù)域賦值為data; 2)、用臨時(shí)變量old_top記錄當(dāng)前棧頂節(jié)點(diǎn)的指針; 3)、pnode的指針域指向old_top; 4)、調(diào)用原子交換函數(shù),其格式為atomic_swap (old_top, &(pstack_>top),pnode); 5)、如果原子交換函數(shù)返回值不為0,則跳轉(zhuǎn)到第I步;如果返回值為0,則函數(shù)退出; 出棧操作的原型如下:
Node氺pop(stack氺pstack) 唯一的一個(gè)參數(shù)為指向棧的指針,出棧操作的算法如下: 1)、用臨時(shí)變量old_top記錄當(dāng)前棧頂指針; 2)、將old_top的指針域賦值給臨時(shí)變量pnode; 3)、調(diào)用原子交換函數(shù),其格式為atomic_swap (old_top, pstack->top,pnode); 4)、如果原子交換函數(shù)返回值不為0,則跳轉(zhuǎn)到第I步;如果返回值為0,則返回old_top,函數(shù)退出。
【文檔編號(hào)】G06F9/44GK103984537SQ201410060974
【公開日】2014年8月13日 申請(qǐng)日期:2014年2月21日 優(yōu)先權(quán)日:2014年2月21日
【發(fā)明者】卓保特, 周啟平, 呂紫旭, 趙英輝 申請(qǐng)人:北京神舟航天軟件技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1