實現輸入設備熱插拔的系統及方法
2023-07-14 21:52:31
專利名稱:實現輸入設備熱插拔的系統及方法
技術領域:
本發明涉及基於Linux作業系統的實現輸入設備熱插拔的系統及方法。
背景技術:
目前,Linux作業系統作為一個開放原始碼的作業系統,已經廣泛應用在伺服器、嵌入式等領域。Linux作業系統分為內核空間和用戶空間的,在內核空間裡面主要包括驅動模塊、作業系統的核心模塊以及處理模塊,行業裡把內核空間內的所有模塊統稱為Linux內核空間,而用戶空間一般包含用戶程序,用戶程序不能無限制的使用內核空間的功能,用戶程序必須按照內核空間提供的既有功能、既有方法來使用。傳統的Linux作業系統中,有兩種不同的方法來看待熱插拔。Linux作業系統的內核空間看待熱插拔為硬體,是內核空間和硬體之間的交互。而用戶看待熱插拔是內核空間和用戶空間中的用戶程序的交互,用戶程序通過內核空間發給用戶空間的通知來得知設備的熱插拔。目前,Linux作業系統關於設備熱插拔的實現隨著版本的升級不斷再變化。Linux作業系統的熱插拔的原有實現,依賴於Linux作業系統的設備模型。在Linux作業系統現有的設備模型下,當輸入設備熱插拔時,在設備模型子系統下,將產生事件以通知用戶空間,即內核空間通知用戶空間發生了某種熱插拔事件時,內核空間調用用戶空間的處理程序。當用戶向Linux作業系統添加或刪除輸入設備時,內核空間會產生一個熱插拔事件,並在/proc/sys/kernel/hotplug (Linux作業系統下的一個文件)裡查找處理輸入設備連接的用戶空間內的用戶程序。這個用戶空間內的用戶程序主要有:Hotplug用戶程序:這個程序是一個典型的bash腳本,只傳遞執行權給一系列位於/etc/hot-plug.d/目錄樹的程序。hotplug腳本搜索所有的具有.hotplug後綴的可能對這個事件進行處理的程序並調用它們,並傳遞給它們許多不同的已經被內核空間設置的環境變量,目前這個用戶程序基本被淘汰;Udev用戶程序:用於linux2.6.13或更高版本的內核空間上,為用戶空間提供使用固定設備名的動態/dev目錄的解決方案。它通過在sysfs的/class/和/block/目錄樹中查找一個稱為dev的文件,以確定所創建的設備節點文件的主次設備號,所以要使用udev,驅動模塊必須為輸入設備在sysfs中創建類接口及其dev屬性文件,方法和sculld模塊中創建dev屬性相同。上述採用hotplug、udev用戶程序實現輸入設備熱插拔的系統及方法,必須結合內核空間和用戶空間才能實現實現輸入設備熱插拔,由此可知,目前還沒有一種可以在Linux作業系統的內核空間中直接實現輸入設備熱插拔的系統及方法。
發明內容
本發明的目的在於提供一種可以在Linux作業系統的內核空間中直接實現輸入設備熱插拔的系統及方法,通過在Linux作業系統的內核空間中直接獲取輸入設備熱插拔事件,結合在Linux作業系統的內核空間的圖形庫直接渲染技術來實現設備的熱插拔。為了達到上述的目的,本發明採用如下技術方案: 一種實現輸入設備熱插拔的系統,基於Linux作業系統,包括分別屬於Linux作業系統的內核空間的驅動模塊、輸入核心模塊和輸入設備處理模塊;當輸入設備熱插或熱拔時,驅動模塊將輸入設備的熱插拔類型傳遞給輸入核心模塊;輸入核心模塊調用Linux作業系統的系統函數匹配對應的輸入設備處理模塊,匹配成功後在Linux作業系統的內核空間中直接截取輸入設備的熱插拔事件,並將輸入設備的熱插拔事件發送給輸入設備處理模塊;所述輸入設備處理模塊根據所述輸入設備的熱插拔事件,進行有關所述輸入設備的處理。可選的,在上述的實現輸入設備熱插拔的系統中,所述驅動模塊或者所述輸入設備處理模塊包括連接函數模塊與斷開函數模塊,所述連接函數模塊用於將輸入設備加入到Linux作業系統的輸入設備列表中並截取所述輸入設備的熱插事件,所述斷開函數模塊用於將輸入設備從Linux作業系統的輸入設備列表中刪除並截取輸入設備的熱拔事件,所述輸入核心模塊在匹配成功後,根據輸入設備的熱插拔類型調用所述連接函數模塊或所述斷開函數模塊實現對所述輸入設備的熱插拔事件的截取。可選的,在上述的實現輸入設備熱插拔的系統中,所述輸入設備是滑鼠、鍵盤、觸控螢幕中的一種或多種。本發明還公開了一種實現輸入設備熱插拔的方法,包括如下步驟:步驟S1:當輸入設備熱插或熱拔時,驅動模塊將輸入設備的熱插拔類型傳遞給輸入核心模塊;步驟S2:輸入核心模塊調用Linux作業系統的系統函數匹配到對應的輸入設備處理模塊,匹配成功後根據輸入設備的熱插拔類型在Linux作業系統的內核空間中直接截取輸入設備的熱插拔事件;步驟S3:輸入核心模塊將輸入設備的熱插拔事件發送給輸入設備處理模塊,輸入設備處理模塊根據輸入設備的熱插拔事件,進行關於輸入設備的處理。優選的,在上述的實現輸入設備熱插拔的方法中,所述驅動模塊或者所述輸入設備處理模塊包括連接函數模塊和斷開函數模塊,所述連接函數模塊用於將輸入設備加入到Linux作業系統的輸入設備列表中並截取所述輸入設備的熱插事件,所述斷開函數模塊用於將輸入設備從Linux作業系統的輸入設備列表中刪除並截取輸入設備的熱拔事件。優選的,在上述的實現輸入設備熱插拔的方法中,當輸入設備熱插時,所述步驟S2具體包括如下子步驟:輸入核心模塊遍歷驅動模塊和輸入設備處理模塊,並為所述輸入設備掛載對應的輸入設備處理模塊;輸入核心模塊掛載成功後調用所述連接函數模塊;輸入核心模塊截取輸入設備的熱插事件。所述步驟S3具體包括如下子步驟:輸入核心模塊將輸入設備的熱插事件發送給輸入設備處理模塊;輸入設備處理模塊建立所述輸入設備相關的數據結構,允許所述輸入設備的輸入事件。
優選的,在上述的實現輸入設備熱插拔的方法中,當輸入設備熱拔時,所述步驟S2具體包括如下子步驟:輸入核心模塊遍歷驅動模塊和輸入設備處理模塊,為所述輸入設備卸載對應的輸入設備處理模塊;輸入核心模塊卸載成功後調用所述斷開函數模塊;輸入核心模塊截取輸入設備的熱拔事件。所述步驟S3具體包括如下子步驟:輸入核心模塊將輸入設備的熱拔事件發送給輸入設備處理模塊;輸入設備處理模塊刪除所述輸入設備相關的數據結構,禁止所述輸入設備的輸入事件。本發明提供的實現輸入設備熱插拔的系統及方法,包括分別屬於Linux作業系統的內核空間的驅動模塊、輸入核心模塊及輸入設備處理模塊;當輸入設備熱插或熱拔時,驅動模塊將輸入設備的熱插拔類型傳遞給輸入核心模塊;輸入核心模塊調用Linux作業系統的系統函數匹配對應的輸入設備處理模塊,匹配成功後在Linux作業系統的內核空間中直接截取輸入設備的熱插拔事件,並將輸入設備的熱插拔事件發送給輸入設備處理模塊;所述輸入設備處理模塊根據所述輸入設備的熱插拔事件,進行有關所述輸入設備的處理。由於所述驅動模塊、輸入核心模塊及輸入設備處理模塊屬於Linux作業系統的內核空間,因此,本發明可在Linux作業系統的內核空間中直接實現輸入設備的熱插拔技術,可以提高Linux作業系統的處理效率。
本發明的實現輸入設備熱插拔的系統及方法由以下的實施例及附圖給出。圖1是本發明的實現輸入設備熱插拔的系統的結構示意圖;圖2是本發明的實現輸入設備熱插拔的方法的總體流程圖;圖3是本發明的實現輸入設備熱插拔的方法熱插時的詳細流程圖;圖4是本發明的實現輸入設備熱插拔的方法熱拔時的詳細流程圖;圖中,10-輸入設備、20-內核空間、21-驅動模塊、22-輸入核心模塊、23-輸入設備處理模塊。
具體實施例方式以下將對本發明的實現輸入設備熱插拔的系統及方法作進一步的詳細描述。實施例一請參閱圖1,本實施例提供的實現輸入設備熱插拔的系統,基於Linux作業系統,包括:驅動模塊21,用於負責輸入設備10和輸入核心模塊22之間通信;輸入核心模塊22,用於根據所述輸入設備10的熱插拔類型實現輸入設備10或輸入設備處理模塊23的註冊或註銷;以及輸入設備處理模塊23,用於實現應用程式和輸入核心模塊22之間的通信;其中,所述的驅動模塊21、輸入核心模塊22與輸入設備處理模塊23屬於Linux作業系統的內核空間20,當輸入設備10熱插或熱拔時,驅動模塊21將輸入設備10的熱插拔類型傳遞給輸入核心模塊22 ;其中,所述輸入設備10可以是滑鼠、鍵盤、觸控螢幕等中的一種或多種。在驅動模塊21中,為每個特定的輸入設備10配有對應的驅動模塊21,相應地,在輸入設備10處理模塊22中,為每個特定的輸入設備10配有對應的輸入設備處理模塊23,例如,鍵盤對應驅動模塊21中的鍵盤驅動模塊(PS/2),並對應輸入設備處理模塊23中的鍵盤處理模塊(Keyboard Handler)。輸入核心模塊22調用Linux作業系統的系統函數匹配對應的輸入設備處理模塊23,匹配成功後在Linux作業系統的內核空間20中直接截取輸入設備10的熱插拔事件,並將輸入設備10的熱插拔事件發送給輸入設備處理模塊23 ;所述輸入設備處理模塊23根據所述輸入設備10的熱插拔事件,進行有關所述輸入設備10的處理。所述驅動模塊21或者所述輸入設備處理模塊23還包括連接函數模塊與斷開函數模塊。本實施例中,所述連接函數模塊用於將輸入設備10加入到Linux作業系統的輸入設備列表中並截取所述輸入設備10的熱插事件,所述斷開函數模塊用於將輸入設備10從Linux作業系統的輸入設備列表中刪除並截取輸入設備10的熱拔事件,所述輸入核心模塊22在匹配成功後,會根據輸入設備10的熱插拔類型相應調用所述連接函數模塊或所述斷開函數模塊實現對所述輸入設備10的熱插拔事件的截取。由於所述驅動模塊21、輸入核心模塊22、輸入設備處理模塊23屬於Linux作業系統的內核空間20,因此,本發明可在Linux作業系統的內核空間20中直接獲取輸入設備10的熱插拔事件,從而可以結合在內核空間20中的圖形庫直接渲染技術來實現輸入設備10的熱插拔,能夠提高Linux作業系統的處理效率。實施例二請參閱圖2,並請結合參閱圖1,本實施例的實現輸入設備熱插拔的方法,包括如下步驟:步驟SI,當輸入設備10熱插或熱拔時,驅動模塊21將所述輸入設備10的熱插拔類型(熱插或熱拔)傳遞給輸入核心模塊22,本實施例中,輸入設備10的熱插拔類型是熱插,所述輸入設備10是滑鼠;步驟S2,輸入核心模塊22調用Linux作業系統的系統函數匹配到對應的輸入設備處理模塊23,匹配成功後根據輸入設備10的熱插拔類型在Linux作業系統的內核空間20中直接截取輸入設備10的熱插拔事件;步驟S3,輸入核心模塊22將輸入設備10的熱插拔事件發送給輸入設備處理模塊23,輸入設備處理模塊23根據輸入設備10的熱插拔事件,進行關於輸入設備10的處理。請參閱圖3,本實施例中,所述步驟S2具體包括如下子步驟:步驟S2-1,輸入核心模塊22遍歷驅動模塊21和輸入設備處理模塊23,為新註冊的輸入設備10掛載對應的輸入設備處理模塊23,此步驟S2-2即為上文所述的輸入核心模塊22調用Linux作業系統的系統函數匹配對應的輸入設備處理模塊23的匹配過程;步驟S2-2,輸入核心模塊22掛載成功後調用驅動模塊21中的連接函數模塊;步驟S2-3,輸入核心模塊22截取輸入設備10的熱插事件。
繼續參閱圖3,本實施例中,所述步驟S3具體包括如下子步驟:步驟S3-1,輸入核心模塊22將輸入設備10的熱插事件發送給輸入設備處理模塊23 ;步驟S3-2,輸入設備處理模塊23建立輸入設備10相關的數據結構,允許輸入設備10的輸入事件,由此在Linux作業系統的內核空間20中直接實現輸入設備的熱插拔。實施例三請參閱圖4,並請結合參閱圖1,本實施例與實施例二的區別在於,輸入設備10是鍵盤,輸入設備10的熱插拔類型是熱拔,輸入設備處理模塊23中包括連接函數模塊與斷開函數模塊。本實施例的實現輸入設備熱插拔的方法,具體包括如下步驟:步驟SI,驅動模塊21將輸入設備10的熱插拔類型傳遞給輸入核心模塊22 ;步驟S2-1,輸入核心模塊22遍歷驅動模塊21和輸入設備處理模塊23,為新註銷的輸入設備10卸載對應的輸入設備處理模塊23,此步驟S2-2也為上文所述的輸入核心模塊22調用Linux作業系統的系統函數匹配對應的輸入設備處理模塊23的匹配過程;步驟S2-2,輸入核心模塊22卸載成功後調用輸入設備處理模塊23中的斷開函數模塊;步驟S2-3,輸入核心模塊22截取輸入設備10的熱拔事件;步驟S3-1,輸入核心模塊22將輸入設備10的熱拔事件發送給輸入設備處理模塊23 ;步驟S3-2,輸入設備處理模塊23刪除輸入設備10相關的數據結構,禁止所述輸入設備10的輸入事件,由此在Linux作業系統的內核空間20中直接實現輸入設備的熱插拔。本發明提供的實現輸入設備熱插拔的系統及方法,當輸入設備熱插或熱拔時,驅動模塊將輸入設備的熱插拔類型傳遞給輸入核心模塊;輸入核心模塊調用Linux作業系統的系統函數匹配對應的輸入設備處理模塊,匹配成功後在Linux作業系統的內核空間中直接截取輸入設備的熱插拔事件,並將輸入設備的熱插拔事件發送給輸入設備處理模塊;所述輸入設備處理模塊根據所述輸入設備的熱插拔事件,進行有關所述輸入設備的處理。由於所述驅動模塊、輸入核心模塊及輸入設備處理模塊屬於Linux作業系統的內核空間,因此,本發明可在Linux作業系統的內核空間中直接實現輸入設備的熱插拔技術,可以提高Linux作業系統的處理效率。本說明書中各個實施例採用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對於實施例公開的系統而言,由於與實施例公開的方法相對應,所以描述的比較簡單,相關之處參見方法部分說明即可。專業人員還可以進一步意識到,結合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬體、計算機軟體或者二者的結合來實現,為了清楚地說明硬體和軟體的可互換性,在上述說明中已經按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬體還是軟體方式來執行,取決於技術方案的特定應用和設計約束條件。專業技術人員可以對每個特定的應用來使用不同方法來實現所描述的功能,但是這種實現不應認為超出本發明的範圍。顯然,本領域的技術人員可以對本發明進行各種改動和變型而不脫離本發明的精神和範圍。這樣,倘若本發明的這些修改和變型屬於本發明權利要求及其等同技術的範圍之內,則本發明也意圖包含這些改動和變型在內。
權利要求
1.一種實現輸入設備熱插拔的系統,基於Linux作業系統,其特徵在於,包括分別屬於Linux作業系統的內核空間的驅動模塊、輸入核心模塊和輸入設備處理模塊;當輸入設備熱插或熱拔時,驅動模塊將輸入設備的熱插拔類型傳遞給輸入核心模塊;所述輸入核心模塊調用Linux作業系統的系統函數匹配對應的輸入設備處理模塊,匹配成功後在Linux作業系統的內核空間中直接截取輸入設備的熱插拔事件,並將輸入設備的熱插拔事件發送給輸入設備處理模塊;所述輸入設備處理模塊根據所述輸入設備的熱插拔事件,進行有關所述輸入設備的處理。
2.根據權利要求1所述的實現輸入設備熱插拔的系統,其特徵在於,所述驅動模塊或者所述輸入設備處理模塊包括連接函數模塊與斷開函數模塊,所述連接函數模塊用於將輸入設備加入到Linux作業系統的輸入設備列表中並截取所述輸入設備的熱插事件,所述斷開函數模塊用於將輸入設備從Linux作業系統的輸入設備列表中刪除並截取輸入設備的熱拔事件,所述輸入核心模塊在匹配成功後,根據輸入設備的熱插拔類型調用所述連接函數模塊或所述斷開函數模塊實現對所述輸入設備的熱插拔事件的截取。
3.根據權利要求1或2所述的實現輸入設備熱插拔的系統,其特徵在於,所述輸入設備是滑鼠、鍵盤、觸控螢幕中的一種或多種。
4.一種實現輸入設備熱插拔的方法,其特徵在於,包括如下步驟: 步驟S1:當輸入設備熱插或熱拔時,驅動模塊將輸入設備的熱插拔類型傳遞給輸入核心豐旲塊; 步驟S2:輸入核心模塊調用Linux作業系統的系統函數匹配到對應的輸入設備處理模塊,匹配成功後根據輸入設備的熱插拔類型在Linux作業系統的內核空間中直接截取輸入設備的熱插拔事件; 步驟S3:輸入核心模塊將輸入設備的熱插拔事件發送給輸入設備處理模塊,輸入設備處理模塊根據輸入設備的熱插拔事件,進行關於輸入設備的處理。
5.根據權利要求4所述的實現輸入設備熱插拔的方法,其特徵在於,所述驅動模塊或者所述輸入設備處理模塊包括連接函數模塊和斷開函數模塊,所述連接函數模塊用於將輸入設備加入到Linux作業系統的輸入設備列表中並截取所述輸入設備的熱插事件,所述斷開函數模塊用於將輸入設備從Linux作業系統的輸入設備列表中刪除並截取輸入設備的熱拔事件。
6.根據權利要求5所述的實現輸入設備熱插拔的方法,其特徵在於,當輸入設備熱插時,所述步驟S2具體包括如下子步驟: 輸入核心模塊遍歷驅動模塊和輸入設備處理模塊,並為所述輸入設備掛載對應的輸入設備處理模塊; 輸入核心模塊掛載成功後調用所述連接函數模塊; 輸入核心模塊截取輸入設備的熱插事件。
7.根據權利要求6所述的實現輸入設備熱插拔的方法,其特徵在於,所述步驟S3具體包括如下子步驟: 輸入核心模塊將輸入設備的熱插事件發送給輸入設備處理模塊; 輸入設備處理模塊建立所述輸入設備相關的數據結構,允許所述輸入設備的輸入事件。
8.根據權利要求5所述的實現輸入設備熱插拔的方法,其特徵在於,當輸入設備熱拔時,所述步驟S2具體包括如下子步驟: 輸入核心模塊遍歷驅動模塊和輸入設備處理模塊,為所述輸入設備卸載對應的輸入設備處理模塊; 輸入核心模塊卸載成功後調用所述斷開函數模塊; 輸入核心模塊截取輸入設備的熱拔事件。
9.根據權利要求8所述的實現輸入設備熱插拔的方法,其特徵在於,所述步驟S3具體包括如下子步驟: 輸入核心模塊將輸入設備的熱拔事件發送給輸入設備處理模塊; 輸入設備處理模塊刪除所述輸入設備相關的數據結構,禁止所述輸入設備的輸入事 件。
全文摘要
本發明公開了一種實現輸入設備熱插拔的系統及方法,包括分別屬於Linux作業系統的內核空間的驅動模塊、輸入核心模塊和輸入設備處理模塊;當輸入設備熱插或熱拔時,所述驅動模塊將輸入設備的熱插拔類型傳遞給輸入核心模塊;所述輸入核心模塊調用Linux作業系統的系統函數匹配到對應的輸入設備處理模塊,匹配成功後根據輸入設備的熱插拔類型在Linux作業系統的內核空間中直接截取輸入設備的熱插拔事件;所述輸入核心模塊將輸入設備的熱插拔事件發送給輸入設備處理模塊,輸入設備處理模塊根據輸入設備的熱插拔事件,進行關於輸入設備的處理。本發明可在Linux作業系統的內核空間中直接實現輸入設備的熱插拔技術,可以提高Linux作業系統的處理效率。
文檔編號G06F9/44GK103186373SQ20111045445
公開日2013年7月3日 申請日期2011年12月29日 優先權日2011年12月29日
發明者梁金祥 申請人:盛樂信息技術(上海)有限公司