TWI603199B - 基於能力的裝置驅動程式架構 - Google Patents
基於能力的裝置驅動程式架構 Download PDFInfo
- Publication number
- TWI603199B TWI603199B TW102147994A TW102147994A TWI603199B TW I603199 B TWI603199 B TW I603199B TW 102147994 A TW102147994 A TW 102147994A TW 102147994 A TW102147994 A TW 102147994A TW I603199 B TWI603199 B TW I603199B
- Authority
- TW
- Taiwan
- Prior art keywords
- driver
- bus
- bus driver
- resources
- subset
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4403—Processor initialisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Bus Control (AREA)
Description
本發明係與基於能力的裝置驅動程式架構相關。
電腦及計算裝置已影響現代生活的幾乎每個方面。電腦一般參與了工作、消遣、醫療保健、交通、娛樂及家庭管理等。
通用目的之計算裝置可藉由使用被稱為裝置驅動程式之程式碼,以利用多個裝置。裝置驅動程式是作為將硬體或其他裝置接合至系統資源的方法,該系統資源如CPU暫存器、系統記憶體暫存器等。裝置驅動程式典型地於核心模式中執行,該核心模式為特權模式。特別的是,於核心模式下中,驅動程式程式碼可存取任何記憶體位址及可控制任何系統等級元件。因此,有缺陷的或惡意的驅動程式可容易危及計算系統的完整度,導致系統損壞(crash)或資料惡化。
因此,裝置驅動程式係不安全的。雖然物件導向設計方法、語言型別安全及靜態程式碼驗證找到他們自己的方式進入進階平台(例如,所謂的「雲端」)及開發環境,仍使用不安全的語言(例如,C/C++)開發裝置驅動程式,且仍使用無
型別、非物件導向及易出錯介面存取裝置驅動程式。大部分的裝置驅動程式仍在增加用於單一軟體臭蟲(bug)之潛力之核心模式中執行,導致系統失效。進一步地,因為在一些作業系統中,無法傳送硬體中斷至使用者模式處理程序,從而在實施於使用者模式中之任何驅動程式之範圍內,該等任何驅動程式現在無法被用於高吞吐量及低延遲裝置。在其他作業系統中,使用者模式驅動程式之效能顯著地較核心模式驅動程式效能差。
在許多常見的作業系統中,裝置驅動程式可透過錯誤或惡意,自由地嘗試映射及使用系統記憶體中的任何實體位址。因驅動程式軟體的特權特性,作業系統典型地無法確認下述事項:驅動程式無法分配不屬於該驅動程式之埠、中斷或其他介面、或驅動程式不需要埠、中斷或其他介面正常運作以控制特定的硬體裝置。舉例而言,鍵盤驅動程式應典型地存取IRQ 1,但不需要存取80埠。隨著存取80埠,惡意的鍵盤驅動程式可實施鍵盤側錄功能,該鍵盤側錄功能包括透過網路發送按鍵敲擊至流氓網站(rouge website)。此可危及系統安全。
本文所主張之申請標的並不限於解決任何缺失或僅能於如上所述環境中操作之實施例。更確切地說,僅提供此背景以說明一示例性技術領域,其中可實施一些本文所描述的實施例。
本文說明之一實施例係針對於用於執行在硬體驅動
程式上的限制之計算環境中實施之方法。該方法包括自系統核心,分配I/O資源至系統根匯流排。該方法更包括自根匯流排分配I/O資源之子集合至裝置匯流排。該分配I/O資源之子集合至裝置匯流排之步驟包括以下步驟:限制裝置匯流排僅能分配藉由根匯流排分配至該裝置匯流排自身之I/O資源。該方法包括自裝置匯流排透過裝置介面以分配I/O資源至裝置。
提供本發明內容以在一簡單形式中,介紹精選概念,該等精選概念會於以下細節描述中進一步地描述。本發明內容並不意欲識別所主張之申請標的之主要特徵或必要特徵,亦不意欲作為判定所主張之申請標的之範圍之幫助。
將於下列敘述闡述額外特徵及優勢,及部分之該額外特徵及優勢將自敘述變得顯而易見;或可藉本文之教示之實施得知該額外特徵及優勢。可藉由於附加之申請專利範圍中特定指出之手段及結合之方法,瞭解及得到本發明之特徵及優勢。本發明之特徵將自下列描述及附加之申請專利範圍變得完全地顯而易見;或可經由如後所述之發明實施得知該本發明之特徵。
102‧‧‧硬體裝置
104‧‧‧計算系統
106‧‧‧暫存器
108‧‧‧CPU
110‧‧‧共用記憶體
112‧‧‧系統記憶體
114‧‧‧驅動程式
115‧‧‧硬體介面層
115-1‧‧‧硬體裝置介面層
115-2‧‧‧硬體裝置介面層
115-n‧‧‧硬體裝置介面層
116‧‧‧機器可讀取硬體規範
118‧‧‧程式碼產生工具
120‧‧‧硬體-軟體介面處理器
122‧‧‧實體記憶體
202‧‧‧裝置
204‧‧‧集合
206‧‧‧暫存器
208‧‧‧I/O埠
210‧‧‧DMA緩衝器
212‧‧‧核心
214‧‧‧匯流排
302‧‧‧匯流排驅動程式
306‧‧‧隨插即用管理器函式庫
308‧‧‧匯流排插槽
310‧‧‧匯流排插槽介面
402‧‧‧使用者模式
404‧‧‧核心模式
406‧‧‧微核心
408‧‧‧域
410‧‧‧程序
412‧‧‧執行期間
414‧‧‧域核心
416‧‧‧I/O中斷管理器
418‧‧‧IRQ
500‧‧‧方法
502‧‧‧行為
504‧‧‧行為
506‧‧‧行為
600‧‧‧方法
602‧‧‧行為
604‧‧‧行為
606‧‧‧行為
700‧‧‧方法
702‧‧‧行為
704‧‧‧行為
為了描述可得到如上所述及其他優勢及特徵之方法,將藉由參考於附加圖式說明之特定實施例,呈現以上簡要描述之申請標的之更特定的描述。瞭解這些圖式僅描繪典型之實施例,因而不被認為限制範圍。將透過附加圖式之使用,以額外具體及細節描述及解釋實施例:第1圖圖示裝置硬體及自動裝置硬體抽象層介面之
產生;第2圖圖示階層式驅動程式之產生;第3圖圖示匯流排驅動程式架構;第4圖圖示驅動程式中斷及裝置通訊;第5圖圖示自動產生用於裝置驅動程式之程式碼之方法;第6圖圖示執行在硬體驅動程式上的限制之方法;及第7圖圖示實施安全驅動程式之方法,該安全驅動程式可支援高吞吐量及低延遲裝置。
本文所揭示之實施例可包括多個技術,該多個技術促進開發高效能使用者模式及用於所有類型裝置之型別安全驅動程式。驅動程式傳送可與存在於其他作業系統之傳統的核心模式裝置驅動程式相比擬之效能。
一些實施例可實施自動產生裝置驅動程式硬體抽象層。如第1圖圖示,硬體裝置102接合計算系統104,該計算系統104使用CPU 108中的暫存器106及系統記憶體112中的共用記憶體110。以靜態方式典型地建立硬體裝置,以接合暫存器106集合中之特定的暫存器及特定的記憶體互動。為確認系統104、暫存器106及共用記憶體110正確地接合至硬體裝置102,使用提供至/自系統硬體之映射至裝置硬體之驅動程式114。藉由使用製造商提供的文字規範,典型地手動開發驅動程式114。
硬體製造商典型地以自由形式之硬體規範描述硬體。驅動程式開發商使用這些規範以開發硬體存取層。如所述的,此層能使驅動程式與裝置暫存器及共用記憶體互動,如使用直接記憶體存取(DMA)。因取決於規範品質及開發者經驗,開發此層係乏味的及易出錯的。在大部分情況中,此層為作業系統相依,及此層無法被其他平台使用。
本文之一些實施例藉由實施用於將硬體存取層規範自其實施分離之硬體抽象機制,簡化驅動程式開發。可藉由裝置供應商提供機器可讀取硬體規範116。藉由程式碼產生工具118處理機器可讀取硬體規範。程式碼產生工具118具有用於一或更多個不同作業系統之作業系統內文,因而可藉由處理機器可讀取硬體規範116,自動新增硬體裝置介面層。因此,可再次利用機器可讀取硬體規範116,以新增用於多個不同作業系統及使用多種不同程式語言之硬體裝置介面層115-1、115-2至115-n。此架構大幅地簡化驅動程式開發及減少源於不正確的硬體存取所導致之錯誤量。可以如C#之簡單語言撰寫機器可讀取硬體規範116,及可經由檢驗簡單驗證該機器可讀取硬體規範116。
因此,開發商或硬體製造商可描述使用硬體-軟體介面語言之裝置102之硬體暫存器及(在主機記憶體之)共用記憶體架構。為此目的,開發商查閱文本硬體規範。注意的是,硬體工程師或硬體供應商亦可提供機器可讀取硬體規範116之硬體-軟體介面描述。特別的是,在定義使用硬體-軟體介面語言之機器可讀取硬體規範116之硬體描述階段中,驅動程
式開發商不需要參與。在第二階段,經由程式碼產生工具118處理硬體描述,該程式碼產生工具118包含硬體-軟體介面處理器120。
硬體-軟體介面處理器120可產生如下說明之多種軟體驅動程式模組。
硬體-軟體介面處理器120可產生用於讀取/寫入暫存器及解釋暫存器欄位之硬體存取方法。舉例而言,基於機器可讀取硬體規範116,程式碼產生工具118可判定暫存器116之集合中哪些暫存器係被用於與硬體裝置102通訊。可產生方法以存取這些暫存器;及可使用這些方法以提供軟體介面至希望控制硬體裝置102之應用程式中,以指示每一個暫存器之目的及每一個暫存器中之資料解釋。
硬體-軟體介面處理器120可產生用於讀取/寫入共用架構欄位之方法。舉例而言,基於機器可讀取硬體規範116,程式碼產生工具118可於驅動程式軟體模組中,識別將藉由硬體裝置102使用之部分的共用記憶體110。此允許軟體應用程式使用驅動程式114,以可與由硬體裝置102使用之部分的共用記憶體110通訊。
硬體-軟體介面處理器120可產生用於硬體介面實體之記憶體配置器,該硬體介面實體係在硬體-軟體介面描述中表示。舉例而言,基於機器可讀取硬體規範116,程式碼產生工具118知道什麼硬體介面包含於硬體裝置102中。可自動產生硬體介面層115,因而該硬體介面層115包括記憶體配置器,以於系統記憶體112中配置用於硬體介面之使用之記憶
體。
硬體-軟體介面處理器120可產生記錄檔模組,該記錄檔模組解釋及追蹤硬體介面實體。舉例而言,基於機器可讀取硬體規範116及關於硬體裝置102之硬體介面之知識,程式碼產生工具118可自動地產生硬體介面層115,以包括可使用硬體介面之模組,以收集及記錄資料(該資料記錄硬體裝置102之硬體行為)。
硬體-軟體介面處理器120可產生除錯器延伸,該除錯器延伸圖形化硬體介面實體。舉例而言,基於機器可讀取硬體規範116及關於硬體裝置102之硬體介面之知識,程式碼產生工具118可自動地產生硬體介面層115以包含模組,該等模組能使用硬體介面,以收集及記錄資料(該資料記錄硬體裝置102之硬體行為),該資料可被用來除錯之目的。
下述說明USB EHCI控制器能力暫存器之硬體-軟體介面之樣本描述:
如所述的,圖顯示USB EHCI控制器能力暫存器之樣本描述。呈現之暫存器係為能力暫存器。於相對於裝置記憶體基底位址之一些偏移量處,設置每一個暫存器。在此範例中,於藉由「MemoryMappedRegister」屬性具體指定之偏移量0xC處,設置能力暫存器;該屬性係硬體-軟體語法之部分。一旦設置暫存器之基底位置,硬體-軟體介面就提供幾個屬性以呈現不同的暫存器欄位。在此範例中,使用「資料場」屬性,以表示暫存器係為部分的能力暫存器。舉例而言,HCSPARAMS為設置於自能力暫存器之基底位址處(作為解
釋,於0xC處)之偏移量0x4之暫存器。藉由硬體-軟體介面語法,遞回地註解每一個資料場(如下說明的)。
下述說明HCCPARAMS暫存器欄位之硬體-軟體介面描述:
圖顯示如何註解HCSPARAMS暫存器(係如上所述之部分的能力暫存器)。硬體-軟體介面之「位元欄」及「保留欄」屬性使開發商能夠註解暫存器位元。舉例而言,在此暫存器處之位元0指示裝置是否支持64位址。開發商使用「[BitField(0)]public bool Bit64Addressing」以呈現此需求。已產生之程式碼將使開發商能夠存取「Bit64Addressing」作為布林值以詢問值。
下述顯示用於得到/設定HCCPARAMS欄值之已產生程式碼。
已產生之程式碼使用作業系統特定介面,及可簡單產生用於其他作業系統之已產生之程式碼。
下述說明藉由裝置驅動程式之程式碼使用已產生之程式碼之方法。
一旦以底層的記憶體區域初始化暫存器,暫存器就可輕易被讀取、操縱及寫回裝置。
在如上說明的範例中,已產生之程式碼可藉由任何作業系統被使用,及該已產生之程式碼不限於特定供應商。此外或作為替代地,已產生之程式碼可以用任何開發語言,如C#、Java、C、C++等。
如所述的,使用通用的硬體-軟體介面語言以描述機器可讀取硬體規範中之硬體暫存器及主機記憶體資料結構(經由DMA存取)。程式碼產生器在硬體-軟體介面描述上操作。藉由硬體供應商,可提供、驗證及維持硬體-軟體介面描述。硬體供應商可直接地自硬體設計產生機器可讀取硬體規範,該硬體設計係消除任何潛在的人為錯誤。此自軟體/硬體介面設計及實施路徑減少或消除人為干預、減少開發時間及提供一致的及更佳的除錯體驗。
基於帶有資源強化之驅動程式模組,一些實施例實施能力。特別的是,大部分的驅動程式114接合真實的硬體。為完成此目的,驅動程式114映射部分的在裝置102上之實體記憶體122至計算系統104的虛擬位址空間,或驅動程式114使用稱作為I/O空間之專用地址空間。實施先前說明之技術,以幫助確認驅動程式之程式碼正確地使用用於存取裝置102之已映射記憶體(或I/O埠)。在許多常見的作業系統中,裝置驅動程式114可透過錯誤或惡意,自由地嘗試映射及使
用系統記憶體112中的任何實體位址。因驅動程式軟體的特權特性,作業系統典型地無法確認下述事項:驅動程式114無法分配不屬於該驅動程式之埠、中斷或其他介面、或驅動程式不需要埠、中斷或其他介面正常運作以控制特定的硬體裝置102。舉例而言,鍵盤驅動程式應典型地存取IRQ 1,但不需要存取80埠。隨著存取80埠,惡意的鍵盤驅動程式可實施鍵盤側錄功能,該鍵盤側錄功能包括透過網路發送按鍵敲擊至流氓網站。此可危及系統安全。
本文之實施例可在受控代碼中實施驅動程式及系統程序,該受控代碼如C#或Java。受控代碼為僅將在沙盤虛擬機器之管理下執行的電腦程式來源碼。因此,如此實施之任何驅動程式或系統程序包含封閉物件空間。僅可經由專用受控物件存取裝置記憶體及暫存器;該專用受控物件係當初始化該專用受控物件時被提供至驅動程式中。因此,驅動程式將僅能存取系統資源及I/O程序,驅動程式需要該系統資源及I/O程序正確運作以控制裝置。
現在參考第2圖,一些實施例實施方法,其中所有I/O資源(如映射至暫存器206之記憶體、I/O埠208及DMA緩衝器210)之集合204為能力。核心212獨占地擁有這些能力,且在啟動時就分配該等能力至系統根匯流排驅動程式214中。系統根匯流排驅動程式214可分配所有I/O資源之集合204中之子集合204-1、204-2至204-n至其他系統匯流排214-1、214-2至214-n。以此方式(匯流排214-1至214-n僅被分配該等匯流排需要用於特定裝置之資源,及該等特定裝置
係將被附加於該等匯流排),分配子集合204-1至204-n。
當匯流排驅動程式214-1至214-n列舉匯流排驅動程式214-1至214-n之裝置時,匯流排驅動程式214-1至214-n分配I/O資源之集合至每一子代。舉例而言,匯流排214-1具有附加於匯流排214-1自身的裝置202-1及裝置202-1。匯流排214-1可指派I/O資源之集合204-1-1至裝置202-1,及可指派I/O資源之集合204-1-2至裝置202-2,其中集合204-1-1及集合204-1-2為集合204-1之子集合。匯流排僅可分配已被分配給匯流排自身之I/O資源。此方法提供階層式的I/O資源分配架構,可使用該階層式的I/O資源分配架構以保證驅動程式僅能使用或轉變已被分配給驅動程式自身之資源。此可大幅地改善系統可靠度,及允許作業系統於任何時間簡單地追蹤及收回任何I/O資源。當終止或退出驅動程式時,可藉由該驅動程式之父匯流排驅動程式,簡單地回收該驅動程式之資源。以輸入/輸出記憶體管理單元(IOMMU)硬體,在硬體層級可執行此架構。舉例而言,嘗試以不合法的記憶體位址程式化裝置之驅動程式開發商,將無法危及系統安全。
第3圖圖示典型的匯流排驅動程式302之架構。匯流排驅動程式302(在此範例中為PCI匯流排驅動程式)與使用者層級函式庫連結,該使用者層級函式庫提供所有的驅動程式服務(例如,在此範例中為自華盛頓州之雷德蒙之微軟公司得到的驅動程式架構函式庫)。驅動程式亦可與隨插即用管理器函式庫306連結,該隨插即用管理器函式庫306使匯流排驅動程式302列舉其子代裝置。用於每一個已列舉裝置,架
構新增稱為匯流排插槽(如例子,匯流排插槽308-1)之抽象,此持有已分配裝置之資源。每一個匯流排驅動程式輸出多個匯流排插槽介面,如範例匯流排插槽介面310-1(表示為IBusSlot介面),該範例匯流排插槽介面310-1係藉由執行期間被附加至子代驅動程式(藉由範例圖示,114-1)。除了已列舉的裝置驅動程式外,沒有其他服務或程序可附加其自身至匯流排插槽介面。藉由子代裝置驅動程式使用匯流排插槽介面,以分配其已分配I/O資源至藉由範例裝置102-1圖示之裝置。驅動程式僅可分配於父代驅動程式處之匯流排插槽上具體指定之I/O資源。
可簡單實施及分散此機制,也就是在每一個匯流排驅動程式處(而不是在核心處或在單一系統服務處),本地執行I/O資源管理。
除了被視為能力之I/O資源,實施例可實施作業系統,該作業系統可控制各種服務的連接性。當驅動程式被視為服務實施例時,可以控制驅動程式之可使用/互動之服務之集合。舉例而言,不像其他的作業系統,在一些實施例中,驅動程式當自身不具有能力(發送訊息至服務之介面)時,驅動程式無法發送訊息至另一個驅動程式。一些實施例之作業系統能約束、控制、觀察及推論關於驅動程式至其他系統內元件之連接。基於能力之模式及受控代碼之使用之結合,提供如本文所說明之不同優勢。
參考第4圖,圖示獨特架構。在圖示範例中,圖示使用者模式402_(例如,環3,x86架構特權環的最小特權環)
及核心模式404。可於核心模式404(有時被稱為監督模式)中實施微核心406。微核心406為最小量的軟體,該最小量的軟體提供如低層級位址空間管理、執行緒管理及IPC通訊之機制。微核心406係負責讀取基本硬體表。
在使用者模式402中,劃分位址空間為域,如範例域408-1(但本文中一般稱為408)。域執行不同程序(如範例程序410-1-1,但本文中一般稱為410),該不同程序包含在執行期間(如範例執行期間412-1-1)上之一或更多個驅動程式程序。可實施實施例,其中驅動程式為程序410管理之使用者模式402(如藉由在如C#或Java之受控代碼中編碼驅動程式),該使用者模式402可支援高吞吐量及低延遲裝置。在一些實施例中,開發包含使用受控代碼函式庫之裝置驅動程式之所有服務,及於使用者模式402中執行該包含使用受控代碼函式庫之裝置驅動程式之所有服務。此外,可經由語言之靜態驗證型別安全,進一步地達成程序410及微控制器406間的隔離。此機制能在沒有複製所有程序駐留在單一位址空間或域408的情況下,使資料於程序間通訊(IPC)通道上交換。此方法很難使非基於型別安全語言之傳統系統為安全的。
使用受控代碼實施使用者模式驅動程式可大幅地提升系統安全性及簡化驅動程式之開發。特別的是,開發商可利用在系統中為可得的之任何使用者模式函式庫(包含XML剖析器、佇列管理等)。在傳統的作業系統中,因記憶體限制或如驅動程式必須與核心分享驅動程式自身的位址空間之其他限制,驅動程式開發商無法使用任何存在之函式庫。此外,
開發商不再需要擔心記憶體管理。管理程序記憶體之相同的垃圾收集器用於驅動程式。不正確的記憶體管理係作業系統故障之最大來源之一。在一些實施例中,可消除與臭蟲相關之系統驅動程式記憶體。
在一些範例實施例中,作為一或更多個程序410實施之驅動程式為單執行緒。因此開發商不需要擔心同步、執行緒及中斷等級。大部分的驅動程式複雜度消失,及開發商專注於驅動程式之功能。
可經由標準型別安全介面存取驅動程式。常見的作業系統限制存取驅動程式一些預先定義之功能,如打開、關閉、讀取、寫入及如DeviceIoControl(稱作「ioctl」)之通用介面。然而在先前系統中,控制一些眾所皆知之硬體元件之驅動程式及其執行之功能係被限制的;對於現代系統來說,此為不具效率的;該現代系統其中至少一些硬體裝置(例如,如圖形加速器之硬體加速器)揭露廣大及複雜的介面給其主機。在一些實施例提供的解決方案中,作業系統將驅動程式視為一等公民。
經由如任何其他系統服務之型別安全介面,存取作為程序410實施之驅動程式。此類實施利用語言之型別安全優勢特徵及於編譯期間時捕捉錯誤方法調用。為提供編譯期間型別確認,編譯器需要知道在程式碼中用於變數或表示式之資料型別資訊。介面提供介面消費者與介面實施間之契約。在編譯期間,可靜態地確認方法簽名。不同類型參數之不匹配根本不能於正在執行之系統中出現。此外,藉由應用
程式開發者在編譯期間捕捉的那些錯誤,及那些錯誤不需要求藉由驅動程式開發商於核心模式404內之執行期間確認。
此外,開發之安全性及容易性,與常見核心模式裝置驅動程式相比下,實施例能使裝置驅動程式完成高吞吐量及低延遲。經由能力可完成此,以實作零拷貝(zero-copy)I/O路徑。「零拷貝」指的是進入系統之資料僅被寫入記憶體一次,及此後在不需要拷貝資料的情況下,該進入系統之資料可被抽象之多層直接利用(在作業系統及在應用程式之程式碼兩者內)之事實。零拷貝I/O路徑係CPU不執行自一記憶體位置至另一個記憶體位置之路徑。更確切言之,CPU可執行其他工作。此可避免使系統在使用者模式402及核心模式404間切換之內文切換,以完成複製。以下現在說明允許受控的、使用者模式裝置驅動程式之技術,以完成使用零拷貝I/O路徑之此類效能。
可配置實施例以執行高效的中斷調度。有效地傳送硬體中斷至使用者模式驅動程式之能力係新穎的。藉由在作業系統微核心、域核心及驅動程式架構函式庫間之緊密的交互作用,執行中斷調度。
調度中斷之機制使用3層架構,該3層架構包含I/O中斷管理器、驅動程式架構函式庫及高效的微核心中斷處理。
如第4圖圖示的,每一個域408包含域核心,該域核心之範例圖示於414-1處(但本文中一般稱為414)。I/O中斷管理器之範例圖示於416-1處(但本文一般稱為416),該I/O中斷管理器係部分的域核心414,及該I/O中斷管理器為硬體
裝置102及裝置驅動程式程序410間之橋樑。I/O中斷管理器負責管理在IRQ 418上之裝置驅動程式之註冊登記、調度中斷至驅動程式程序410及當藉由多個裝置共用IRQ時處理中斷共用。當所有裝置驅動程式在程序中執行時,相較傳統的單體作業系統核心設計(其中裝置驅動程式於核心中執行),實施例可執行用於驅動程式之較強的隔離及錯誤包容。
驅動程式架構函式庫係負責於域核心414處,註冊登記中斷處理器以接收通知。當於域核心414處接收硬體中斷時,觸發中斷處理器及調用預先註冊登記之驅動程式常式。因無調用自使用者模式402至核心模式404之內文切換,調用該方法之管理負擔係非常低的。
實施例實施高效的微核心中斷處理。在一些實施例中,微核心406係為可中斷的但為不可奪取的。當邏輯處理器在微核心406之內文中執行時,該邏輯處理器可接收中斷但不能限制或切換該微核心406之內文。為最小化中斷調度延遲,實施例限制處理器可花費在微核心406內之時間量。一些實施例施實施用於系統呼叫之持續執行架構,該系統呼叫潛在地可花費較預先設置界限更長的時間。該界限及該持續執行架構使微核心406能以非常低的延遲傳送中斷至域核心414處。傳送所有硬體中斷(MSI、IRQ及Virtual)至使用者模式函式庫,該使用者模式函式庫是驅動程式的一部分。在一些實施例中,可藉由使用零拷貝I/O路徑完成最小化中斷調度延遲。
現在圖示零拷貝I/O路徑之一說明性範例。再次參
考第1圖,系統記憶體112係被圖示。程序410可分配一部分的系統記憶體112。微核心406(見第4圖)可允許程序410分配記憶體,但一旦分配該記憶體至程序410處,則程序410就控制部分的系統記憶體。在硬體驅動程式範例中,硬體裝置102可寫入部分記憶體。驅動程式程序410之後將標記部分記憶體為不變的。不變的記憶體係其內文及/或位址無法被改變之記憶體。因部分記憶體為不可變的,從而並無真正限制於存取部分的記憶體。因此,系統不需要切換核心模式以允許自記憶體讀取出不同程序。因此,在不需要內文切換的情況下,驅動程式程序410可存取部分的記憶體;從而該驅動程式程序410可自硬體裝置102處得到資料,該硬體裝置102快速地及高效地寫入部分的記憶體,使得當於使用者模式中實施驅動程式時,仍可完成高效率及低延遲。
可藉由提供不變的部分記憶體之不同檢視,以適當方式傳送資料至不同程序410處。因此,可使用指向該不變的部分記憶體之指標,而不是複製特定程序410所需要之部分資料;及在該不變的部分記憶體中之資料之邏輯檢視可提供適當資料。因此,自特定程序410之觀點來看,雖然事實上並沒有發生資料複製,但資料似乎已被複製及以適當格式被提供。
相同功能可被使用於驅動程式程序410,以發送資料至硬體裝置102處。特別的是,驅動程式程序410可將資料寫入至部分系統記憶體112。可藉由相同驅動程式程序410或另一個驅動程式程序標記該部分為不變的。之後在不需要
系統切換至核心模式404的情況下,可藉由硬體裝置102讀取記憶體。
在一些實施例中,不變的部分記憶體可具有與自身相關之計數器。每次程序存取該不變的部分記憶體時,計數器遞增。當程序完成讀取該不變的部分記憶體時,計數器遞減。因此,在已讀取該不變的部分記憶體之所有程序完成不變的部分記憶體後,計數器遞減至0,該0允許釋放部分記憶體以用於其他記憶體操作。
另一技術係與用於裝置控制之DMA通道使用相關。通道係雙向訊息管道,該雙向訊息管道係具有恰好的兩端點,該恰好的兩端點稱為通道端點。DMA通道係高效能機制,以連接應用程式及裝置驅動程式間之間隙,該間隙經由DMA交換高的封包資料量。它是標準程序間通訊(IPC)通道之特別化,該特別化之主要不同係藉由在通道中提供可讀取的DMA操作及非同步的訊息引退。IPC訊息具有兩部分,一部分係強制的,及其他部分為可選的。強制部分為複製至通道插槽之行內(inline)資料,及可選部分包含處理,跨越通道傳輸或於該通道上共用該處理。DMA通道在下列態樣係唯一的:
●在使用者模式(其中驅動程式及程序存活)中完整執行DMA通道。
●DMA通道提供回壓。沒有用於每個訊息之記憶體分配,該每個訊息係在應用程式及網路驅動程式間傳遞。進一步地,在此被完全消秏前,資料可在通道內停留,及可持續地處理在此資料後的訊息。
●DMA通道包含零拷貝支援。可自環緩衝器執行DMA。
●DMA通道包含用於任意控制訊息之支援。此可使如軟體分段卸載之最佳化為可能。
下列討論現指的是多個方法及可被執行之方法行為。雖然可以一定順序討論、或以如以特定順序發生之流程圖說明方法行為,但並不需要特定順序(除非有具體描述或要求),因行為係取決於在執行的行為前之另一個完成之行為。
現在參考第5圖,圖示方法500。可在計算環境中實施方法500。方法500包括用於自動產生程式碼之行為,該程式碼係與裝置驅動程式一起使用,該裝置驅動程式係用來與硬體接合。方法500包含接收硬體裝置之機器可讀取描述之步驟(行為502)。機器可讀取描述包含硬體裝置之硬體暫存器或硬體裝置之共用記憶體架構中的至少一個。舉例而言,第1圖圖示硬體裝置102之機器可讀取描述116之範例。
方法500更包含以哪一個硬體裝置被使用來判定作業系統之步驟(行為504)。舉例而言,程式碼產生工具118可存取、或可具有設置作業系統之資訊,該作業系統係為了該作業系統新增硬體介面層115之作業系統。
方法500更包含在程式碼產生工具上處理機器可讀取描述,以自動產生用於硬體驅動程式之程式碼,該硬體驅動程式係用於硬體裝置,該硬體裝置特定於已判定作業系統(行為506)。舉例而言,第1圖圖示他程式碼產生工具118執行機器可讀取硬體規範116。
可產生多種驅動程式之程式碼部分。舉例而言,可實施方法500之一些實施例,其中產生用於硬體驅動程式之程式碼之步驟包含:產生用於讀取及寫入至暫存器、及解釋暫存器欄位之硬體存取方法之步驟。作為替代的或此外,可實施方法500之實施例,其中產生用於硬體驅動程式之程式碼之步驟包含:產生用於讀取及寫入至共用結構欄位之方法之步驟。作為替代的或此外,可實施方法500之實施例,其中產生用於硬體驅動程式之程式碼之步驟包含:產生用於硬體介面實體之記憶體配置器之步驟,該硬體介面實體係以硬體裝置之機器可讀取描述表示。作為替代的或此外,可實施方法500之實施例,其中產生用於硬體驅動程式之程式碼之步驟包含:產生記錄檔模組,該記錄檔解釋及追蹤硬體介面實體。作為替代的或此外,可實施方法500之實施例,其中除錯器延伸圖形化硬體介面實體。
可實施方法500之一些實施例,其中藉由硬體供應商提供硬體裝置之機器可讀取描述。
可實施方法500之一些實施例,其中產生用於硬體驅動程式之已產生程式碼作為受控代碼。
現在參考第6圖,圖示方法600。可在計算環境中實施方法600。方法600包含在硬體驅動程式上執行限制之行為。方法600包含自系統核心,分配I/O資源至系統之根匯流排之行為(行為602)。舉例而言,第2圖圖示藉由分配資源至匯流排驅動程式214,分配I/O資源至系統之根匯流排。
自根匯流排,方法600包含分配I/O資源之子集合
至裝置匯流排之步驟(行為604)。分配I/O資源之子集合至裝置匯流排之步驟包含以下步驟:限制裝置匯流排僅能分配藉由根匯流排分配至該裝置匯流排自身之I/O資源。舉例而言,在第2圖中,裝置匯流排214-1至214-n具有分配至其自身之資源。這些裝置匯流排的每一個僅能進一步地分配已分配給其自身之資源。
方法600更包含以下步驟:自裝置匯流排,經由裝置介面分配I/O資源至裝置之步驟(行為606)。
可實施方法600之一些實施例,其中經由於受控代碼中實施匯流排驅動程式,以完成限制裝置匯流排僅能分配藉由根匯流排分配至該裝置匯流排自身之I/O資源之步驟。
可實施方法600,其中分配I/O資源之子集合至裝置匯流排之步驟包含以下步驟:調用實施於受控代碼中之匯流排驅動程式。
可實施方法600,其中分配I/O資源至裝置之步驟包含以下步驟:調用實施於受控代碼中之裝置驅動程式。
方法600可更包含以下步驟:預防其他服務及程序將該等其他服務及程序自身附加至裝置介面。
現在參考第7圖,圖示方法700。可在計算環境中實施方法700。方法700包含用於實施型別安全驅動程式之行為,該型別安全驅動程式可支援高吞吐量及低延遲裝置。方法700包含自硬體裝置接收資料之步驟(行為702)。方法700更包含傳送資料至一或更多個驅動程式程序,該一或更多個驅動程式程序執行於使用零拷貝之使用者模式中,以允許該
一或更多個驅動程式程序支援高吞吐量及低延遲硬體裝置(行為704)。
可實施方法700,其中在沒有奪取核心模式的情況下,執行傳送資料。作為替代的或此外,方法700可更包含限制處理器花費在核心模式內之時間量。作為替代的或此外,可實施方法700,其中於受控代碼中實施驅動程式程序。作為替代的或此外,方法700可更包含I/O中斷管理器,該中中斷管理器於使用者模式中實施,該中斷管理器在中斷上註冊登記使用者模式裝置驅動程式。在一些實施例中,I/O中斷管理器調度中斷至驅動程式程序。作為替代的或此外,方法700可更包含實施驅動程式為單一執行緒程序。作為替代的或此外,可實施方法700,其中在沒有限制什麼使用者模式函式庫可被用來實施一或更多個驅動程式程序的情況下,實施一或更多個驅動程式程序。
更進一步地,可藉由電腦系統實施方法,該電腦系統包含一或更多個處理器及如電腦記憶體之電腦可讀取媒體。特別的是,電腦記憶體可儲存電腦可執行指令,當藉由一或更多個處理器執行該等電腦可執行指令時,該等電腦可執行指令使如實施例中描述之行為之不同功能被執行。
本發明之實施例包含或利用特殊目的或通用電腦,該特殊目的或通用電腦包含如下所詳加討論的電腦硬體。在本發明範圍內之實施例亦包含用於攜帶或儲存電腦可執行指令及/或資料結構之實體及其他電腦可讀取媒體。此類電腦可讀取媒體可為藉由通用目的或特殊目的之電腦系統可存取之
任何可得到的媒體。儲存電腦可執行指令之電腦可讀取媒體為實體儲存媒體。攜帶電腦可執行指令之電腦可讀取媒體為傳輸媒體。因此,舉例而言,非限制的,本發明之實施例可包含至少兩種明顯不同種類的電腦可讀取媒體:實體電腦可讀取儲存媒體及傳輸電腦可讀取媒體。
實體電腦可讀取儲存媒體包含RAM、ROM、EEPROM、CD-ROM或其他光碟儲存裝置(如CD、DVD等)-、磁碟儲存或其他磁碟儲存裝置、或任何其他媒體;該任何其他媒體可用來儲存以電腦可執行指令或資料結構之形式之所欲程式碼方法,及可經由通用目的或特殊目的電腦存取該任何其他媒體。
定義「網路」為一或更多個資料連結,該一或更多個資料連結使在電腦系統及/或模組及/或其他電子裝置間能傳輸電子資料。當於網路上或其他通訊連接(固線式、無線式或固線式或無線式之結合)上傳輸資訊或提供資訊至電腦時,電腦適當地將連接視為傳輸媒體。傳輸媒體可包含網路及/或資料連結,該網路及/或資料連結可用來攜帶或以電腦可執行指令或資料結構之形式之所欲程式碼方法,及可經由通用目的或特殊目的電腦存取該網路及/或資料連結。亦可包含上述之結合於電腦可讀取媒體範圍中。
更進一步的,一旦連結到多種電腦系統元件,可自傳輸電腦可讀取媒體,自動地傳輸以電腦可執行指令或資料結構之形式之程式碼方法至實體電腦可讀取儲存媒體(或反之亦然)。舉例而言,在網路或資料連結上接收之電腦可執行指
令或其他資料結構可於網路介面模組中之RAM(例如,「NIC」)中緩衝,及最後傳輸該在網路或資料連結上接收之電腦可執行指令或其他資料結構至電腦系統之RAM中及/或在電腦系統處之較少揮發之電腦可讀取實體儲存媒體。因此,電腦可讀取實體儲存媒體可包含於電腦系統元件中,該等電腦系統元件亦可(或甚至主要地)利用傳輸媒體。
電腦可執行指令包含(舉例而言)使通用目的電腦、特殊目的電腦或特殊目的處理裝置執行特定功能或一組功能之指令及資料。電腦可執行指令可為(舉例而言)二進制、如組合語言之中間格式指令或甚至為來源碼。雖然已以語言描述申請標的,以具體指定結構化特徵及/或方法行為,要瞭解的是,定義於附加申請專利範圍中之申請標的並不需要限制於如上所述之已描述特徵或行為。更確切地說,揭示已描述之特徵及行為以作為實施申請專利範圍之範例形式。
所屬技術領域中具有通常知識者將得知本發明可於具有多種類型電腦系統配置之網路計算環境中實施,該多種類型電腦系統配置包含個人電腦、桌上型電腦、膝上型電腦、訊息處理器、手持裝置、多處理器系統、基於微處理器或可程式化之消費電子產品、網路個人電腦、迷你電腦、主機型電腦、行動電話、PDA、傳呼機、路由器、交換器及諸如此類。本發明亦可於分散式系統環境中實施,其中經由網路連結(藉由固線式資料連結、無線式資料連結或固線式及無線式資料連結之結合)之本地電腦系統及遠端電腦系統兩者執行工作。在分散式系統環境中,可設置程式模組於本地記憶體儲
存裝置及遠端記憶體儲存裝置兩者中。
可在沒有背離本發明之精神及特徵的情況下,於其他特定形式中體現本發明。已描述之實施例在所有態樣皆被視為僅為說明性的且不為限制的。本發明之範圍因而為藉由附加之申請專利範圍指示,而不是經由前述之描述指示。所有落入申請專利範圍之等同物之含義及範圍之改變包含於申請專利範圍之範圍內。
102‧‧‧硬體裝置
104‧‧‧計算系統
106‧‧‧暫存器
108‧‧‧CPU
110‧‧‧共用記憶體
112‧‧‧系統記憶體
114‧‧‧驅動程式
115‧‧‧硬體介面層
115-1‧‧‧硬體裝置介面層
115-2‧‧‧硬體裝置介面層
115-n‧‧‧硬體裝置介面層
116‧‧‧機器可讀取硬體規範
118‧‧‧程式碼產生工具
120‧‧‧硬體-軟體介面處理器
122‧‧‧實體記憶體
Claims (14)
- 一種在一計算環境中於硬體驅動程式上執行限制的方法,該方法包含以下步驟:自一系統核心分配I/O資源至一系統之一根匯流排驅動程式;自該根匯流排驅動程式分配自該系統核心分配至該根匯流排驅動程式之該等I/O資源之一子集合至一裝置匯流排驅動程式,其中該裝置匯流排驅動程式階層式地低於該根匯流排驅動程式,且係自複數個階層式地低於該根匯流排驅動程式的裝置匯流排驅動程式中來選擇該裝置匯流排驅動程式,其中分配該等I/O資源之該子集合至該裝置匯流排驅動程式之步驟包含以下步驟:限制該裝置匯流排驅動程式僅能分配藉由該根匯流排驅動程式分配至該裝置匯流排驅動程式之I/O資源;自該裝置匯流排驅動程式,經由一匯流排插槽的一匯流排插槽介面分配該等I/O資源之該子集合之一子集合至一子代裝置驅動程式,其中該匯流排插槽持有用於該子代裝置驅動程式的該等I/O資源之該子集合之該子集合,及其中該匯流排插槽介面經配置使得除了該子代裝置驅動程式外沒有其他服務或程序可將該等其他服務或程序自身附加至該匯流排插槽介面,及其中該子代裝置驅動程式經配置使得該子代裝置驅動程式僅可分配於該裝置匯流排驅動程式處之該匯流排插槽上具體指定之該等I/O資源之該子集合之該子集合,其中分配該等I/O資源之該子集合至該裝置匯流排驅動程式之步驟 包含以下步驟:分配經耦合至該裝置匯流排驅動程式之裝置將會需要之資源;及預防其他服務及程序將該等其他服務及程序自身附加至該匯流排插槽介面。
- 如請求項1所述之方法,其中藉由於受控代碼中實施匯流排驅動程式來完成限制該裝置匯流排驅動程式僅能分配藉由該根匯流排驅動程式分配至該裝置匯流排驅動程式之該等I/O資源之步驟。
- 如請求項1所述之方法,其中分配該等I/O資源之該子集合至該裝置匯流排驅動程式之步驟包含以下步驟:調用實施於受控代碼中之一匯流排驅動程式。
- 如請求項1所述之方法,其中分配該等I/O資源之該子集合之該子集合至該子代裝置驅動程式之步驟包含以下步驟:調用實施於受控代碼中之一裝置驅動程式。
- 如請求項1所述之方法,該方法更包含以下步驟:終止用於一裝置的一驅動程式,及該裝置匯流排驅動程式回收分配給該裝置之資源。
- 一種電腦程式產品,該電腦程式產品包含一或多個電腦可讀取儲存記憶體,該一或多個電腦可讀取儲存記憶體包含 電腦可執行指令,當在一計算環境中藉由一或多個處理器執行該等電腦可執行指令時,該等電腦可執行指令使一或多個處理器執行下列步驟:自一系統核心分配I/O資源至一系統之一根匯流排驅動程式;自該根匯流排驅動程式分配自該系統核心分配至該根匯流排驅動程式之該等I/O資源之一子集合至一裝置匯流排驅動程式,其中該裝置匯流排驅動程式階層式地低於該根匯流排驅動程式,且係自複數個階層式地低於該根匯流排驅動程式的裝置匯流排驅動程式中來選擇該裝置匯流排驅動程式,其中分配該等I/O資源之該子集合至該裝置匯流排驅動程式之步驟包含以下步驟:限制該裝置匯流排驅動程式僅能分配藉由該根匯流排驅動程式分配至該裝置匯流排驅動程式之I/O資源;自該裝置匯流排驅動程式,經由一匯流排插槽的一匯流排插槽介面分配該等I/O資源之該子集合之一子集合至一子代裝置驅動程式,其中該匯流排插槽持有用於該子代裝置驅動程式的該等I/O資源之該子集合之該子集合,及其中該匯流排插槽介面經配置使得除了該子代裝置驅動程式外沒有其他服務或程序可將該等其他服務或程序自身附加至該匯流排插槽介面,及其中該子代裝置驅動程式經配置使得該子代裝置驅動程式僅可分配於該裝置匯流排驅動程式處之該匯流排插槽上具體指定之該等I/O資源之該子集合之該子集合,其中分配該等I/O資源之該子集合至該裝置匯流排驅動程式之步驟 包含以下步驟:分配經耦合至該裝置匯流排驅動程式之裝置將會需要之資源;及預防其他服務及程序將該等其他服務及程序自身附加至該匯流排插槽介面。
- 如請求項6所述之電腦程式產品,其中藉由於受控代碼中實施匯流排驅動程式來完成限制該裝置匯流排驅動程式僅能分配藉由該根匯流排驅動程式分配至該裝置匯流排驅動程式之該等I/O資源之步驟。
- 如請求項6所述之電腦程式產品,其中分配該等I/O資源之該子集合至該裝置匯流排驅動程式之步驟包含以下步驟:調用實施於受控代碼中之一匯流排驅動程式。
- 如請求項6所述之電腦程式產品,其中分配該等I/O資源之該子集合之該子集合至該子代裝置驅動程式之步驟包含以下步驟:調用實施於受控代碼中之一裝置驅動程式。
- 如請求項6所述之電腦程式產品,更包含以下步驟:終止用於一裝置的一驅動程式,及該裝置匯流排驅動程式回收分配給該裝置之資源。
- 一種計算系統,該計算系統包含:複數個I/O資源; 一系統之根匯流排驅動程式,該系統之根匯流排驅動程式具有分配至該系統之根匯流排驅動程式之該複數個I/O資源;一裝置匯流排驅動程式,該裝置匯流排驅動程式具有自該根匯流排驅動程式分配至該裝置匯流排驅動程式之該等I/O資源之一子集合,其中該裝置匯流排驅動程式階層式地低於該根匯流排驅動程式,且係自複數個該根匯流排驅動程式之階層式的子代裝置匯流排驅動程式中來選擇該裝置匯流排驅動程式,其中限制該裝置匯流排驅動程式僅能分配藉由該根匯流排驅動程式分配至該裝置匯流排驅動程式之I/O資源;一硬體裝置,該硬體裝置具有使用該裝置匯流排驅動程式之一匯流排插槽介面而藉由一子代裝置驅動程式分配至該硬體裝置之I/O資源之該子集合之一子集合,其中該匯流排插槽介面持有用於該子代裝置驅動程式的該等I/O資源之該子集合之該子集合,及其中該匯流排插槽介面經配置使得除了該子代裝置驅動程式外沒有其他服務或程序可將該等其他服務或程序自身附加至該匯流排插槽介面,及其中該子代裝置驅動程式經配置使得該子代裝置驅動程式僅可分配於該裝置匯流排驅動程式處之該匯流排插槽上具體指定之該等I/O資源之該子集合之該子集合,其中藉由分配經耦合至該裝置匯流排驅動程式之裝置將會需要之資源來僅分配該等I/O資源之一子集合至該裝置匯流排驅動程式,及其中該系統經配置以預防其他服務及程序將該等其他服務及程序自身附加至該匯流排插槽介面。
- 如請求項11所述之系統,其中該系統根匯流排驅動程式及該裝置匯流排驅動程式經實施於受控代碼中,該受控代碼經配置以限制該裝置匯流排驅動程式僅能分配藉由該根匯流排驅動程式分配至該裝置匯流排驅動程式之I/O資源。
- 如請求項11所述之系統,其中藉由調用實施於受控代碼中之一匯流排驅動程式來分配該等I/O資源之該子集合至一裝置匯流排驅動程式。
- 如請求項11所述之系統,其中藉由調用實施於受控代碼中之一裝置驅動程式來分配該等I/O資源之該子集合之該子集合至一裝置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/734,716 US9323543B2 (en) | 2013-01-04 | 2013-01-04 | Capability based device driver framework |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201439775A TW201439775A (zh) | 2014-10-16 |
TWI603199B true TWI603199B (zh) | 2017-10-21 |
Family
ID=50031534
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102147994A TWI603199B (zh) | 2013-01-04 | 2013-12-24 | 基於能力的裝置驅動程式架構 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9323543B2 (zh) |
EP (1) | EP2941694B1 (zh) |
CN (1) | CN105229600B (zh) |
AR (1) | AR096009A1 (zh) |
TW (1) | TWI603199B (zh) |
WO (1) | WO2014107542A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10546302B2 (en) | 2016-06-30 | 2020-01-28 | Square, Inc. | Logical validation of devices against fraud and tampering |
US10715536B2 (en) | 2017-12-29 | 2020-07-14 | Square, Inc. | Logical validation of devices against fraud and tampering |
US10657073B2 (en) | 2018-04-26 | 2020-05-19 | Microsoft Technology Licensing, Llc | Driver module framework enabling creation and execution of reliable and performant drivers |
US11507958B1 (en) | 2018-09-26 | 2022-11-22 | Block, Inc. | Trust-based security for transaction payments |
US11494762B1 (en) | 2018-09-26 | 2022-11-08 | Block, Inc. | Device driver for contactless payments |
CN115599505B (zh) * | 2021-06-28 | 2024-07-05 | 华为技术有限公司 | 用户态中断请求的处理方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030233487A1 (en) * | 1999-12-15 | 2003-12-18 | Frederic Ruget | Computer system with an improved device and driver framework |
US20070094673A1 (en) * | 2005-10-26 | 2007-04-26 | Microsoft Corporation | Configuration of Isolated Extensions and Device Drivers |
TW201129927A (en) * | 2009-06-25 | 2011-09-01 | Apple Inc | Virtual graphics device driver |
TW201214289A (en) * | 2010-08-23 | 2012-04-01 | Empire Technology Dev Llc | Context switching |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB8814633D0 (en) * | 1987-11-18 | 1988-07-27 | Ibm | Bus flow control mechanism |
US6148346A (en) | 1996-06-20 | 2000-11-14 | Peerless Systems Imaging Products, Inc. | Dynamic device driver |
US6275857B1 (en) * | 1996-10-30 | 2001-08-14 | Microsoft Corporation | System and method for freeing shared resources in a computer system |
US6202146B1 (en) * | 1998-06-29 | 2001-03-13 | Sun Microsystems, Inc. | Endianness checking for platform-independent device drivers |
US6907474B2 (en) * | 2000-09-15 | 2005-06-14 | Microsoft Corporation | System and method for adding hardware registers to a power management and configuration system |
US7234144B2 (en) | 2002-01-04 | 2007-06-19 | Microsoft Corporation | Methods and system for managing computational resources of a coprocessor in a computing system |
US8225306B2 (en) | 2002-12-12 | 2012-07-17 | Dell Products L.P. | Platform independent imaging method and system |
US20060034167A1 (en) | 2004-07-30 | 2006-02-16 | International Business Machines Corporation | Communication resource reservation system for improved messaging performance |
US7613813B2 (en) | 2004-09-10 | 2009-11-03 | Cavium Networks, Inc. | Method and apparatus for reducing host overhead in a socket server implementation |
JP4863450B2 (ja) | 2005-03-29 | 2012-01-25 | キヤノン株式会社 | デバイスドライバプログラムをカスタマイズするための情報処理装置及びデバイスドライバプログラムのカスタマイズ方法 |
CN101297280B (zh) * | 2005-10-26 | 2013-03-27 | 微软公司 | 隔离扩展和设备驱动程序的配置 |
US7617377B2 (en) * | 2006-10-17 | 2009-11-10 | International Business Machines Corporation | Splitting endpoint address translation cache management responsibilities between a device driver and device driver services |
GB2443277B (en) | 2006-10-24 | 2011-05-18 | Advanced Risc Mach Ltd | Performing diagnostics operations upon an asymmetric multiprocessor apparatus |
US7904878B2 (en) | 2006-12-26 | 2011-03-08 | Vayavya Technologies Private Limited | Simplifying generation of device drivers for different user systems to facilitate communication with a hardware device |
US8589866B2 (en) | 2007-08-29 | 2013-11-19 | Ricoh Company, Ltd. | Automatically generating capability-based computer peripheral device drivers |
US20090064196A1 (en) | 2007-08-31 | 2009-03-05 | Microsoft Corporation | Model based device driver code generation |
US8185783B2 (en) | 2007-11-22 | 2012-05-22 | Microsoft Corporation | Split user-mode/kernel-mode device driver architecture |
US20090190150A1 (en) | 2008-01-24 | 2009-07-30 | Selvaraj Senthil K | On-Demand Print Driver |
US8024417B2 (en) | 2008-06-04 | 2011-09-20 | Microsoft Corporation | Simple flow control protocol over RDMA |
US8769036B2 (en) | 2009-10-30 | 2014-07-01 | International Business Machines Corporation | Direct sending and asynchronous transmission for RDMA software implementations |
US8200853B2 (en) | 2010-01-14 | 2012-06-12 | Microsoft Corporation | Extensions for USB driver interface functions |
US20120092722A1 (en) | 2010-10-18 | 2012-04-19 | Aventura Hq, Inc. | Managing printer feedback in a distributed printing environment |
US8806511B2 (en) | 2010-11-18 | 2014-08-12 | International Business Machines Corporation | Executing a kernel device driver as a user space process |
US8683428B2 (en) | 2011-03-23 | 2014-03-25 | Microsoft Corporation | Automated generation of client/driver communication interfaces |
CN102761793B (zh) * | 2012-06-12 | 2014-10-29 | 烽火通信科技股份有限公司 | 一种矩阵化eID总线电路 |
CN202869684U (zh) * | 2012-09-14 | 2013-04-10 | 贵航发动机设计研究所 | 一种燃气温度场旋转测量装置 |
-
2013
- 2013-01-04 US US13/734,716 patent/US9323543B2/en not_active Expired - Fee Related
- 2013-12-24 TW TW102147994A patent/TWI603199B/zh not_active IP Right Cessation
-
2014
- 2014-01-03 CN CN201480003951.2A patent/CN105229600B/zh active Active
- 2014-01-03 EP EP14702316.2A patent/EP2941694B1/en active Active
- 2014-01-03 WO PCT/US2014/010115 patent/WO2014107542A1/en active Application Filing
- 2014-01-07 AR ARP140100047A patent/AR096009A1/es unknown
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030233487A1 (en) * | 1999-12-15 | 2003-12-18 | Frederic Ruget | Computer system with an improved device and driver framework |
US20070094673A1 (en) * | 2005-10-26 | 2007-04-26 | Microsoft Corporation | Configuration of Isolated Extensions and Device Drivers |
TW201129927A (en) * | 2009-06-25 | 2011-09-01 | Apple Inc | Virtual graphics device driver |
TW201214289A (en) * | 2010-08-23 | 2012-04-01 | Empire Technology Dev Llc | Context switching |
Also Published As
Publication number | Publication date |
---|---|
WO2014107542A1 (en) | 2014-07-10 |
TW201439775A (zh) | 2014-10-16 |
US9323543B2 (en) | 2016-04-26 |
AR096009A1 (es) | 2015-12-02 |
CN105229600A (zh) | 2016-01-06 |
EP2941694B1 (en) | 2018-11-28 |
EP2941694A1 (en) | 2015-11-11 |
US20140196059A1 (en) | 2014-07-10 |
CN105229600B (zh) | 2019-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102104695B1 (ko) | 하드웨어 디바이스에 대한 소프트웨어 인터페이스 | |
US9823851B2 (en) | Secure migratable architecture having security features | |
TWI603199B (zh) | 基於能力的裝置驅動程式架構 | |
US20190141145A1 (en) | Cloud-scale heterogeneous datacenter management infrastructure | |
US9727359B2 (en) | Virtual machine function based sub-page base address register access for peripheral component interconnect device assignment | |
US10289785B1 (en) | Platform architecture creation for a system-on-chip | |
US20070239965A1 (en) | Inter-partition communication | |
US8316414B2 (en) | Reconfiguring a secure system | |
RU2611018C2 (ru) | Общий способ построения виртуального pci-устройства и виртуального mmio-устройства | |
CN112148336A (zh) | 计算系统固件的安全更新 | |
EP2941695B1 (en) | High throughput low latency user mode drivers implemented in managed code | |
Kristiansen | PCIe Device Lending | |
Kotovsky | How to Develop Embedded Software Using the QEMU Machine Emulator | |
US20240004670A1 (en) | Computer system executing multiple operating systems | |
Crutcher et al. | Operating System | |
Caforio | VOSySmonitoRV: a mixed-criticality solution on 64bit Linux-capable RISC-V platform | |
Dolev et al. | Self-stabilizing device drivers | |
Orwick et al. | Developing Drivers with the Windows Driver Foundation: Dev Driver Win Driver Fou_p1 | |
JPWO2009113571A1 (ja) | 複数の基盤ソフトウェアを動作可能な情報処理装置および方法 | |
Verhulst et al. | Requirements and Specifications for the OpenComRTOS Project |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |