專利名稱:從協(xié)同例程環(huán)境執(zhí)行事件驅(qū)動(dòng)環(huán)境中函數(shù)的裝置、系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及執(zhí)行函數(shù),更確切地說(shuō),涉及從協(xié)同例程環(huán)境上下文 執(zhí)行事件驅(qū)動(dòng)環(huán)境中的若干函數(shù)。
背景技術(shù):
典型情況下,軟件過程設(shè)計(jì)為在特定的操作環(huán)境中運(yùn)行。例如,許多軟件過程都設(shè)計(jì)為在完成后返回(ROC)環(huán)境中運(yùn)行。在ROC 環(huán)境中,第一軟件過程可以調(diào)用或啟動(dòng)第二軟件過程的執(zhí)行。第一軟 件過程的上下文狀態(tài)被保存到堆棧,其中以后進(jìn)先出體制存儲(chǔ)上下文 狀態(tài)。在第二軟件過程執(zhí)行完成后,才從所述堆棧檢索第一軟件過程 的上下文狀態(tài)。第一軟件過程恢復(fù)執(zhí)行。軟件過程也可以在替代環(huán)境中執(zhí)行。例如,軟件過程可以在事件 驅(qū)動(dòng)環(huán)境中執(zhí)行,它也可以稱為實(shí)時(shí)環(huán)境。在事件驅(qū)動(dòng)環(huán)境中, 一個(gè) 軟件過程與另 一個(gè)軟件過程交換。軟件過程之間的交換由執(zhí)行的軟件 過程啟動(dòng)和/或控制,不同于由中斷或操作系統(tǒng)干預(yù)啟動(dòng)的典型的外部控制交換。事件驅(qū)動(dòng)環(huán)境可以被配置為確保軟件過程的一部分在指定 的時(shí)間間隔內(nèi)執(zhí)行。在一個(gè)實(shí)施例中,第一軟件過程可以響應(yīng)任何中 斷而與第二軟件過程的上下文交換,而不是調(diào)用第二軟件過程。此外,軟件過程也可以設(shè)計(jì)為在協(xié)同例程環(huán)境中執(zhí)行。協(xié)同例程 環(huán)境可以包括小堆棧以及對(duì)訪問資源的若干限制。結(jié)果,在協(xié)同例程 環(huán)境中執(zhí)行的軟件過程可以更高效地利用計(jì)算系統(tǒng)的資源。協(xié)同例程 軟件過程也可以從第一軟件過程到第二軟件過程交換上下文,而無(wú)須 操作系統(tǒng)的干預(yù)。在本文中,在事件驅(qū)動(dòng)環(huán)境和/或協(xié)同例程環(huán)境中執(zhí) 行的軟件過程稱為上下文。某些數(shù)據(jù)處理設(shè)備可以并發(fā)地采用兩個(gè)或更多環(huán)境。例如,數(shù)據(jù) 處理設(shè)備可以既采用事件驅(qū)動(dòng)環(huán)境,又采用協(xié)同例程環(huán)境。在這樣的 設(shè)備中,協(xié)同例程環(huán)境上下文可能需要執(zhí)行被配置為在事件驅(qū)動(dòng)環(huán)境 中執(zhí)行的函數(shù)。遺憾的是,在事件驅(qū)動(dòng)環(huán)境中執(zhí)行該函數(shù)可能將軟件 執(zhí)行的線程過早地交換到事件驅(qū)動(dòng)環(huán)境,擾亂了原定的指令流。發(fā)明內(nèi)容根據(jù)以上討論,需要從協(xié)同例程環(huán)境執(zhí)行事件驅(qū)動(dòng)環(huán)境中函數(shù)的 裝置、系統(tǒng)和方法。有益的是,這樣的裝置、系統(tǒng)和方法會(huì)允許協(xié)同 例程環(huán)境軟件過程執(zhí)行事件驅(qū)動(dòng)環(huán)境的函數(shù)。針對(duì)本領(lǐng)域的當(dāng)前狀態(tài),尤其是針對(duì)本領(lǐng)域中執(zhí)行函數(shù)的現(xiàn)有方 法尚未完全解決的問題和需要,研究出本發(fā)明。所以,本發(fā)明的研究 是為了提供從協(xié)同例程環(huán)境執(zhí)行事件驅(qū)動(dòng)環(huán)境中函數(shù)的裝置、系統(tǒng)和 方法,它們克服了本領(lǐng)域中許多或全部以上討論的缺點(diǎn)。從協(xié)同例程環(huán)境執(zhí)行事件驅(qū)動(dòng)環(huán)境中函數(shù)的裝置配備為多個(gè)模塊,被配置為在功能上執(zhí)行以下步驟在橋接結(jié)構(gòu)中存儲(chǔ)代理函數(shù)指 針、在橋接指針寄存器中存儲(chǔ)所述橋接結(jié)構(gòu)的橋接指針、交換到事件 驅(qū)動(dòng)上下文、檢索所述代理指針以及執(zhí)行所述代理函數(shù)。所介紹實(shí)施 例中的這些模塊包括橋接模塊、交換上下文模塊和執(zhí)行模塊。此外, 所述裝置可以包括上下文結(jié)構(gòu)模塊。所述橋接模塊在橋接結(jié)構(gòu)中為協(xié)同例程環(huán)境中執(zhí)行的協(xié)同例程 上下文存儲(chǔ)代理函數(shù)的若干參數(shù)和代理函數(shù)指針。代理函數(shù)被配置為 在事件驅(qū)動(dòng)環(huán)境中執(zhí)行。所述橋接模塊還在事件驅(qū)動(dòng)上下文結(jié)構(gòu)的橋 接指針寄存器中存儲(chǔ)所述橋接結(jié)構(gòu)的橋接指針。所述事件驅(qū)動(dòng)上下文 結(jié)構(gòu)存儲(chǔ)被配置為在事件驅(qū)動(dòng)環(huán)境中執(zhí)行的事件驅(qū)動(dòng)上下文的事件驅(qū) 動(dòng)上下文狀態(tài)。所述交換上下文模塊交換到事件驅(qū)動(dòng)上下文。如果橋接指針寄存 器不為空,所述執(zhí)行模塊使用橋接指針從橋接結(jié)構(gòu)中檢索代理函數(shù)指 針,執(zhí)行所述代理函數(shù)并在橋接結(jié)構(gòu)中存儲(chǔ)所述代理函數(shù)的結(jié)果。所述交換上下文模塊進(jìn)一步交換到協(xié)同例程上下文。上下文結(jié)構(gòu) 模塊創(chuàng)建事件驅(qū)動(dòng)上下文結(jié)構(gòu)和協(xié)同例程上下文結(jié)構(gòu)。所述裝置從協(xié) 同例程環(huán)境執(zhí)行事件驅(qū)動(dòng)環(huán)境中的代理函數(shù),允許協(xié)同例程上下文采 用事件驅(qū)動(dòng)環(huán)境的函數(shù)。為了從協(xié)同例程環(huán)境執(zhí)行事件驅(qū)動(dòng)環(huán)境中的函數(shù),還提供了本發(fā) 明的系統(tǒng)。本系統(tǒng)可以實(shí)施在控制器中,比如釆用事件驅(qū)動(dòng)和協(xié)同例 程環(huán)境的存儲(chǔ)控制器。具體地說(shuō),在一個(gè)實(shí)施例中,本系統(tǒng)包括了處 理器模塊和存儲(chǔ)器模塊。所述處理器模塊執(zhí)行軟件過程,包括事件驅(qū)動(dòng)環(huán)境和協(xié)同例程環(huán) 境上下文。所述存儲(chǔ)器模塊存儲(chǔ)所述軟件過程。所述軟件過程包括上 下文結(jié)構(gòu)模塊、橋接模塊、交換上下文模塊和執(zhí)行模塊。所述上下文結(jié)構(gòu)模塊創(chuàng)建事件驅(qū)動(dòng)上下文結(jié)構(gòu)和協(xié)同例程上下 文結(jié)構(gòu)。所述橋接模塊在橋接結(jié)構(gòu)中存儲(chǔ)代理函數(shù)的若干參數(shù)和代理 函數(shù)指針。另外,所述橋接模塊還在所述事件驅(qū)動(dòng)上下文結(jié)構(gòu)的橋接 指針寄存器中存儲(chǔ)所述橋接結(jié)構(gòu)的橋接指針。所述交換上下文模塊交換到事件驅(qū)動(dòng)上下文。如果橋接指針寄存 器不為空,所述執(zhí)行模塊使用橋接指針從橋接結(jié)構(gòu)中檢索代理函數(shù)指 針,執(zhí)行所述代理函數(shù)并在橋接結(jié)構(gòu)中存儲(chǔ)所述代理函數(shù)的結(jié)果。所 述交換上下文模塊進(jìn)一步交換到協(xié)同例程上下文。所述系統(tǒng)為協(xié)同例 程環(huán)境中的協(xié)同例程上下文執(zhí)行而執(zhí)行事件驅(qū)動(dòng)環(huán)境中的代理函數(shù)。為了從協(xié)同例程環(huán)境執(zhí)行事件驅(qū)動(dòng)環(huán)境中的函數(shù),還提供了本發(fā) 明的方法。在公開實(shí)施例中的方法實(shí)質(zhì)上包括若干步驟,以實(shí)現(xiàn)以上 關(guān)于所介紹裝置和系統(tǒng)的操作而呈現(xiàn)的若干功能。在一個(gè)實(shí)施例中, 本方法包括在橋接結(jié)構(gòu)中存儲(chǔ)代理函數(shù)指針、在橋接指針寄存器中存 儲(chǔ)所述橋接結(jié)構(gòu)的橋接指針、交換到事件驅(qū)動(dòng)上下文、檢索所述代理 指針以及執(zhí)行所述代理函數(shù)。橋接模塊在協(xié)同例程環(huán)境中協(xié)同例程上下文執(zhí)行所用的橋接結(jié) 構(gòu)中存儲(chǔ)代理函數(shù)的若干參數(shù)和代理函數(shù)指針。代理函數(shù)被配置為在 事件驅(qū)動(dòng)環(huán)境中執(zhí)行。所述橋接模塊還在事件驅(qū)動(dòng)上下文結(jié)構(gòu)的橋接指針寄存器中存儲(chǔ)所述橋接結(jié)構(gòu)的橋接指針。所述事件驅(qū)動(dòng)上下文結(jié) 構(gòu)存儲(chǔ)被配置為在事件驅(qū)動(dòng)環(huán)境中執(zhí)行的事件驅(qū)動(dòng)上下文的事件驅(qū)動(dòng) 上下文狀態(tài)。交換上下文模塊交換到事件驅(qū)動(dòng)上下文。如果橋接指針寄存器不 為空,執(zhí)行模塊使用橋接指針從橋接結(jié)構(gòu)中檢索代理函數(shù)指針,執(zhí)行 所述代理函數(shù)并在橋接結(jié)構(gòu)中存儲(chǔ)所述代理函數(shù)的結(jié)果。所述交換上下文模塊進(jìn)一步交換到協(xié)同例程上下文。本方法從協(xié)同例程環(huán)境執(zhí)行 事件驅(qū)動(dòng)環(huán)境中的代理函數(shù)。貫穿本說(shuō)明書中對(duì)特征、優(yōu)點(diǎn)或類似語(yǔ)言的引用并不暗示以本發(fā) 明可以實(shí)現(xiàn)的全部特征和優(yōu)點(diǎn)都應(yīng)當(dāng)包括在本發(fā)明的任何單 一 實(shí)施例 中。相反,引用所述特征和優(yōu)點(diǎn)的語(yǔ)言應(yīng)當(dāng)理解為表明連同某實(shí)施例 介紹的具體特征、優(yōu)點(diǎn)或特點(diǎn)包括在本發(fā)明的至少一個(gè)實(shí)施例中。因 此,貫穿本說(shuō)明書中對(duì)特征和優(yōu)點(diǎn)以及類似語(yǔ)言的討論可以但是不一 定指同一實(shí)施例。不僅如此,所介紹的本發(fā)明的特征、優(yōu)點(diǎn)或特點(diǎn)在一個(gè)或多個(gè)實(shí) 施例中可以以任何適宜的方式進(jìn)行組合。相關(guān)領(lǐng)域的技術(shù)人員將認(rèn)識(shí) 到,沒有某具體實(shí)施例的一種或多種具體特征或優(yōu)點(diǎn),也可以實(shí)踐本 發(fā)明。在其他事例中,在某些實(shí)施例中可以實(shí)現(xiàn)的附加特點(diǎn)和優(yōu)點(diǎn)可 能不在本發(fā)明的全部實(shí)施例中出現(xiàn)。本發(fā)明的實(shí)施例從協(xié)同例程環(huán)境執(zhí)行事件驅(qū)動(dòng)環(huán)境中的函數(shù)。本 發(fā)明允許協(xié)同例程上下文采用為事件驅(qū)動(dòng)環(huán)境設(shè)計(jì)的若干函數(shù)。本發(fā) 明的這些特征和優(yōu)點(diǎn)從以下說(shuō)明和附帶的權(quán)利要求書中將變得更加完 全顯而易見,或者可以從后文闡述的本發(fā)明的實(shí)踐中學(xué)到。
為了便于理解本發(fā)明的優(yōu)點(diǎn),通過參考附圖中展示的若干特定實(shí) 施例,對(duì)以上簡(jiǎn)要介紹的本發(fā)明將呈現(xiàn)更加具體的說(shuō)明。理解了這些 附圖僅僅描繪了本發(fā)明的典型實(shí)施例,所以不應(yīng)當(dāng)視為對(duì)其范圍的限 制,將通過使用這些附圖,更加確切、詳細(xì)地介紹和講解本發(fā)明,其中圖l是示意框圖,展示了根據(jù)本發(fā)明在混合的事件驅(qū)動(dòng)和協(xié)同例程環(huán)境中上下文執(zhí)行的一個(gè)實(shí)施例;圖2是示意框圖,展示了本發(fā)明數(shù)據(jù)結(jié)構(gòu)的一個(gè)實(shí)施例; 圖3是示意框圖,展示了本發(fā)明橋接裝置的一個(gè)實(shí)施例; 圖4是示意框圖,展示了本發(fā)明存儲(chǔ)控制器的一個(gè)實(shí)施例; 圖5A、 5B和5C是示意流程圖,展示了本發(fā)明函數(shù)執(zhí)行方法的一個(gè)實(shí)施例。
具體實(shí)施方式
本說(shuō)明書中介紹的許多功能單元已經(jīng)被標(biāo)注為模塊,以便更加確 切地強(qiáng)調(diào)其實(shí)施獨(dú)立性。例如,模塊可以實(shí)施為硬件電路,包括定制 的VLSI電路或門陣列、成品半導(dǎo)體比如邏輯芯片、晶體管或者其他 分立元件。模塊也可以實(shí)施在可編程硬件器件中,比如現(xiàn)場(chǎng)可編程門 陣列、可編程陣列邏輯、可編程邏輯器件等。模塊也可以實(shí)施在由多種類型處理器執(zhí)行的軟件中。例如,可執(zhí) 行代碼的已識(shí)別模塊可以包括計(jì)算機(jī)指令的一個(gè)或多個(gè)物理或邏輯 塊,這些指令可以例如被組織為對(duì)象、過程或函數(shù)。不過,已識(shí)別模 塊的可執(zhí)行碼在物理上可以不必位于一起,而是可以由存儲(chǔ)在不同位 置中完全不同的指令所組成,當(dāng)將它們邏輯地接合在一起時(shí),組成所 述模塊并實(shí)現(xiàn)所述模塊所陳述的目的。實(shí)際上,可執(zhí)行代碼的模塊可以是單一指令,也可以是許多指令, 甚至可以分布在幾個(gè)不同的代碼段上、分布在不同的程序當(dāng)中并且橫 跨幾個(gè)存儲(chǔ)器器件。同樣,在本文中,操作數(shù)據(jù)可以在若干模塊內(nèi)標(biāo) 識(shí)和展示,并且可以以任何適宜的形式實(shí)施以及組織在任何適宜類型 的數(shù)據(jù)結(jié)構(gòu)內(nèi)。該操作數(shù)據(jù)可以被收集為單數(shù)據(jù)集,也可以分布在不 同位置上,包括不同的存儲(chǔ)設(shè)備上,并且至少可以至少部分地僅僅作 為系統(tǒng)或網(wǎng)絡(luò)上的電子信號(hào)存在。貫穿本說(shuō)明書引用的"一個(gè)實(shí)施例"、"某實(shí)施例"或類似的語(yǔ)言表明,連同該實(shí)施例介紹的具體特點(diǎn)、結(jié)構(gòu)或特征包括在本發(fā)明的 至少一個(gè)實(shí)施例中。因此,貫穿本說(shuō)明書的短語(yǔ)"在一個(gè)實(shí)施例中"、 "在某實(shí)施例中,,和類似語(yǔ)言的出現(xiàn),可以但是不一定都指同一實(shí)施 例。不僅如此,所介紹的本發(fā)明的特征、結(jié)構(gòu)或特點(diǎn)在一個(gè)或多個(gè)實(shí) 施例中可以以任何適宜的方式進(jìn)行組合。在以下說(shuō)明中,提供了眾多 的具體細(xì)節(jié),比如編程實(shí)例、軟件模塊、用戶選項(xiàng)、網(wǎng)絡(luò)事務(wù)處理、 數(shù)據(jù)庫(kù)查詢、數(shù)據(jù)庫(kù)結(jié)構(gòu)、硬件模塊、硬件電路、硬件芯片等,以便 提供對(duì)本發(fā)明實(shí)施例的徹底理解。不過,相關(guān)領(lǐng)域的技術(shù)人員將認(rèn)識(shí) 到,沒有一種和多種所述具體細(xì)節(jié),或者利用其他方法、組件、材料 等等也可以實(shí)踐本發(fā)明。在其他事例中,為了避免模糊本發(fā)明的若干 方面,沒有顯示或詳細(xì)地介紹眾所周知的結(jié)構(gòu)、材料和操作。圖l是示意框圖,展示了根據(jù)本發(fā)明在混合的事件驅(qū)動(dòng)和協(xié)同例程環(huán)境IOO中上下文執(zhí)行的一個(gè)實(shí)施例。環(huán)境IOO被描述為包括事件 驅(qū)動(dòng)環(huán)境115和協(xié)同例程環(huán)境125的邏輯空間。在本文中,邏輯空間 包括處理器寄存器值、可訪問的軟件過程服務(wù)和數(shù)據(jù)值等,它們可以 由執(zhí)行的軟件過程和/或上下文所采用。例如,堆棧和存儲(chǔ)分配過程就 是服務(wù)的范例,它們可用于環(huán)境100中的軟件過程和/或上下文。事件驅(qū)動(dòng)壞境115可以配置為執(zhí)行一個(gè)或多個(gè)事件驅(qū)動(dòng)上下文 105。每個(gè)事件驅(qū)動(dòng)上下文105都可以包括多條軟件指令,并且被配置 為加載被存儲(chǔ)的和/或被初始化的上下文狀態(tài),執(zhí)行所述軟件指令直到 被暫停以及存儲(chǔ)上下文狀態(tài)。事件驅(qū)動(dòng)上下文105啟動(dòng)和/或控制到隨 后上下文的交換。在一個(gè)實(shí)施例中,事件驅(qū)動(dòng)環(huán)境115配置為在指定 時(shí)間間隔內(nèi)執(zhí)行一個(gè)或多個(gè)事件驅(qū)動(dòng)上下文105的一部分。協(xié)同例程環(huán)境125配置為執(zhí)行一個(gè)或多個(gè)協(xié)同例程上下文110。 協(xié)同例程環(huán)境125可以包括協(xié)同例程堆棧所用的有限存儲(chǔ)空間,并且 限制協(xié)同例程上下文UO對(duì)資源的訪問。每個(gè)協(xié)同例程上下文110都 可以包括多條軟件指令。此外,每個(gè)協(xié)同例程上下文110都可以加載 被存儲(chǔ)的和/或被初始化的上下文狀態(tài),執(zhí)行所述軟件指令直到被暫停以及存儲(chǔ)上下文狀態(tài)。因此上下文的切換由所述協(xié)同例程上下文110啟動(dòng)和/或控制。所描述的實(shí)施例顯示了由數(shù)據(jù)處理器件比如后文將介紹的存儲(chǔ)控制器隨著時(shí)間流逝而執(zhí)行事件驅(qū)動(dòng)上下文105和協(xié)同例程上下文 110的范例。執(zhí)行開始于第一事件驅(qū)動(dòng)上下文105a。第一事件驅(qū)動(dòng)上 下文105a從第一事件驅(qū)動(dòng)上下文105a交換到第二事件驅(qū)動(dòng)上下文 105b。此外,第二事件驅(qū)動(dòng)上下文105b從第二事件驅(qū)動(dòng)上下文105b 和事件驅(qū)動(dòng)環(huán)境115交換到協(xié)同例程上下文110和協(xié)同例程環(huán)境125。上下文執(zhí)行的線程繼續(xù)從協(xié)同例程上下文110到第三事件驅(qū)動(dòng)上 下文105c到協(xié)同例程上下文110并且繼續(xù)到第四事件驅(qū)動(dòng)上下文 105d。上下文105、 IIO相繼交換到指定的上下文,而不是像ROC環(huán) 境中使用從軟件過程的調(diào)用和返回。結(jié)果,協(xié)同例程上下文110可能 無(wú)法執(zhí)行被配置在事件驅(qū)動(dòng)環(huán)境115中執(zhí)行的函數(shù),因?yàn)閳?zhí)行的線程 將不會(huì)返回到協(xié)同例程上下文110。本發(fā)明從協(xié)同例程環(huán)境125執(zhí)行 事件驅(qū)動(dòng)環(huán)境115中的事件驅(qū)動(dòng)函數(shù),允許協(xié)同例程上下文110采用 為事件驅(qū)動(dòng)環(huán)境115設(shè)計(jì)的若干函數(shù)。圖2是示意框圖,展示了本發(fā)明數(shù)據(jù)結(jié)構(gòu)200的一個(gè)實(shí)施例。數(shù) 據(jù)結(jié)構(gòu)200用于在圖1的事件驅(qū)動(dòng)環(huán)境115和協(xié)同例程環(huán)境125中運(yùn) 行的事件驅(qū)動(dòng)上下文105和協(xié)同例程上下文110。如圖所示,數(shù)據(jù)結(jié) 構(gòu)200包括代理函數(shù)205、控制塊210、橋接指針寄存器215、 一個(gè)或 多個(gè)上下文結(jié)構(gòu)220、事件驅(qū)動(dòng)堆棧225、橋接結(jié)構(gòu)230、協(xié)同例程堆 棧235、代理函數(shù)指針245和橋接指針250。數(shù)據(jù)結(jié)構(gòu)200的描述涉及 圖l的若干單元,相同的數(shù)字指相同的單元。數(shù)據(jù)結(jié)構(gòu)200通過在協(xié) 同例程環(huán)境125中運(yùn)行的協(xié)同例程上下文110支持在事件驅(qū)動(dòng)環(huán)境 115中代理函數(shù)205的執(zhí)行。在一個(gè)實(shí)施例中,代理函數(shù)205包括設(shè)計(jì)為在ROC環(huán)境中執(zhí)行 的若干軟件指令。 一條或多條軟件指令可以加入代理函數(shù)205,以便 允許代理函數(shù)205在事件驅(qū)動(dòng)環(huán)境115中執(zhí)行。在一個(gè)實(shí)施例中,代 理函數(shù)205被封裝在控制塊210中,其中控制塊210提供了代理函數(shù)205與事件驅(qū)動(dòng)環(huán)境115之間的接口 。代理函數(shù)指針245被配置作為代理函數(shù)205中指定軟件指令的地 址。該地址可以是后文將介紹的存儲(chǔ)器模塊地址。作為替代,該地址 也可以是后文將介紹的存儲(chǔ)設(shè)備地址。在一個(gè)實(shí)施例中,代理函數(shù)指 針245是控制塊210的地址。代理函數(shù)205可以通過以代理函數(shù)指針 245加載處理器模塊的指令指針而執(zhí)行。事件驅(qū)動(dòng)上下文結(jié)構(gòu)220a存儲(chǔ)事件驅(qū)動(dòng)上下文105的信息。例 如,事件驅(qū)動(dòng)上下文結(jié)構(gòu)220a可以存儲(chǔ)事件驅(qū)動(dòng)上下文105的上下文 狀態(tài),該上下文狀態(tài)包括一個(gè)或多個(gè)處理器寄存器值、處理器指令指 針值等的內(nèi)容。當(dāng)將上下文狀態(tài)復(fù)制到處理器的一個(gè)或多個(gè)寄存器時(shí), 該處理器就配置為執(zhí)行事件驅(qū)動(dòng)上下文105,如本領(lǐng)域技術(shù)人員所熟 知的那樣。事件驅(qū)動(dòng)上下文結(jié)構(gòu)220a包括橋接指針寄存器215。當(dāng)協(xié) 同例程上下文110交換到事件驅(qū)動(dòng)上下文105時(shí),橋接指針寄存器215 可以被設(shè)置為空值。不過,如將在后文中介紹,執(zhí)行代理函數(shù)205時(shí), 橋接指針寄存器215存儲(chǔ)橋接指針250。同樣,協(xié)同例程上下文結(jié)構(gòu)220b存儲(chǔ)協(xié)同例程上下文110的信 息。協(xié)同例程上下文結(jié)構(gòu)220b可以存儲(chǔ)協(xié)同例程上下文110的上下文 狀態(tài),以便將上下文狀態(tài)復(fù)制到處理器模塊的一個(gè)或多個(gè)寄存器時(shí), 該處理器模塊配置為執(zhí)行該協(xié)同例程驅(qū)動(dòng)上下文110。事件驅(qū)動(dòng)環(huán)境115使用事件驅(qū)動(dòng)堆棧225作為存儲(chǔ)器。在一個(gè)實(shí) 施例中,事件驅(qū)動(dòng)堆棧225被配置為本領(lǐng)域技術(shù)人員熟知的后進(jìn)先出 存儲(chǔ)器。事件驅(qū)動(dòng)上下文結(jié)構(gòu)220a可以保存到事件驅(qū)動(dòng)堆棧225,并 且可以從其檢索。協(xié)同例程環(huán)境125使用協(xié)同例程堆棧235作為存儲(chǔ)器。協(xié)同例程 堆棧235也可以配置為后進(jìn)先出存儲(chǔ)器。在一個(gè)實(shí)施例中,協(xié)同例程 上下文結(jié)構(gòu)220b保存到協(xié)同例程堆棧235中,并且從其檢索。在一個(gè) 實(shí)施例中,事件驅(qū)動(dòng)堆棧225和協(xié)同例程堆棧235被配置為單一堆棧。橋接結(jié)構(gòu)230用于存儲(chǔ)執(zhí)行代理函數(shù)205所用的數(shù)據(jù)。此外,橋 接結(jié)構(gòu)230還可以用于存儲(chǔ)執(zhí)行代理函數(shù)205的結(jié)果。例如,橋接結(jié)構(gòu)可以包括一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu),配置為存儲(chǔ)即刻復(fù)制操作的若干參數(shù)。橋接指針250可以包括橋接結(jié)構(gòu)230的地址。該地址可以是如后 文將介紹的存儲(chǔ)器模塊地址和/或存儲(chǔ)設(shè)備地址。圖3是示意框圖,展示了本發(fā)明橋接裝置300的一個(gè)實(shí)施例。裝 置300的描述涉及圖l和圖2的若干單元,相同的數(shù)字指相同的單元。 裝置300從在協(xié)同例程環(huán)境125中運(yùn)行的協(xié)同例程上下文110執(zhí)行事 件驅(qū)動(dòng)環(huán)境115中的代理函數(shù)205。如圖所示,裝置300包括橋接模 塊305、交換上下文模塊310、執(zhí)行模塊315和上下文結(jié)構(gòu)模塊320。橋接模塊305在協(xié)同例程環(huán)境125中執(zhí)行的協(xié)同例程上下文110 所用的橋接結(jié)構(gòu)230中存儲(chǔ)代理函數(shù)205的若干參數(shù)和代理函數(shù)指針 245。橋接模塊305還在事件驅(qū)動(dòng)上下文結(jié)構(gòu)220a的橋接指針寄存器 215中存儲(chǔ)橋接結(jié)構(gòu)230的橋接指針250。交換上下文模塊310從協(xié)同例程上下文110交換到事件驅(qū)動(dòng)上下 文105。例如,當(dāng)協(xié)同例程上下文IIO被掛起時(shí),交換上下文模塊310文狀態(tài),從事件驅(qū)動(dòng)上下文結(jié)構(gòu)220a中檢索事件驅(qū)動(dòng)上下文105的上 下文狀態(tài)并且執(zhí)行事件驅(qū)動(dòng)上下文105。同樣,交換上下文模塊310 也可以通過在事件驅(qū)動(dòng)上下文結(jié)構(gòu)220a中存儲(chǔ)事件驅(qū)動(dòng)上下文105 的上下文狀態(tài)、從協(xié)同例程上下文結(jié)構(gòu)220b中檢索協(xié)同例程上下文 110的上下文狀態(tài)并且執(zhí)行協(xié)同例程上下文IIO,從而從事件驅(qū)動(dòng)上下 文105交換到協(xié)同例程上下文110。如果橋接指針寄存器215存儲(chǔ)的不是空值,執(zhí)行模塊315就使用 橋接指針250從橋接結(jié)構(gòu)230中檢索代理函數(shù)指針245。在一個(gè)實(shí)施 例中,空值是二進(jìn)制零(0 )。執(zhí)行模塊315進(jìn)一步執(zhí)行代理函數(shù)205, 并且在橋接結(jié)構(gòu)230中存儲(chǔ)代理函數(shù)205的結(jié)果。裝置300從協(xié)同例 程環(huán)境125執(zhí)行事件驅(qū)動(dòng)環(huán)境115中的若干事件驅(qū)動(dòng)環(huán)境函數(shù),比如 代理函數(shù)205,從而允許協(xié)同例程上下文110采用事件驅(qū)動(dòng)環(huán)境的函 數(shù)。圖4是示意框圖,展示了本發(fā)明存儲(chǔ)控制器400的一個(gè)實(shí)施例??刂破?00的描述涉及圖l至圖3的若干單元,相同的數(shù)字指相同的 單元。控制器400包括處理器模塊405、存儲(chǔ)器模塊410、橋接模塊 415、網(wǎng)絡(luò)接口模塊420和存儲(chǔ)接口模塊425。控制器400也顯示為與 存儲(chǔ)服務(wù)器435和存儲(chǔ)設(shè)備440通訊。處理器模塊405、存儲(chǔ)器模塊410、橋接模塊415、網(wǎng)絡(luò)接口模塊 420和存儲(chǔ)接口模塊425可以由一片或多片半導(dǎo)體基片上的若干半導(dǎo) 體門制成。每片半導(dǎo)體基片都可以封裝在一個(gè)或多個(gè)半導(dǎo)體器件中, 它們都安裝在電路卡上。處理器模塊405、存儲(chǔ)器模塊410、橋接模塊 415、網(wǎng)絡(luò)接口模塊420和存儲(chǔ)接口模塊425之間的連接可以通過若干 半導(dǎo)體金屬層、基片與基片聯(lián)線、電路卡跡線和/或連接半導(dǎo)體器件的 若干聯(lián)線。存儲(chǔ)器模塊410存儲(chǔ)軟件指令和數(shù)據(jù)。處理器模塊405執(zhí)行所述 軟件指令并操作數(shù)據(jù),正如本領(lǐng)域技術(shù)人員所熟知。在一個(gè)實(shí)施例中, 存儲(chǔ)器模塊410存儲(chǔ)的和處理器模塊405執(zhí)行的軟件指令包括橋接模 塊305、交換上下文模塊310、執(zhí)行模塊315和上下文結(jié)構(gòu)模塊320。存儲(chǔ)器模塊410可以存儲(chǔ)軟件指令和數(shù)據(jù),包括在一個(gè)或多個(gè) 地址處的代理模塊205、控制塊210、上下文結(jié)構(gòu)220、事件驅(qū)動(dòng)堆棧 225、協(xié)同例程堆棧235、橋接結(jié)構(gòu)230、代理函數(shù)指針245和橋接指 針250。例如,存儲(chǔ)器模塊410可以在以第一地址開始的鄰接地址塊 處存儲(chǔ)代理模塊205。代理函數(shù)指針245可以存儲(chǔ)所述第一地址,正 如本領(lǐng)域技術(shù)人員所熟知。同樣,橋接結(jié)構(gòu)230可以占用以第二地址 開始的鄰接地址塊,而橋接指針250可以存儲(chǔ)所述第二地址。在替代 實(shí)施例中,代理函數(shù)205、控制塊210、上下文結(jié)構(gòu)220、事件驅(qū)動(dòng)堆 棧225、協(xié)同例程堆棧235、橋接結(jié)構(gòu)230、代理函數(shù)指針245和橋接 指針250位于存儲(chǔ)設(shè)備440上。在一個(gè)實(shí)施例中,控制器400將數(shù)據(jù)存儲(chǔ)到存儲(chǔ)服務(wù)器435的存 儲(chǔ)設(shè)備440??刂破?00還可以對(duì)存儲(chǔ)設(shè)備440中存儲(chǔ)的數(shù)據(jù)執(zhí)行若 干操作,比如即刻復(fù)制操作。雖然為了簡(jiǎn)單起見僅僅顯示了一臺(tái)存儲(chǔ) 設(shè)備440,但是可以釆用多臺(tái)存儲(chǔ)設(shè)備440。隨后的示意流程圖被一般地闡述為邏輯流程圖。因而,描述的次 序和標(biāo)注的步驟是本方法一個(gè)實(shí)施例的表達(dá)??梢詷?gòu)想出其他步驟和 方法,它們?cè)诠δ苌稀⑦壿嬌匣蛐Ч险叩刃в谒故痉椒ǖ囊粋€(gè)或 多個(gè)步驟或者其若干部分。另外,提供了采用的格式和若干符號(hào)以便 解釋本方法的邏輯步驟,并且應(yīng)當(dāng)理解它們不限制本方法的范圍。盡 管流程圖中可以采用多種箭頭類型和線條類型,但是應(yīng)當(dāng)理解它們不 限制對(duì)應(yīng)方法的范圍。實(shí)際上,某些箭頭或其他連接符可以用于僅僅 表明本方法的邏輯流程。例如,箭頭可以表明在所描述方法的若干枚 舉步驟之間未指定持續(xù)時(shí)間的等待或監(jiān)視階段。另外,具體方法出現(xiàn) 的次序可以嚴(yán)格堅(jiān)持、也可以不嚴(yán)格堅(jiān)持所顯示對(duì)應(yīng)步驟的次序。圖5A、 5B和5C是示意流程圖,展示了本發(fā)明函數(shù)執(zhí)行方法500 的一個(gè)實(shí)施例。方法500實(shí)質(zhì)上包括若干步驟,以實(shí)現(xiàn)以上關(guān)于圖1 至圖4所介紹的裝置和系統(tǒng)的操作所呈現(xiàn)的若干功能。方法500的描 述涉及圖1至圖4的若干單元,相同的數(shù)字指相同的單元。方法500 允許協(xié)同例程上下文110采用為事件驅(qū)動(dòng)環(huán)境115設(shè)計(jì)的若干函數(shù)。方法500的若干步驟被顯示為出現(xiàn)在事件驅(qū)動(dòng)環(huán)境115中或者出 現(xiàn)在協(xié)同例程環(huán)境125中。在一個(gè)實(shí)施例中,處理器模塊405采用了 若干寄存器值和可用的若干服務(wù),或者包含事件驅(qū)動(dòng)環(huán)境115或者包 含協(xié)同例程環(huán)境125。處理器模塊405還可以在事件驅(qū)動(dòng)環(huán)境115或 協(xié)同例程環(huán)境125中執(zhí)行比如橋接模塊305、交換上下文模塊310、執(zhí) 行模塊315和上下文結(jié)構(gòu)模塊320的若干軟件過程,以及執(zhí)行比如事 件驅(qū)動(dòng)上下文105和協(xié)同例程上下文110的若干上下文。處理器模塊 405不在事件驅(qū)動(dòng)環(huán)境115中和協(xié)同例程環(huán)境125中同時(shí)運(yùn)行。在一個(gè)實(shí)施例中,上下文結(jié)構(gòu)模塊320創(chuàng)建了 505事件驅(qū)動(dòng)上下 文結(jié)構(gòu)220a和協(xié)同例程上下文結(jié)構(gòu)220b,如圖5A所示。上下文結(jié)構(gòu) 模塊320可以根據(jù)需要?jiǎng)?chuàng)建505事件驅(qū)動(dòng)上下文結(jié)構(gòu)220a和協(xié)同例程 上下文結(jié)構(gòu)220b。作為替代,上下文結(jié)構(gòu)模塊320可以創(chuàng)建505所述 結(jié)構(gòu)作為初始化過程的一部分。上下文結(jié)構(gòu)模塊320還可以為指定上 下文105、 110用若干指針、參數(shù)等填充上下文結(jié)構(gòu)220。在某個(gè)實(shí)施例中,交換上下文模塊310為了恢復(fù)協(xié)同例程上下文 110的執(zhí)行而修改510協(xié)同例程上下文結(jié)構(gòu)220b。例如,交換上下文 模塊310可以為事件驅(qū)動(dòng)上下文105的(或者設(shè)計(jì)為當(dāng)協(xié)同例程上下 文110掛起執(zhí)行時(shí)恢復(fù)的另一個(gè)協(xié)同例程上下文的)上下文結(jié)構(gòu)220 存儲(chǔ)指針。交換上下文模塊310進(jìn)一步交換515到協(xié)同例程上下文110。在 一個(gè)實(shí)施例中,交換上下文模塊310通過將事件驅(qū)動(dòng)上下文105的上 下文狀態(tài)保存到事件驅(qū)動(dòng)上下文結(jié)構(gòu)220a中,并且從協(xié)同例程上下文 結(jié)構(gòu)220b加載協(xié)同例程上下文110的上下文狀態(tài),而交換515到協(xié)同 例程上下文。協(xié)同例程上下文狀態(tài)可以包括若干寄存器值、某指令指 針值等,當(dāng)將其加載到處理器模塊405上時(shí),允許處理器模塊405執(zhí) 行協(xié)同例程上下文110。執(zhí)行模塊315可以在協(xié)同例程環(huán)境125中執(zhí)行520協(xié)同例程上下 文110。例如,協(xié)同例程上下文110可以執(zhí)行一個(gè)或多個(gè)瞬間復(fù)制(flash copy)例程。在一個(gè)實(shí)施例中,執(zhí)行模塊315檢查事件驅(qū)動(dòng)堆棧225 和協(xié)同例程堆棧235以確定運(yùn)行環(huán)境。例如,執(zhí)行模塊315可以從堆 棧檢索上下文結(jié)構(gòu)220,比如事件驅(qū)動(dòng)堆棧225和/或協(xié)同例程堆棧 235。執(zhí)行模塊315通過檢查上下文結(jié)構(gòu)可以確定上下文結(jié)構(gòu)220是事 件驅(qū)動(dòng)上下文結(jié)構(gòu)220a還是協(xié)同例程上下文結(jié)構(gòu)220b。如果上下文 結(jié)構(gòu)220是事件驅(qū)動(dòng)上下文結(jié)構(gòu)220a,執(zhí)行模塊315就可以確定該運(yùn) 行環(huán)境是事件驅(qū)動(dòng)環(huán)境115,同樣如果上下文結(jié)構(gòu)220是協(xié)同例程上 下文結(jié)構(gòu)220b,執(zhí)行模塊315就可以確定該運(yùn)行環(huán)境是協(xié)同例程環(huán)境 125。當(dāng)協(xié)同例程上下文110必須執(zhí)行另一個(gè)例程時(shí),執(zhí)行模塊315判 斷525該例程是不是代理函數(shù)205,如果執(zhí)行模塊315判定525該例 程不是代理函數(shù)205,交換上下文模塊310就可以交換到它,執(zhí)行模 塊315執(zhí)行527協(xié)同例程上下文110的不同代碼。此外,交換上下文 模塊310可以交換585到事件驅(qū)動(dòng)上下文105、將協(xié)同例程上下文110 的上下文狀態(tài)保存到協(xié)同例程上下文結(jié)構(gòu)220b中,并且從事件驅(qū)動(dòng)上下文結(jié)構(gòu)220a加載事件驅(qū)動(dòng)上下文105的上下文狀態(tài),如圖5C所示。 方法500可以終止,盡管處理器模塊405可以繼續(xù)執(zhí)行一個(gè)或多個(gè)事 件驅(qū)動(dòng)上下文105以及一個(gè)或多個(gè)協(xié)同例程上下文110。如果執(zhí)行模塊315判定525該例程是代理函數(shù)205,橋接模塊305 就在橋接結(jié)構(gòu)230中為協(xié)同例程環(huán)境125中執(zhí)行的協(xié)同例程上下文 110存儲(chǔ)530用于代理函數(shù)205的若干參數(shù)和代理函數(shù)指針245。在一 個(gè)實(shí)施例中,橋接模塊305在存儲(chǔ)器模塊410中為橋接結(jié)構(gòu)230分配 存儲(chǔ)器地址。在某個(gè)實(shí)施例中,所述分配的地址包括代理函數(shù)205的 結(jié)果所用的存儲(chǔ)空間。代理函數(shù)205配置為在事件驅(qū)動(dòng)環(huán)境115中執(zhí)行。橋接模塊305 還在事件驅(qū)動(dòng)上下文結(jié)構(gòu)220a的橋接指針寄存器215中存儲(chǔ)535橋接 結(jié)構(gòu)230的橋接指針250。事件驅(qū)動(dòng)上下文結(jié)構(gòu)220a存儲(chǔ)事件驅(qū)動(dòng)上 下文105的事件驅(qū)動(dòng)上下文狀態(tài)。如圖5B所示,交換上下文模塊310交換540到事件驅(qū)動(dòng)上下文 105,將協(xié)同例程上下文110的上下文狀態(tài)保存到協(xié)同例程上下文結(jié)構(gòu) 220b中,并且從事件驅(qū)動(dòng)上下文結(jié)構(gòu)220a加載事件驅(qū)動(dòng)上下文105 的上下文狀態(tài)。過去,執(zhí)行模塊305會(huì)執(zhí)行事件驅(qū)動(dòng)上下文105。不 過,本發(fā)明支持在事件驅(qū)動(dòng)環(huán)境115中執(zhí)行代理函數(shù)205。在事件驅(qū)動(dòng)環(huán)境115中運(yùn)行的執(zhí)行模塊315判斷545橋接指針寄 存器215是否為空。如果橋接指針寄存器215非空,執(zhí)行模塊315就 使用橋接指針寄存器215的橋接指針250從橋接結(jié)構(gòu)230檢索550代 理函數(shù)指針245。例如,執(zhí)行模塊315可以檢索橋接指針250并使用 橋接指針250的地址檢索代理指針245。執(zhí)行模塊315可以通過對(duì)橋 接指針250增加指定的偏離并從結(jié)果地址檢索代理指針而檢索代理指 針245,正如本領(lǐng)域的技術(shù)人員所熟知。執(zhí)行模塊315執(zhí)行555事件驅(qū)動(dòng)環(huán)境115中的代理函數(shù)205。此 外,執(zhí)行模塊315可以在橋接結(jié)構(gòu)230中存儲(chǔ)560代理函,205的執(zhí) 行結(jié)果。例如,執(zhí)行模塊315可以在橋接模塊305分配的存儲(chǔ)空間中 存儲(chǔ)560代理函數(shù)205的結(jié)果。如圖5C所示,交換模塊310交換562到協(xié)同例程上下文110, 將事件驅(qū)動(dòng)上下文105的上下文狀態(tài)保存到事件驅(qū)動(dòng)上下文結(jié)構(gòu)220a 并從協(xié)同例程上下文結(jié)構(gòu)220b加載協(xié)同例程上下文110的上下文狀 態(tài)。在協(xié)同例程環(huán)境125中,協(xié)同例程上下文110從橋接結(jié)構(gòu)230檢 查541代理函數(shù)205的結(jié)果。因?yàn)閰f(xié)同例程上下文110可以訪問代理 函數(shù)205的結(jié)果,方法500終止,盡管處理器模塊405可以繼續(xù)執(zhí)行 協(xié)同例程上下文IIO、事件驅(qū)動(dòng)上下文105等。如果執(zhí)行模塊315判定545橋接指針寄存器215包含空值和/或 交換上下文模塊310交換585到事件驅(qū)動(dòng)上下文105,執(zhí)行模塊315 就在事件驅(qū)動(dòng)環(huán)境115中執(zhí)行565事件驅(qū)動(dòng)上下文105,方法500終 止。本發(fā)明的實(shí)施例從協(xié)同例程上下文110所用的協(xié)同例程驅(qū)動(dòng)環(huán)境 125執(zhí)行事件驅(qū)動(dòng)環(huán)境115中的代理函數(shù)205。本發(fā)明允許協(xié)同例程上 下文110釆用為事件驅(qū)動(dòng)環(huán)境115設(shè)計(jì)的函數(shù)。本發(fā)明可以以其他具體形式實(shí)施而不脫離其實(shí)質(zhì)和本質(zhì)特征。所 介紹的實(shí)施例在所有方面都僅僅被視為展示性的而不是限制性的。所 以,本發(fā)明的范圍由附帶的權(quán)利要求書而不是以上說(shuō)明指明。落入權(quán) 利要求書等效內(nèi)容的意義和范圍的全部改變都包含在其范圍之內(nèi)。
權(quán)利要求
1.一種從第二環(huán)境執(zhí)行第一環(huán)境中的函數(shù)的裝置,所述裝置包括橋接模塊,被配置為在所述第二環(huán)境中執(zhí)行的第二上下文所用的橋接結(jié)構(gòu)中存儲(chǔ)代理函數(shù)的參數(shù)和代理函數(shù)指針,所述代理函數(shù)被配置為在所述第一環(huán)境中執(zhí)行,并且在第一上下文結(jié)構(gòu)的橋接指針寄存器中存儲(chǔ)所述橋接結(jié)構(gòu)的橋接指針,所述第一上下文結(jié)構(gòu)存儲(chǔ)被配置為在所述第一環(huán)境中執(zhí)行的第一上下文的第一上下文狀態(tài);交換上下文模塊,被配置為交換到所述第一上下文;執(zhí)行模塊,被配置為如果所述橋接指針寄存器不為空,則使用所述橋接指針從所述橋接結(jié)構(gòu)中檢索所述代理函數(shù)指針,執(zhí)行所述代理函數(shù)并在所述橋接結(jié)構(gòu)中存儲(chǔ)所述代理函數(shù)的結(jié)果;以及所述交換上下文模塊進(jìn)一步被配置為交換到所述第二上下文。
2. 根據(jù)權(quán)利要求1的裝置,進(jìn)一步包括上下文結(jié)構(gòu)模塊,被配 置為創(chuàng)建所述第一上下文結(jié)構(gòu)和第二上下文結(jié)構(gòu)。
3. 根據(jù)權(quán)利要求2的裝置,其中,所述交換上下文模塊進(jìn)一步 被配置為在所述第二上下文結(jié)構(gòu)中保存所述第二上下文的第二上下文 狀態(tài)。
4. 根據(jù)權(quán)利要求3的裝置,其中,所述交換上下文模塊進(jìn)一步 被配置為使用所述第二上下文結(jié)構(gòu)交換到所述第二上下文。
5. 根據(jù)權(quán)利要求1的裝置,其中,所述執(zhí)行模塊進(jìn)一步被配置 為通過檢查堆棧而確定操作環(huán)境。
6. 根據(jù)權(quán)利要求1的裝置,其中,所述執(zhí)行模塊進(jìn)一步被配置 為在所述橋接結(jié)構(gòu)中存儲(chǔ)所迷代理函數(shù)的結(jié)果。
7. 根據(jù)權(quán)利要求1的裝置,其中,所述第一和第二上下文以及 所述代理函數(shù)被配置為完成后返回(ROC)函數(shù)。
8. —種從協(xié)同例程環(huán)境執(zhí)行事件驅(qū)動(dòng)環(huán)境中的函數(shù)的系統(tǒng),所 述系統(tǒng)包括處理器模塊,被配置為執(zhí)行軟件過程;存儲(chǔ)器模塊,被配置為存儲(chǔ)所述軟件過程,所述軟件過程包括 上下文結(jié)構(gòu)模塊,被配置為創(chuàng)建事件驅(qū)動(dòng)上下文結(jié)構(gòu)和協(xié) 同例程上下文結(jié)構(gòu);橋接模塊,被配置為在橋接結(jié)構(gòu)中為所述協(xié)同例程環(huán)境中 執(zhí)行的協(xié)同例程上下文存儲(chǔ)代理函數(shù)的參數(shù)和代理函數(shù)指針,所述代 理函數(shù)被配置為在所述事件驅(qū)動(dòng)環(huán)境中執(zhí)行,并且在事件驅(qū)動(dòng)上下文 結(jié)構(gòu)的橋接指針寄存器中存儲(chǔ)所述橋接結(jié)構(gòu)的橋接指針,所述事件驅(qū) 動(dòng)上下文結(jié)構(gòu)存儲(chǔ)被配置為在所述事件驅(qū)動(dòng)環(huán)境中執(zhí)行的事件驅(qū)動(dòng)上 下文的事件驅(qū)動(dòng)上下文狀態(tài);交換上下文模塊,被配置為交換到所述事件驅(qū)動(dòng)上下文; 執(zhí)行模塊,被配置為如果所述橋接指針寄存器不為空,則 使用所述橋接指針從所述橋接結(jié)構(gòu)中檢索所述代理函數(shù)指針,執(zhí)行所 述代理函數(shù)并在所述橋接結(jié)構(gòu)中存儲(chǔ)所述代理函數(shù)的結(jié)果;以及所述交換上下文模塊進(jìn)一步被配置為交換到所述協(xié)同例程上下文。
9. 根據(jù)權(quán)利要求8的系統(tǒng),其中,所述交換上下文模塊進(jìn)一步 被配置為在所述協(xié)同例程上下文結(jié)構(gòu)中保存所述協(xié)同例程上下文的協(xié) 同例程上下文狀態(tài),以及使用所述協(xié)同例程上下文結(jié)構(gòu)交換到所述協(xié) 同例程上下文。
10. 根據(jù)權(quán)利要求8的系統(tǒng),其中,所述執(zhí)行模塊進(jìn)一步被配置 為通過檢查堆棧而確定操作環(huán)境。
11. 根據(jù)權(quán)利要求8的系統(tǒng),其中,所述執(zhí)行模塊進(jìn)一步被配置 為在所述橋接結(jié)構(gòu)中存儲(chǔ)所述代理函數(shù)的結(jié)果。
12. 根據(jù)權(quán)利要求8的系統(tǒng),其中,所述第一和協(xié)同例程上下文 以及所述代理函數(shù)被配置為完成后返回(ROC)函數(shù)。
13. —種部署計(jì)算機(jī)基礎(chǔ)結(jié)構(gòu)的方法,包括將計(jì)算機(jī)可讀的代碼 集成在計(jì)算系統(tǒng)中,其中,所述代碼連同所述計(jì)算系統(tǒng)能夠執(zhí)行以下 功能創(chuàng)建事件驅(qū)動(dòng)上下文結(jié)構(gòu)和協(xié)同例程上下文結(jié)構(gòu); 在橋接結(jié)構(gòu)中存儲(chǔ)代理函數(shù)的參數(shù)和代理函數(shù)指針,同時(shí)在協(xié)同例程環(huán)境中執(zhí)行協(xié)同例程上下文,所述代理函數(shù)被配置為在事件驅(qū)動(dòng)中環(huán)境執(zhí)行;在事件驅(qū)動(dòng)上下文結(jié)構(gòu)的橋接指針寄存器中存儲(chǔ)所述橋接結(jié)構(gòu) 的橋接指針,所述事件驅(qū)動(dòng)上下文結(jié)構(gòu)存儲(chǔ)被配置為在所述事件驅(qū)動(dòng) 環(huán)境中執(zhí)行的事件驅(qū)動(dòng)上下文的事件驅(qū)動(dòng)上下文狀態(tài);交換到所述事件驅(qū)動(dòng)上下文;如果所述橋接指針寄存器不為空,則使用所述橋接指針從所述橋 接結(jié)構(gòu)中檢索所述代理函數(shù)指針; 執(zhí)行所述代理函數(shù);在所述橋接結(jié)構(gòu)中存儲(chǔ)所述代理函數(shù)的結(jié)果;以及 交換到所述協(xié)同例程上下文。
全文摘要
所公開的裝置、系統(tǒng)和方法用于執(zhí)行事件驅(qū)動(dòng)環(huán)境中的函數(shù)。橋接模塊在橋接結(jié)構(gòu)中為協(xié)同例程環(huán)境中執(zhí)行的協(xié)同例程上下文存儲(chǔ)代理函數(shù)的參數(shù)和代理函數(shù)指針。代理函數(shù)被配置為在事件驅(qū)動(dòng)環(huán)境中執(zhí)行。所述橋接模塊還在事件驅(qū)動(dòng)上下文結(jié)構(gòu)的橋接指針寄存器中存儲(chǔ)所述橋接結(jié)構(gòu)的橋接指針。交換上下文模塊交換到事件驅(qū)動(dòng)上下文。如果橋接指針寄存器不為空,執(zhí)行模塊使用橋接指針從橋接結(jié)構(gòu)中檢索代理函數(shù)指針,執(zhí)行所述代理函數(shù)并在橋接結(jié)構(gòu)中存儲(chǔ)所述代理函數(shù)的結(jié)果。
文檔編號(hào)G06F9/44GK101231588SQ20081000269
公開日2008年7月30日 申請(qǐng)日期2008年1月14日 優(yōu)先權(quán)日2007年1月23日
發(fā)明者埃迪·林, 肯尼思·F.·戴三世, 道格拉斯·W.·德威 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司