專利名稱:基于用戶態(tài)網(wǎng)卡驅(qū)動(dòng)的網(wǎng)卡配置方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤指一種基于用戶態(tài)網(wǎng)卡驅(qū)動(dòng)的網(wǎng)卡配置方法及裝置。
背景技術(shù):
隨著信息化的進(jìn)步與發(fā)展,各種各樣的網(wǎng)絡(luò)設(shè)備需要被部署在網(wǎng)絡(luò)拓?fù)渲?,這些 網(wǎng)絡(luò)設(shè)備的主要功能是對(duì)數(shù)據(jù)包進(jìn)行分析、轉(zhuǎn)發(fā)、過(guò)濾等處理。目前,大多數(shù)網(wǎng)絡(luò)設(shè)備廠商 通過(guò)在操作系統(tǒng)內(nèi)核空間中更改網(wǎng)卡驅(qū)動(dòng)及協(xié)議棧來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)設(shè)備的功能。然而,內(nèi)核空 間中的邏輯關(guān)系比較復(fù)雜,資源使用有限,開(kāi)發(fā)難度很大,且更改內(nèi)核空間中的內(nèi)容很容易 引起內(nèi)核空間的不穩(wěn)定。采用用戶態(tài)驅(qū)動(dòng)實(shí)現(xiàn)網(wǎng)絡(luò)設(shè)備的功能使內(nèi)存更容易管理,邏輯更 容易設(shè)計(jì),可使用的庫(kù)函數(shù)更多,且不再需要更改內(nèi)核空間,可以避免更改內(nèi)核空間帶來(lái)的 風(fēng)險(xiǎn)。
發(fā)明人在實(shí)現(xiàn)本發(fā)明過(guò)程中,發(fā)現(xiàn)將網(wǎng)卡驅(qū)動(dòng)移到用戶空間(即用戶態(tài)網(wǎng)卡驅(qū)動(dòng)) 后,用于對(duì)內(nèi)核態(tài)網(wǎng)卡驅(qū)動(dòng)的標(biāo)準(zhǔn)配置工具(如ethtool、ifconfig)都無(wú)法對(duì)網(wǎng)卡進(jìn)行配置。發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種基于用戶態(tài)網(wǎng)卡驅(qū)動(dòng)的網(wǎng)卡配置方法及裝置,用以解決現(xiàn) 有技術(shù)中存在的將網(wǎng)卡驅(qū)動(dòng)移到用戶空間后,無(wú)法對(duì)網(wǎng)卡進(jìn)行配置的問(wèn)題。
一種基于用戶態(tài)網(wǎng)卡驅(qū)動(dòng)的網(wǎng)卡配置方法,包括
接收用戶輸入的待配置網(wǎng)卡的名稱、參數(shù)名稱和參數(shù)值后,在預(yù)設(shè)的參數(shù)名稱與 命令標(biāo)識(shí)ID的對(duì)應(yīng)關(guān)系中獲取所述參數(shù)名稱對(duì)應(yīng)的命令I(lǐng)D ;
在維護(hù)的網(wǎng)卡的名稱、類型、地址指針的對(duì)應(yīng)關(guān)系中獲取所述待配置網(wǎng)卡的名稱 對(duì)應(yīng)的地址指針和類型;
確定獲取的所述待配置網(wǎng)卡的地址指針指向的所述待配置網(wǎng)卡的用戶態(tài)內(nèi)存空 間地址,以及根據(jù)所述命令I(lǐng)D和所述待配置網(wǎng)卡的類型在預(yù)設(shè)的函數(shù)庫(kù)中調(diào)用配置所述 待配置網(wǎng)卡所需的函數(shù);
使用調(diào)用的函數(shù)和所述參數(shù)值在獲取的所述待配置網(wǎng)卡的用戶態(tài)內(nèi)存空間地址 配置所述待配置網(wǎng)卡。
一種基于用戶態(tài)網(wǎng)卡驅(qū)動(dòng)的網(wǎng)卡配置裝置,包括
接收單元,用于接收用戶輸入的待配置網(wǎng)卡的名稱、參數(shù)名稱和參數(shù)值后,在預(yù)設(shè) 的參數(shù)名稱與命令標(biāo)識(shí)ID的對(duì)應(yīng)關(guān)系中獲取所述參數(shù)名稱對(duì)應(yīng)的命令I(lǐng)D ;
獲取單元,用于在維護(hù)的網(wǎng)卡的名稱、類型、地址指針的對(duì)應(yīng)關(guān)系中獲取所述待配 置網(wǎng)卡的名稱對(duì)應(yīng)的地址指針和類型;
確定單元,用于確定獲取的所述待配置網(wǎng)卡的地址指針指向的所述待配置網(wǎng)卡的 用戶態(tài)內(nèi)存空間地址,以及根據(jù)所述命令I(lǐng)D和所述待配置網(wǎng)卡的類型在預(yù)設(shè)的函數(shù)庫(kù)中調(diào)用配置所述待配置網(wǎng)卡所需的函數(shù);配置單元,用于使用調(diào)用的函數(shù)和所述參數(shù)值在獲取的所述待配置網(wǎng)卡的用戶態(tài)內(nèi)存空間地址配置所述待配置網(wǎng)卡。本發(fā)明有益效果如下本發(fā)明實(shí)施例提供的基于用戶態(tài)網(wǎng)卡驅(qū)動(dòng)的網(wǎng)卡配置方法及裝置,通過(guò)接收用戶輸入的待配置網(wǎng)卡的名稱、參數(shù)名稱和參數(shù)值后,在預(yù)設(shè)的參數(shù)名稱與命令標(biāo)識(shí)ID的對(duì)應(yīng)關(guān)系中獲取所述參數(shù)名稱對(duì)應(yīng)的命令I(lǐng)D ;在維護(hù)的網(wǎng)卡的名稱、類型、地址指針的對(duì)應(yīng)關(guān)系中獲取所述待配置網(wǎng)卡的名稱對(duì)應(yīng)的地址指針和類型;確定獲取的所述待配置網(wǎng)卡的地址指針指向的所述待配置網(wǎng)卡的用戶態(tài)內(nèi)存空間地址,以及根據(jù)所述命令I(lǐng)D和所述待配置網(wǎng)卡的類型在預(yù)設(shè)的函數(shù)庫(kù)中調(diào)用配置所述待配置網(wǎng)卡所需的函數(shù);使用調(diào)用的函數(shù)和所述參數(shù)值在獲取的所述待配置網(wǎng)卡的用戶態(tài)內(nèi)存空間地址配置所述待配置網(wǎng)卡。該方案實(shí)現(xiàn)了當(dāng)網(wǎng)卡驅(qū)動(dòng)移到用戶空間后,對(duì)網(wǎng)卡進(jìn)行配置。
圖1為本發(fā)明實(shí)施例中基于用戶態(tài)網(wǎng)卡驅(qū)動(dòng)的網(wǎng)卡配置方法的流程圖;圖2為本發(fā)明實(shí)施例中確定待配置網(wǎng)卡的用戶態(tài)內(nèi)存空間地址和配置待配置網(wǎng)卡所需的函數(shù)的流程圖;圖3為本發(fā)明實(shí)施例中基于用戶態(tài)網(wǎng)卡驅(qū)動(dòng)的網(wǎng)卡配置裝置的結(jié)構(gòu)示意圖;圖4為本發(fā)明實(shí)施例中第一種優(yōu)選的基于用戶態(tài)網(wǎng)卡驅(qū)動(dòng)的網(wǎng)卡配置裝置的結(jié)構(gòu)示意圖;圖5為本發(fā)明實(shí)施例中第二種優(yōu)選的基于用戶態(tài)網(wǎng)卡驅(qū)動(dòng)的網(wǎng)卡配置裝置的結(jié)構(gòu)示意圖;圖6為本發(fā)明實(shí)施例中第三種優(yōu)選的基于用戶態(tài)網(wǎng)卡驅(qū)動(dòng)的網(wǎng)卡配置裝置的結(jié)構(gòu)示意圖。
具體實(shí)施例方式針對(duì)現(xiàn)有技術(shù)中存在的將網(wǎng)卡驅(qū)動(dòng)移到用戶空間后,無(wú)法對(duì)網(wǎng)卡進(jìn)行配置的問(wèn)題,本發(fā)明實(shí)施例提供一種基于用戶態(tài)網(wǎng)卡驅(qū)動(dòng)的網(wǎng)卡配置方法,該方法的流程如圖1所示,具體執(zhí)行步驟如下S10:接收用戶輸入的待配置網(wǎng)卡的名稱、參數(shù)名稱和參數(shù)值后,在預(yù)設(shè)的參數(shù)名稱與命令標(biāo)識(shí)(Identity,ID)的對(duì)應(yīng)關(guān)系中獲取參數(shù)名稱對(duì)應(yīng)的命令I(lǐng)D。當(dāng)用戶需要配置網(wǎng)卡時(shí),首先會(huì)輸入待配置的網(wǎng)卡的名稱、要配置的參數(shù)名稱、以及要設(shè)定的參數(shù)值,例如用戶可以輸入網(wǎng)卡1、速率、100。當(dāng)接收到用戶輸入的網(wǎng)卡1、速率、100后,獲取參數(shù)名稱對(duì)應(yīng)的命令I(lǐng)D,也就是獲
取“速率”對(duì)應(yīng)的命令I(lǐng)D,該命令I(lǐng)D可以是一個(gè)數(shù)值,例如1、2、3......,這些數(shù)值與參數(shù)
名稱是一一對(duì)應(yīng)的,可以預(yù)先設(shè)定參數(shù)名稱與命令I(lǐng)D的對(duì)應(yīng)關(guān)系,例如“速率”對(duì)應(yīng)“I”、“統(tǒng)計(jì)信息”對(duì)應(yīng)“2”......;當(dāng)然命令I(lǐng)D也可以采用其他的方式表示。Sll :在維護(hù)的網(wǎng)卡的名稱、類型、地址指針的對(duì)應(yīng)關(guān)系中獲取待配置網(wǎng)卡的名稱對(duì)應(yīng)的地址指針和類型。
可以預(yù)先維護(hù)網(wǎng)卡的名稱、類型、地址指針的對(duì)應(yīng)關(guān)系,當(dāng)接收到用戶輸入的待配 置網(wǎng)卡的名稱后,就可以根據(jù)待配置網(wǎng)卡的名稱在預(yù)先維護(hù)的對(duì)應(yīng)關(guān)系中獲取對(duì)應(yīng)的地址 指針和類型。
S12 :確定獲取的待配置網(wǎng)卡的地址指針指向的待配置網(wǎng)卡的用戶態(tài)內(nèi)存空間地 址,以及根據(jù)命令I(lǐng)D和待配置網(wǎng)卡的類型在預(yù)設(shè)的函數(shù)庫(kù)中調(diào)用配置待配置網(wǎng)卡所需的 函數(shù)。
S13 :使用調(diào)用的函數(shù)和參數(shù)值在獲取的待配置網(wǎng)卡的用戶態(tài)內(nèi)存空間地址配置 待配置網(wǎng)卡。
當(dāng)確定了配置待配置網(wǎng)卡所需的函數(shù)后,就可以根據(jù)參數(shù)值和調(diào)用的函數(shù)在獲取 的待配置網(wǎng)卡的用戶態(tài)內(nèi)存空間地址配置待配置網(wǎng)卡了。
該方案在接收到用戶輸入的待配置網(wǎng)卡的名稱、參數(shù)名稱和參數(shù)值后,在預(yù)設(shè)的 參數(shù)名稱與命令I(lǐng)D的對(duì)應(yīng)關(guān)系中獲取參數(shù)名稱對(duì)應(yīng)的命令I(lǐng)D ;在維護(hù)的網(wǎng)卡的名稱、類 型、地址指針的對(duì)應(yīng)關(guān)系中獲取待配置網(wǎng)卡的名稱對(duì)應(yīng)的地址指針和類型;確定獲取的待 配置網(wǎng)卡的地址指針指向的待配置網(wǎng)卡的用戶態(tài)內(nèi)存空間地址,以及根據(jù)命令I(lǐng)D和待配 置網(wǎng)卡的類型在預(yù)設(shè)的函數(shù)庫(kù)中調(diào)用配置待配置網(wǎng)卡所需的函數(shù);使用調(diào)用的函數(shù)和參數(shù) 值在獲取的待配置網(wǎng)卡的用戶態(tài)內(nèi)存空間地址配置待配置網(wǎng)卡。這樣即使網(wǎng)卡驅(qū)動(dòng)移到用 戶空間后,也可以對(duì)網(wǎng)卡進(jìn)行配置,從而就實(shí)現(xiàn)了基于用戶態(tài)網(wǎng)卡驅(qū)動(dòng)的網(wǎng)卡配置。
具體的,上述SlO中的在預(yù)設(shè)的參數(shù)名稱與命令I(lǐng)D的對(duì)應(yīng)關(guān)系中獲取參數(shù)名稱對(duì) 應(yīng)的命令I(lǐng)D,具體包括創(chuàng)建網(wǎng)卡配置工具進(jìn)程,調(diào)用創(chuàng)建的網(wǎng)卡配置工具進(jìn)程在預(yù)設(shè)的 參數(shù)名稱與命令I(lǐng)D的對(duì)應(yīng)關(guān)系中獲取參數(shù)名稱對(duì)應(yīng)的命令I(lǐng)D。
在接收到用戶輸入的待配置網(wǎng)卡的名稱、參數(shù)名稱和參數(shù)值后,可以創(chuàng)建網(wǎng)卡配 置工具進(jìn)程,然后通過(guò)調(diào)用創(chuàng)建的網(wǎng)卡配置工具進(jìn)程獲取預(yù)設(shè)的參數(shù)名稱對(duì)應(yīng)的命令I(lǐng)D。
具體的,如圖2所示,上述Sll中的在維護(hù)的網(wǎng)卡的名稱、類型、地址指針的對(duì)應(yīng)關(guān) 系中獲取待配置網(wǎng)卡的名稱對(duì)應(yīng)的地址指針和類型,具體包括
SllO :調(diào)用網(wǎng)卡配置工具進(jìn)程向網(wǎng)卡配置服務(wù)進(jìn)程發(fā)送攜帶待配置網(wǎng)卡的名稱、 命令I(lǐng)D和參數(shù)值的第一網(wǎng)卡配置請(qǐng)求,網(wǎng)卡配置服務(wù)進(jìn)程是在操作系統(tǒng)啟動(dòng)時(shí)創(chuàng)建的。
在操作系統(tǒng)啟動(dòng)后,創(chuàng)建網(wǎng)卡配置服務(wù)進(jìn)程和用戶態(tài)驅(qū)動(dòng)進(jìn)程,網(wǎng)卡配置服務(wù)進(jìn) 程和用戶態(tài)驅(qū)動(dòng)進(jìn)程共享網(wǎng)卡映射到用戶空間的地址,即用戶態(tài)內(nèi)存空間地址,其中網(wǎng)卡 配置服務(wù)進(jìn)程與網(wǎng)卡配置工具進(jìn)程采用客戶端(Client,C)/服務(wù)器端(Serviced)架構(gòu)實(shí) 現(xiàn),網(wǎng)卡配置服務(wù)進(jìn)程作為服務(wù)器端,網(wǎng)卡配置工具進(jìn)程作為客戶端,它們之間通過(guò)本地套 接字進(jìn)行通信。
當(dāng)然還可以采用另外一種方式,就是創(chuàng)建一個(gè)驅(qū)動(dòng)及服務(wù)進(jìn)程,在驅(qū)動(dòng)及服務(wù)進(jìn) 程中創(chuàng)建網(wǎng)卡配置服務(wù)線程和網(wǎng)卡配置工具線程,網(wǎng)卡配置服務(wù)線程和網(wǎng)卡配置工具線程 共享網(wǎng)卡映射到用戶空間的地址,即用戶態(tài)內(nèi)存空間地址,網(wǎng)卡配置服務(wù)線程和網(wǎng)卡配置 工具線程采用C/S架構(gòu)實(shí)現(xiàn),網(wǎng)卡配置服務(wù)線程相當(dāng)于上述的網(wǎng)卡配置進(jìn)程作為服務(wù)器 端,網(wǎng)卡配置工具線程相當(dāng)于上述的網(wǎng)卡配置工具進(jìn)程作為客戶端。
創(chuàng)建的網(wǎng)卡配置工具進(jìn)程將用戶輸入的參數(shù)名稱轉(zhuǎn)換為命令I(lǐng)D后,調(diào)用網(wǎng)卡配 置工具進(jìn)程向網(wǎng)卡配置服務(wù)進(jìn)程發(fā)送攜帶待配置網(wǎng)卡的名稱、命令I(lǐng)D和參數(shù)值的第一網(wǎng) 卡配置請(qǐng)求,該第一網(wǎng)卡配置請(qǐng)求是通過(guò)本地套接字發(fā)送的。
上述第一網(wǎng)卡配置請(qǐng)求采用的具體格式如下所示,其字段包括命令I(lǐng)D的cmd (如獲取設(shè)備速率、獲取統(tǒng)計(jì)信息等)、網(wǎng)卡的名稱devname、以及一個(gè)可變長(zhǎng)度變量data。data的內(nèi)容根據(jù)命令的不同而填充不同的內(nèi)容,比如,獲得速率時(shí),data字段將擴(kuò)展為一個(gè)uintl6類型;獲得統(tǒng)計(jì)信息時(shí),data字段將擴(kuò)展為一個(gè)字符串。假設(shè)用戶輸入的參數(shù)值為100時(shí),那么將data字段賦值為“100”。
struct nelif coniig }uint32_t cmd;char devname[16];uintS t data
;
};
struct netii■二config *cf;_
cf= malloc (sizeof(struct netif config) + sizeof(uintl 6_t));uintl6_t *data = (uintl6」*)cf、->data;
^data = 100;Slll :在網(wǎng)卡配置服務(wù)進(jìn)程接收到第一網(wǎng)卡配置請(qǐng)求后,調(diào)用網(wǎng)卡配置服務(wù)進(jìn)程將第一網(wǎng)卡配置請(qǐng)求存儲(chǔ)在預(yù)設(shè)或申請(qǐng)的內(nèi)存空間中,在網(wǎng)卡信息表中查找包含待配置網(wǎng)卡的名稱的表項(xiàng),網(wǎng)卡信息表中包含網(wǎng)卡的名稱、類型、地址指針的對(duì)應(yīng)關(guān)系,一個(gè)對(duì)應(yīng)關(guān)系是一個(gè)表項(xiàng);在查找到的表項(xiàng)中獲取待配置網(wǎng)卡的名稱對(duì)應(yīng)的地址指針和類型。當(dāng)網(wǎng)卡配置服務(wù)進(jìn)程接收到第一網(wǎng)卡配置請(qǐng)求后,可以調(diào)用網(wǎng)卡配置服務(wù)進(jìn)程將該第一網(wǎng)卡配置請(qǐng)求存儲(chǔ)在預(yù)設(shè)或申請(qǐng)的內(nèi)存空間中,預(yù)設(shè)的內(nèi)存空間的容量大小可以是固定的,可以是不固定的;而申請(qǐng)的內(nèi)存空間可以是根據(jù)第一配置請(qǐng)求的長(zhǎng)度來(lái)確定。可以維護(hù)一張網(wǎng)卡信息表,該信息表中每個(gè)表項(xiàng)adapter可以是一塊網(wǎng)卡的信息,具體格式如下所示port_id表示該網(wǎng)卡在網(wǎng)絡(luò)設(shè)備中的編號(hào),type表示網(wǎng)卡的類型,C0nf_0ps表示網(wǎng)卡所支持的配置操作,ethdev代表網(wǎng)卡的詳細(xì)信息,可以包括網(wǎng)卡的用戶態(tài)內(nèi)存空間地址、MTU等等,eth_name表示網(wǎng)卡的名稱。同一塊網(wǎng)卡的eth_name和netif_config命令結(jié)構(gòu)體中的devname是相同的,通過(guò)netif_config的devname字段可以查詢到網(wǎng)卡的名稱對(duì)應(yīng)的adapter信息。Struct adapter {Uint8_t port—id Uint:8_t type;Struct netif config ops *conf_ops; struct eth dev *ethdev;Char eth_name[ 16];}
具體的,如圖3所示,上述S12中的確定獲取的待配置網(wǎng)卡的地址指針指向的待配 置網(wǎng)卡的用戶態(tài)內(nèi)存空間地址,以及根據(jù)命令I(lǐng)D和待配置網(wǎng)卡的類型在預(yù)設(shè)的函數(shù)庫(kù)中 調(diào)用配置待配置網(wǎng)卡所需的函數(shù),具體包括
S120:調(diào)用網(wǎng)卡配置服務(wù)進(jìn)程向用戶態(tài)驅(qū)動(dòng)進(jìn)程發(fā)送攜帶待配置網(wǎng)卡的地址指針 的內(nèi)存空間地址獲取請(qǐng)求,根據(jù)命令I(lǐng)D和待配置網(wǎng)卡的類型在預(yù)設(shè)的函數(shù)庫(kù)中調(diào)用配置 待配置網(wǎng)卡所需的函數(shù),用戶態(tài)驅(qū)動(dòng)進(jìn)程是在操作系統(tǒng)啟動(dòng)時(shí)創(chuàng)建的。
繼續(xù)沿用上例,可以根據(jù)adapter中netif_config的cmd和type字段在預(yù)設(shè)的 函數(shù)庫(kù)中調(diào)用配置網(wǎng)卡所需的函數(shù),也就是調(diào)用conf_0pS中相應(yīng)的函數(shù)對(duì)網(wǎng)卡進(jìn)行相應(yīng) 的配置,不同類型的網(wǎng)卡在初始化時(shí)會(huì)設(shè)置其對(duì)應(yīng)的conf_0pS,如下所示
switch (cmd) { case CONFiG GSET:adapter.conf_ops->get_settings(&adaptei; config—value); break; case CONFIG—SSET:adfipter.con r_ops->set_settings(&a.dapter, config value); break;
case CONFIG—GSTATS:
adapter.conf^ops->get_stats(&adapter, config—value); break; case CONFIG—GLiNK:
adapter.conf^ops->get_!ink(&ada.pter, config—value); break;
Default:
Break;
} S121 :在用戶態(tài)驅(qū)動(dòng)進(jìn)程接收到內(nèi)存空間地址獲取請(qǐng)求后,調(diào)用用戶態(tài)驅(qū)動(dòng)進(jìn)程根據(jù)接收到的內(nèi)存空間地址獲取請(qǐng)求中攜帶的待配置網(wǎng)卡的地址指針確定待配置網(wǎng)卡的用戶態(tài)內(nèi)存空間地址,并反饋給網(wǎng)卡配置服務(wù)進(jìn)程。較佳的,上述基于用戶態(tài)網(wǎng)卡驅(qū)動(dòng)的網(wǎng)卡配置方法還包括在操作系統(tǒng)啟動(dòng)時(shí),創(chuàng)建所述用戶態(tài)驅(qū)動(dòng)進(jìn)程;調(diào)用創(chuàng)建的用戶態(tài)驅(qū)動(dòng)進(jìn)程將網(wǎng)卡的內(nèi)核態(tài)內(nèi)存空間地址映射為用戶態(tài)內(nèi)存空間地址。在操作系統(tǒng)啟動(dòng)后,創(chuàng)建用戶態(tài)驅(qū)動(dòng)進(jìn)程,調(diào)用創(chuàng)建的用戶態(tài)驅(qū)動(dòng)進(jìn)程通過(guò)掃描PCI總線識(shí)別網(wǎng)卡,為網(wǎng)卡的內(nèi)核態(tài)內(nèi)存空間地址建立頁(yè)面,并存儲(chǔ)在設(shè)備文件中;然后通過(guò)設(shè)備文件將網(wǎng)卡的內(nèi)核態(tài)內(nèi)存空間地址所對(duì)應(yīng)的頁(yè)面通過(guò)函數(shù)-ap映射為用戶態(tài)內(nèi)存空間地址。具體的,上述申請(qǐng)內(nèi)存空間的過(guò)程,具體包括調(diào)用網(wǎng)卡配置工具進(jìn)程確定待配置網(wǎng)卡的名稱、命令I(lǐng)D和參數(shù)值的字符串長(zhǎng)度,并向網(wǎng)卡配置服務(wù)進(jìn)程發(fā)送攜帶待配置網(wǎng)卡的名稱、字符串長(zhǎng)度的第二網(wǎng)卡配置請(qǐng)求,網(wǎng)卡配置進(jìn)程是在操作系統(tǒng)啟動(dòng)時(shí)創(chuàng)建的;在網(wǎng)卡配置服務(wù)進(jìn)程接收到第二網(wǎng)卡配置請(qǐng)求后,根據(jù)字符串長(zhǎng)度向操作系統(tǒng)申請(qǐng)容量大于等于字符串長(zhǎng)度的內(nèi)存空間,調(diào)用網(wǎng)卡配置服務(wù)進(jìn)程向網(wǎng)卡配置工具進(jìn)程發(fā)送網(wǎng)卡配置響應(yīng)。由于需要一定的內(nèi)存空間來(lái)存儲(chǔ)第一網(wǎng)卡配置請(qǐng)求,這時(shí)就可以首先來(lái)向操作系統(tǒng)申請(qǐng)一定的內(nèi)存空間。具體可以是首先調(diào)用網(wǎng)卡配置工具進(jìn)程確定待配置網(wǎng)卡的名稱、命令I(lǐng)D和參數(shù)值的字符串長(zhǎng)度,申請(qǐng)的內(nèi)存空間的容量需要足以存放第一網(wǎng)卡配置請(qǐng)求,也就是說(shuō)申請(qǐng)的內(nèi)存空間的容量至少要大于該字符串長(zhǎng)度,然后向配置服務(wù)進(jìn)程發(fā)送攜帶待配置網(wǎng)卡的名稱和確定的字符串長(zhǎng)度的第二網(wǎng)卡配置請(qǐng)求,第二網(wǎng)卡配置請(qǐng)求也可以采用netif_config的命令格式,其中字符串長(zhǎng)度可以使用netif_config中的cmd字段來(lái)表
/Jn ο網(wǎng)卡配置服務(wù)進(jìn)程接收到第二網(wǎng)卡配置請(qǐng)求后,根據(jù)字符串長(zhǎng)度向操作系統(tǒng)申請(qǐng)容量大于等于字符串長(zhǎng)度的內(nèi)存空間,調(diào)用網(wǎng)卡配置服務(wù)進(jìn)程向網(wǎng)卡配置工具進(jìn)程發(fā)送網(wǎng)卡配置響應(yīng)。
當(dāng)網(wǎng)卡配置工具進(jìn)程接收到該網(wǎng)卡配置響應(yīng)后,再調(diào)用網(wǎng)卡配置工具進(jìn)程向網(wǎng)卡 配置服務(wù)進(jìn)程發(fā)送第一網(wǎng)卡配置請(qǐng)求,第一網(wǎng)卡配置請(qǐng)求使用netif_Config中的cmd字段 標(biāo)識(shí)的命令I(lǐng)D。
netif_config中的cmd字段可以采用以下示例來(lái)標(biāo)識(shí)
#define CMDID_LEN OxFFFFFFFF //命令長(zhǎng)度的 ID
#define CMDID_GGET 0x00000001 //獲取網(wǎng)卡信息命令的 ID
#define CMDID_GSET 0x00000002 //設(shè)置網(wǎng)卡命令的 ID
較佳的,上述S12中的使用調(diào)用的函數(shù)和參數(shù)值在獲取的待配置網(wǎng)卡的用戶態(tài)內(nèi) 存空間地址配置待配置網(wǎng)卡之后,還包括調(diào)用網(wǎng)卡配置服務(wù)進(jìn)程向網(wǎng)卡配置工具進(jìn)程發(fā) 送網(wǎng)卡配置結(jié)果;在網(wǎng)卡配置工具進(jìn)程接收到網(wǎng)卡配置結(jié)果后,調(diào)用網(wǎng)卡配置工具進(jìn)程向 用戶顯示網(wǎng)卡配置結(jié)果。
在配置完網(wǎng)卡后,可以調(diào)用網(wǎng)卡配置工具進(jìn)程將網(wǎng)卡配置結(jié)果顯示給用戶,這樣 用戶就可以直觀地看到網(wǎng)卡配置的結(jié)果。
在內(nèi)核態(tài)網(wǎng)卡驅(qū)動(dòng)中,網(wǎng)卡配置工具中的部分命令所獲取的信息是根據(jù)中斷來(lái)完 成的,當(dāng)網(wǎng)卡的另一端down掉或者網(wǎng)線被拔后,網(wǎng)卡會(huì)產(chǎn)生一個(gè)中斷,用于通知鏈路狀態(tài) 的改變。由于在用戶態(tài)網(wǎng)卡驅(qū)動(dòng)中,不支持中斷,鏈路狀態(tài)的改變是依靠讀取寄存器來(lái)判 斷。
由于將網(wǎng)卡驅(qū)動(dòng)移到用戶空間,所有對(duì)網(wǎng)卡的操作都是在用戶態(tài)下進(jìn)行,不用通 過(guò)內(nèi)核層,這樣就使得應(yīng)用程序與網(wǎng)卡可以更直接地交互;同時(shí),數(shù)據(jù)包直接傳送到用戶空 間的程序中進(jìn)行處理并轉(zhuǎn)發(fā),不再需要先將數(shù)據(jù)從內(nèi)核態(tài)拷貝到用戶態(tài),經(jīng)過(guò)處理再拷貝 到內(nèi)核進(jìn)行轉(zhuǎn)發(fā);并且,數(shù)據(jù)包處理程序可以使用用戶空間的所有庫(kù)資源,這樣就極大地方 便了開(kāi)發(fā)過(guò)程,并提升了開(kāi)發(fā)效率。
基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例提供一種基于用戶態(tài)網(wǎng)卡驅(qū)動(dòng)的網(wǎng)卡配置裝 置,該裝置可以設(shè)置或獲取網(wǎng)卡參數(shù),結(jié)構(gòu)如圖3所示,包括
接收單元30,用于接收用戶輸入的待配置網(wǎng)卡的名稱、參數(shù)名稱和參數(shù)值后,在預(yù) 設(shè)的參數(shù)名稱與命令I(lǐng)D的對(duì)應(yīng)關(guān)系中獲取參數(shù)名稱對(duì)應(yīng)的命令I(lǐng)D。
獲取單元31,用于在維護(hù)的網(wǎng)卡的名稱、類型、地址指針的對(duì)應(yīng)關(guān)系中獲取待配置 網(wǎng)卡的名稱對(duì)應(yīng)的地址指針和類型。
確定單元32,用于確定獲取的待配置網(wǎng)卡的地址指針指向的待配置網(wǎng)卡的用戶態(tài) 內(nèi)存空間地址,以及根據(jù)命令I(lǐng)D和待配置網(wǎng)卡的類型在預(yù)設(shè)的函數(shù)庫(kù)中調(diào)用配置待配置 網(wǎng)卡所需的函數(shù)。
配置單元33,用于使用調(diào)用的函數(shù)和參數(shù)值在獲取的待配置網(wǎng)卡的用戶態(tài)內(nèi)存空 間地址配置待配置網(wǎng)卡。
具體的,上述接收單元30,具體用于創(chuàng)建網(wǎng)卡配置工具進(jìn)程,調(diào)用創(chuàng)建的網(wǎng)卡配 置工具進(jìn)程在預(yù)設(shè)的參數(shù)名稱與命令I(lǐng)D的對(duì)應(yīng)關(guān)系獲取參數(shù)名稱對(duì)應(yīng)的命令I(lǐng)D。
具體的,上述獲取單元31,具體用于調(diào)用網(wǎng)卡配置工具進(jìn)程向網(wǎng)卡配置服務(wù)進(jìn) 程發(fā)送攜帶待配置網(wǎng)卡的名稱、命令I(lǐng)D和參數(shù)值的第一網(wǎng)卡配置請(qǐng)求,網(wǎng)卡配置服務(wù)進(jìn)程 是在操作系統(tǒng)啟動(dòng)時(shí)創(chuàng)建的;在網(wǎng)卡配置服務(wù)進(jìn)程接收到第一網(wǎng)卡配置請(qǐng)求后,調(diào)用網(wǎng)卡配置服務(wù)進(jìn)程將第一網(wǎng)卡配置請(qǐng)求存儲(chǔ)在預(yù)設(shè)或申請(qǐng)的內(nèi)存空間中,在網(wǎng)卡信息表中查找包含待配置網(wǎng)卡的名稱的表項(xiàng),網(wǎng)卡信息表中包含網(wǎng)卡的名稱、類型、地址指針的對(duì)應(yīng)關(guān)系,一個(gè)對(duì)應(yīng)關(guān)系是一個(gè)表項(xiàng);在查找到的表項(xiàng)中獲取待配置網(wǎng)卡的名稱對(duì)應(yīng)的地址指針和類型。具體的,上述確定單元32,具體用于調(diào)用網(wǎng)卡配置服務(wù)進(jìn)程向用戶態(tài)驅(qū)動(dòng)進(jìn)程發(fā)送攜帶待配置網(wǎng)卡的地址指針的內(nèi)存空間地址獲取請(qǐng)求,根據(jù)命令I(lǐng)D和待配置網(wǎng)卡的類型在預(yù)設(shè)的函數(shù)庫(kù)中調(diào)用配置待配置網(wǎng)卡所需的函數(shù),用戶態(tài)驅(qū)動(dòng)進(jìn)程是在操作系統(tǒng)啟動(dòng)時(shí)創(chuàng)建的;在用戶態(tài)驅(qū)動(dòng)進(jìn)程接收到內(nèi)存空間地址獲取請(qǐng)求后,調(diào)用用戶態(tài)驅(qū)動(dòng)進(jìn)程根據(jù)接收到的內(nèi)存空間地址獲取請(qǐng)求中攜帶的待配置網(wǎng)卡的地址指針確定待配置網(wǎng)卡的用戶態(tài)內(nèi)存空間地址,并反饋給網(wǎng)卡配置服務(wù)進(jìn)程。具體的,上述獲取單元31,具體用于調(diào)用網(wǎng)卡配置工具進(jìn)程確定待配置網(wǎng)卡的名稱、命令I(lǐng)D和參數(shù)值的字符串長(zhǎng)度,并向網(wǎng)卡配置服務(wù)進(jìn)程發(fā)送攜帶待配置網(wǎng)卡的名稱、字符串長(zhǎng)度的第二網(wǎng)卡配置請(qǐng)求;在網(wǎng)卡配置服務(wù)進(jìn)程接收到第二網(wǎng)卡配置請(qǐng)求后,根據(jù)字符串長(zhǎng)度向操作系統(tǒng)申請(qǐng)容量大于等于字符串長(zhǎng)度的內(nèi)存空間,調(diào)用網(wǎng)卡配置服務(wù)進(jìn)程向網(wǎng)卡配置工具進(jìn)程發(fā)送網(wǎng)卡配置響應(yīng)。下面詳細(xì)介紹三種優(yōu)選的基于用戶態(tài)網(wǎng)卡驅(qū)動(dòng)的網(wǎng)卡配置裝置的結(jié)構(gòu)第一種優(yōu)選的基于用戶態(tài)網(wǎng)卡驅(qū)動(dòng)的網(wǎng)卡配置裝置如圖4所示,在圖3的基礎(chǔ)上還包括顯示單元34,用于調(diào)用網(wǎng)卡配置服務(wù)進(jìn)程向網(wǎng)卡配置工具進(jìn)程發(fā)送網(wǎng)卡配置結(jié)果;在網(wǎng)卡配置工具進(jìn)程接收到網(wǎng)卡配置結(jié)果后,調(diào)用網(wǎng)卡配置工具進(jìn)程向用戶顯示網(wǎng)卡配置結(jié)果。第二種優(yōu)選的基于用戶態(tài)網(wǎng)卡驅(qū)動(dòng)的網(wǎng)卡配置裝置如圖5所示,在圖4的基礎(chǔ)上還包括映射單元35,用于在操作系統(tǒng)啟動(dòng)時(shí),創(chuàng)建用戶態(tài)驅(qū)動(dòng)進(jìn)程;調(diào)用創(chuàng)建的用戶態(tài)驅(qū)動(dòng)進(jìn)程將網(wǎng)卡的內(nèi)核態(tài)內(nèi)存空間地址映射為用戶態(tài)內(nèi)存空間地址。第三種優(yōu)選的基于用戶態(tài)網(wǎng)卡驅(qū)動(dòng)的網(wǎng)卡配置裝置如圖6所示,可以通過(guò)網(wǎng)卡配置工具進(jìn)程60實(shí)現(xiàn)上述接收單元30和顯示單元34的功能,可以通過(guò)網(wǎng)卡配置服務(wù)線程610實(shí)現(xiàn)上述獲取單元31、確定單元32和配置單元33的功能,可以通過(guò)用戶態(tài)驅(qū)動(dòng)線程611實(shí)現(xiàn)上述映射單元36的功能,其中網(wǎng)卡配置服務(wù)線程610和用戶態(tài)驅(qū)動(dòng)線程611為驅(qū)動(dòng)及服務(wù)進(jìn)程61中的兩個(gè)線程。顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1.一種基于用戶態(tài)網(wǎng)卡驅(qū)動(dòng)的網(wǎng)卡配置方法,其特征在于,包括接收用戶輸入的待配置網(wǎng)卡的名稱、參數(shù)名稱和參數(shù)值后,在預(yù)設(shè)的參數(shù)名稱與命令標(biāo)識(shí)ID的對(duì)應(yīng)關(guān)系中獲取所述參數(shù)名稱對(duì)應(yīng)的命令I(lǐng)D ;在維護(hù)的網(wǎng)卡的名稱、類型、地址指針的對(duì)應(yīng)關(guān)系中獲取所述待配置網(wǎng)卡的名稱對(duì)應(yīng)的地址指針和類型;確定獲取的所述待配置網(wǎng)卡的地址指針指向的所述待配置網(wǎng)卡的用戶態(tài)內(nèi)存空間地址,以及根據(jù)所述命令I(lǐng)D和所述待配置網(wǎng)卡的類型在預(yù)設(shè)的函數(shù)庫(kù)中調(diào)用配置所述待配置網(wǎng)卡所需的函數(shù);使用調(diào)用的函數(shù)和所述參數(shù)值在獲取的所述待配置網(wǎng)卡的用戶態(tài)內(nèi)存空間地址配置所述待配置網(wǎng)卡。
2.如權(quán)利要求1所述的方法,其特征在于,在預(yù)設(shè)的參數(shù)名稱與命令I(lǐng)D的對(duì)應(yīng)關(guān)系中獲取所述參數(shù)名稱對(duì)應(yīng)的命令I(lǐng)D,具體包括創(chuàng)建網(wǎng)卡配置工具進(jìn)程,調(diào)用創(chuàng)建的網(wǎng)卡配置工具進(jìn)程在預(yù)設(shè)的參數(shù)名稱與命令I(lǐng)D 的對(duì)應(yīng)關(guān)系獲取所述參數(shù)名稱對(duì)應(yīng)的命令I(lǐng)D。
3.如權(quán)利要求2所述的方法,其特征在于,在維護(hù)的網(wǎng)卡的名稱、類型、地址指針的對(duì)應(yīng)關(guān)系中獲取所述待配置網(wǎng)卡的名稱對(duì)應(yīng)的地址指針和類型,具體包括調(diào)用所述網(wǎng)卡配置工具進(jìn)程向所述網(wǎng)卡配置服務(wù)進(jìn)程發(fā)送攜帶所述待配置網(wǎng)卡的名稱、所述命令I(lǐng)D和所述參數(shù)值的第一網(wǎng)卡配置請(qǐng)求,所述網(wǎng)卡配置服務(wù)進(jìn)程是在操作系統(tǒng)啟動(dòng)時(shí)創(chuàng)建的;在所述網(wǎng)卡配置服務(wù)進(jìn)程接收到所述第一網(wǎng)卡配置請(qǐng)求后,調(diào)用所述網(wǎng)卡配置服務(wù)進(jìn)程將所述第一網(wǎng)卡配置請(qǐng)求存儲(chǔ)在預(yù)設(shè)或申請(qǐng)的內(nèi)存空間中,在網(wǎng)卡信息表中查找包含所述待配置網(wǎng)卡的名稱的表項(xiàng),所述網(wǎng)卡信息表中包含網(wǎng)卡的名稱、類型、地址指針的對(duì)應(yīng)關(guān)在查找到的表項(xiàng)中獲取所述待配置網(wǎng)卡的名稱對(duì)應(yīng)的地址指針和類型。
4.如權(quán)利要求3所述的方法,其特征在于,確定獲取的所述待配置網(wǎng)卡的地址指針指向的所述待配置網(wǎng)卡的用戶態(tài)內(nèi)存空間地址,以及根據(jù)所述命令I(lǐng)D和所述待配置網(wǎng)卡的類型在預(yù)設(shè)的函數(shù)庫(kù)中調(diào)用配置所述待配置網(wǎng)卡所需的函數(shù),具體包括調(diào)用所述網(wǎng)卡配置服務(wù)進(jìn)程向用戶態(tài)驅(qū)動(dòng)進(jìn)程發(fā)送攜帶所述待配置網(wǎng)卡的地址指針的內(nèi)存空間地址獲取請(qǐng)求,根據(jù)所述命令I(lǐng)D和所述待配置網(wǎng)卡的類型在預(yù)設(shè)的函數(shù)庫(kù)中調(diào)用配置所述待配置網(wǎng)卡所需的函數(shù),所述用戶態(tài)驅(qū)動(dòng)進(jìn)程是在所述操作系統(tǒng)啟動(dòng)時(shí)創(chuàng)建的;在所述用戶態(tài)驅(qū)動(dòng)進(jìn)程接收到所述內(nèi)存空間地址獲取請(qǐng)求后,調(diào)用所述用戶態(tài)驅(qū)動(dòng)進(jìn)程根據(jù)接收到的所述內(nèi)存空間地址獲取請(qǐng)求中攜帶的所述待配置網(wǎng)卡的地址指針確定所述待配置網(wǎng)卡的用戶態(tài)內(nèi)存空間地址,并反饋給所述網(wǎng)卡配置服務(wù)進(jìn)程。
5.如權(quán)利要求4所述的方法,其特征在于,還包括在所述操作系統(tǒng)啟動(dòng)時(shí),創(chuàng)建所述用戶態(tài)驅(qū)動(dòng)進(jìn)程;調(diào)用創(chuàng)建的用戶態(tài)驅(qū)動(dòng)進(jìn)程將所述網(wǎng)卡的內(nèi)核態(tài)內(nèi)存空間地址映射為用戶態(tài)內(nèi)存空間地址。
6.如權(quán)利要求3或4任一所述的方法,其特征在于,申請(qǐng)內(nèi)存空間的過(guò)程,具體包括調(diào)用所述網(wǎng)卡配置工具進(jìn)程確定所述待配置網(wǎng)卡的名稱、所述命令I(lǐng)D和所述參數(shù)值的字符串長(zhǎng)度,并向網(wǎng)卡配置服務(wù)進(jìn)程發(fā)送攜帶所述待配置網(wǎng)卡的名稱、所述字符串長(zhǎng)度的第二網(wǎng)卡配置請(qǐng)求;在所述網(wǎng)卡配置服務(wù)進(jìn)程接收到所述第二網(wǎng)卡配置請(qǐng)求后,根據(jù)所述字符串長(zhǎng)度向所述操作系統(tǒng)申請(qǐng)容量大于等于所述字符串長(zhǎng)度的內(nèi)存空間,調(diào)用所述網(wǎng)卡配置服務(wù)進(jìn)程向所述網(wǎng)卡配置工具進(jìn)程發(fā)送網(wǎng)卡配置響應(yīng)。
7.如權(quán)利要求6所述的方法,其特征在于,使用調(diào)用的函數(shù)和所述參數(shù)值在獲取的所述待配置網(wǎng)卡的用戶態(tài)內(nèi)存空間地址配置所述待配置網(wǎng)卡之后,還包括調(diào)用所述網(wǎng)卡配置服務(wù)進(jìn)程向所述網(wǎng)卡配置工具進(jìn)程發(fā)送網(wǎng)卡配置結(jié)果;在所述網(wǎng)卡配置工具進(jìn)程接收到所述網(wǎng)卡配置結(jié)果后,調(diào)用所述網(wǎng)卡配置工具進(jìn)程向所述用戶顯示所述網(wǎng)卡配置結(jié)果。
8.一種基于用戶態(tài)網(wǎng)卡驅(qū)動(dòng)的網(wǎng)卡配置裝置,其特征在于,包括接收單元,用于接收用戶輸入的待配置網(wǎng)卡的名稱、參數(shù)名稱和參數(shù)值后,在預(yù)設(shè)的參數(shù)名稱與命令標(biāo)識(shí)ID的對(duì)應(yīng)關(guān)系中獲取所述參數(shù)名稱對(duì)應(yīng)的命令I(lǐng)D ;獲取單元,用于在維護(hù)的網(wǎng)卡的名稱、類型、地址指針的對(duì)應(yīng)關(guān)系中獲取所述待配置網(wǎng)卡的名稱對(duì)應(yīng)的地址指針和類型;確定單元,用于確定獲取的所述待配置網(wǎng)卡的地址指針指向的所述待配置網(wǎng)卡的用戶態(tài)內(nèi)存空間地址,以及根據(jù)所述命令I(lǐng)D和所述待配置網(wǎng)卡的類型在預(yù)設(shè)的函數(shù)庫(kù)中調(diào)用配置所述待配置網(wǎng)卡所需的函數(shù);配置單元,用于使用調(diào)用的函數(shù)和所述參數(shù)值在獲取的所述待配置網(wǎng)卡的用戶態(tài)內(nèi)存空間地址配置所述待配置網(wǎng)卡。
9.如權(quán)利要求8所述的裝置,其特征在于,所述接收單元,具體用于創(chuàng)建網(wǎng)卡配置工具進(jìn)程,調(diào)用創(chuàng)建的網(wǎng)卡配置工具進(jìn)程在預(yù)設(shè)的參數(shù)名稱與命令I(lǐng)D 的對(duì)應(yīng)關(guān)系獲取所述參數(shù)名稱對(duì)應(yīng)的命令I(lǐng)D。
10.如權(quán)利要求9所述的裝置,其特征在于,所述獲取單元,具體用于調(diào)用所述網(wǎng)卡配置工具進(jìn)程向所述網(wǎng)卡配置服務(wù)進(jìn)程發(fā)送攜帶所述待配置網(wǎng)卡的名稱、所述命令I(lǐng)D和所述參數(shù)值的第一網(wǎng)卡配置請(qǐng)求,所述網(wǎng)卡配置服務(wù)進(jìn)程是在操作系統(tǒng)啟動(dòng)時(shí)創(chuàng)建的;在所述網(wǎng)卡配置服務(wù)進(jìn)程接收到所述第一網(wǎng)卡配置請(qǐng)求后,調(diào)用所述網(wǎng)卡配置服務(wù)進(jìn)程將所述第一網(wǎng)卡配置請(qǐng)求存儲(chǔ)在預(yù)設(shè)或申請(qǐng)的內(nèi)存空間中,在網(wǎng)卡信息表中查找包含所述待配置網(wǎng)卡的名稱的表項(xiàng),所述網(wǎng)卡信息表中包含網(wǎng)卡的名稱、類型、地址指針的對(duì)應(yīng)關(guān)系,一個(gè)對(duì)應(yīng)關(guān)系是一個(gè)表項(xiàng);在查找到的表項(xiàng)中獲取所述待配置網(wǎng)卡的名稱對(duì)應(yīng)的地址指針和類型。
11.如權(quán)利要求10所述的裝置,其特征在于,所述確定單元,具體用于調(diào)用所述網(wǎng)卡配置服務(wù)進(jìn)程向用戶態(tài)驅(qū)動(dòng)進(jìn)程發(fā)送攜帶所述待配置網(wǎng)卡的地址指針的內(nèi)存空間地址獲取請(qǐng)求,根據(jù)所述命令I(lǐng)D和所述待配置網(wǎng)卡的類型在預(yù)設(shè)的函數(shù)庫(kù)中調(diào)用配置所述待配置網(wǎng)卡所需的函數(shù),所述用戶態(tài)驅(qū)動(dòng)進(jìn)程是在所述操作系統(tǒng)啟動(dòng)時(shí)創(chuàng)建的;在所述用戶態(tài)驅(qū)動(dòng)進(jìn)程接收到所述內(nèi)存空間地址獲取請(qǐng)求后,調(diào)用所述用戶態(tài)驅(qū)動(dòng)進(jìn)程根據(jù)接收到的所述內(nèi)存空間地址獲取請(qǐng)求中攜帶的所述待配置網(wǎng)卡的地址指針確定所述待配置網(wǎng)卡的用戶態(tài)內(nèi)存空間地址,并反饋給所述網(wǎng)卡配置服務(wù)進(jìn)程。
12.如權(quán)利要求11所述的裝置,其特征在于,還包括映射單元,用于在所述操作系統(tǒng)啟動(dòng)時(shí),創(chuàng)建所述用戶態(tài)驅(qū)動(dòng)進(jìn)程;調(diào)用創(chuàng)建的用戶態(tài)驅(qū)動(dòng)進(jìn)程將所述網(wǎng)卡的內(nèi)核態(tài)內(nèi)存空間地址映射為用戶態(tài)內(nèi)存空間地址。
13.如權(quán)利要求10或11任一所述的裝置,其特征在于,所述獲取單元,具體用于 調(diào)用所述網(wǎng)卡配置工具進(jìn)程確定所述待配置網(wǎng)卡的名稱、所述命令I(lǐng)D和所述參數(shù)值的字符串長(zhǎng)度,并向網(wǎng)卡配置服務(wù)進(jìn)程發(fā)送攜帶所述待配置網(wǎng)卡的名稱、所述字符串長(zhǎng)度的第二網(wǎng)卡配置請(qǐng)求;在所述網(wǎng)卡配置服務(wù)進(jìn)程接收到所述第二網(wǎng)卡配置請(qǐng)求后,根據(jù)所述字符串長(zhǎng)度向所述操作系統(tǒng)申請(qǐng)容量大于等于所述字符串長(zhǎng)度的內(nèi)存空間,調(diào)用所述網(wǎng)卡配置服務(wù)進(jìn)程向所述網(wǎng)卡配置工具進(jìn)程發(fā)送網(wǎng)卡配置響應(yīng)。
14.如權(quán)利要求13所述的裝置,其特征在于,還包括顯示單元,用于調(diào)用所述網(wǎng)卡配置服務(wù)進(jìn)程向所述網(wǎng)卡配置工具進(jìn)程發(fā)送網(wǎng)卡配置結(jié)果;在所述網(wǎng)卡配置工具進(jìn)程接收到所述網(wǎng)卡配置結(jié)果后,調(diào)用所述網(wǎng)卡配置工具進(jìn)程向所述用戶顯示所述網(wǎng)卡配置結(jié)果。
全文摘要
本發(fā)明公開(kāi)了一種基于用戶態(tài)網(wǎng)卡驅(qū)動(dòng)的網(wǎng)卡配置方法及裝置,該方法包括接收用戶輸入的待配置網(wǎng)卡的名稱、參數(shù)名稱和參數(shù)值后,在預(yù)設(shè)的參數(shù)名稱與命令I(lǐng)D的對(duì)應(yīng)關(guān)系中獲取參數(shù)名稱對(duì)應(yīng)的命令I(lǐng)D;在維護(hù)的網(wǎng)卡的名稱、類型、地址指針的對(duì)應(yīng)關(guān)系中獲取待配置網(wǎng)卡的名稱對(duì)應(yīng)的地址指針和類型;確定獲取的待配置網(wǎng)卡的地址指針指向的所述待配置網(wǎng)卡的用戶態(tài)內(nèi)存空間地址,以及根據(jù)命令I(lǐng)D和所述待配置網(wǎng)卡的類型在預(yù)設(shè)的函數(shù)庫(kù)中調(diào)用配置所述待配置網(wǎng)卡所需的函數(shù);使用調(diào)用的函數(shù)和參數(shù)值在獲取的所述待配置網(wǎng)卡的用戶態(tài)內(nèi)存空間地址配置待配置網(wǎng)卡。該方案實(shí)現(xiàn)了當(dāng)網(wǎng)卡驅(qū)動(dòng)移到用戶空間后,對(duì)網(wǎng)卡進(jìn)行配置。
文檔編號(hào)G06F9/44GK102999330SQ201210450860
公開(kāi)日2013年3月27日 申請(qǐng)日期2012年11月12日 優(yōu)先權(quán)日2012年11月12日
發(fā)明者戈舒寧 申請(qǐng)人:北京神州綠盟信息安全科技股份有限公司, 北京神州綠盟科技有限公司