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

基于Linux內核的判斷硬件平臺的方法及裝置與流程

文檔序號:12362907閱讀:415來源:國知局
基于Linux內核的判斷硬件平臺的方法及裝置與流程

本發(fā)明涉及內核技術領域,具體涉及一種基于Linux內核的判斷硬件平臺的方法及裝置。



背景技術:

網絡設備(防火墻、交換機、服務器等)有高中低端產品的區(qū)分,同一公司的硬件平臺可能有很多款,而不同的硬件平臺可能來自不同的硬件供應商,而使用的產品代碼就一套,編譯出可以跑在不同硬件平臺的產品鏡像文件,也就是說產品代碼中需要區(qū)分不同的硬件平臺實現不同平臺的自動探測與加載。

硬件平臺判斷方法有很多,可以讀取總線信息或特定的硬件特征進行區(qū)分,一般是在用戶態(tài)實現平臺的區(qū)分判斷,但是有些針對Linux內核的編程需要在內核剛啟動時就判斷出硬件平臺類型來做不同的操作,比如針對grub參數的設置,一般是修改/boot/grub/grub.conf文件,但是該文件是針對所有平臺的設置,有些特殊平臺可能需要增加或刪除部分特殊參數,那就是需要在內核進行單獨寫死設置,而grub的參數解析一般通過early_param()函數進行,該函數在內核調用setup_arch()時就會被parse_early_param()調用,而setup_arch()在內核初始化函數start_kernel()的調用位置是非??壳暗?,此時判斷硬件平臺就比較困難。



技術實現要素:

針對現有技術存在的不足和缺陷,本發(fā)明提供一種基于Linux內核的判斷硬件平臺的方法及裝置。

一方面,本發(fā)明實施例提出一種基于Linux內核的判斷硬件平臺的方法,包括:

S1、在Linux內核初始化早期探測CPU階段獲取CPU類型;

S2、通過調用在Linux內核中預設的硬件平臺類型判斷的代碼,給預先在內核源碼中聲明的表示主平臺類型的全局變量和表示子平臺類型的全局變量賦值;

S3、在Linux內核后續(xù)啟動或運行過程中根據所述全局變量確定出硬件平臺類型。

另一方面,本發(fā)明實施例提出一種基于Linux內核的判斷硬件平臺的裝置,包括:

獲取單元,用于在Linux內核初始化早期探測CPU階段獲取CPU類型;

賦值單元,通過調用在Linux內核中預設的硬件平臺類型判斷的代碼,給預先在內核源碼中聲明的表示主平臺類型的全局變量和表示子平臺類型的全局變量賦值;

確定單元,用于在Linux內核后續(xù)啟動或運行過程中根據所述全局變量確定出硬件平臺類型。

本發(fā)明具有如下有益效果:

通過自定義主平臺及子平臺枚舉類型并聲明全局變量,在Linux內核初始化早期探測CPU階段根據探測到的CPU類型判斷對應的硬件平臺類型并賦值給全局變量,后續(xù)內核啟動或運行過程中根據所述全局變量即可確定出硬件平臺類型,便于內核編程中根據硬件平臺類型做區(qū)分操作。

附圖說明

圖1為本發(fā)明基于Linux內核的判斷硬件平臺的方法一實施例的流程示意圖;

圖2為本發(fā)明基于Linux內核的判斷硬件平臺的裝置一實施例的結構示意圖。

具體實施方式

為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。

參看圖1,本實施例公開一種基于Linux內核的判斷硬件平臺的方法,包括:

S1、在Linux內核初始化早期探測中央處理器(CPU)階段獲取CPU類型;

在具體應用中,可以在Linux內核初始化早期獲取early_cpu_init.cpu_detect()調用的結果,得到CPU類型。

S2、通過調用在Linux內核中預設的硬件平臺類型判斷的代碼,給預先在內核源碼中聲明的表示主平臺類型的全局變量和表示子平臺類型的全局變量賦值;

本實施例中,在內核中可以定義兩個枚舉類型main_platform_type(主平臺類型)和sub_platform_type(子平臺類型),同時聲明兩個全局變量用于平臺判斷的賦值及其他函數引用;主平臺類型大致可分為工控機、服務器、虛擬機等大類,子平臺類型為一個大類下細分的小類(如工控機下的小類D525、H61、C206、C04等),兩個枚舉類型可根據實際的硬件類型進行定義并可擴展新增。

對于需要判斷平臺類型的硬件設備需要提前查看對應的CPU類型,以備在內核代碼中進行判斷使用;可以利用cat/proc/cpuinfo查看CPU信息,

/proc/cpuinfo文件的內容包括有:

vendor_id:GenuineIntel;

cpu family:6;

model:23;

model name:Intel(R)Core(TM)2Quad CPU Q9400@2.66GHz。

各個名詞含義解釋如下:

vendor_id:CPU制造商。

cpu family:CPU產品系列代號,此分類標識英特爾微處理器的品牌以及屬于第幾代產品。例如,當今的P6系列(第六代)英特爾微處理器包括英特爾Celeron、Pentium II、Pentium II Xeon、Pendum IⅡ和Pentium III Xeon處理器。

“1”表示為8086和80186級芯片;

“2”表示為286級芯片;

“3”表示為386級芯片;

“4”表示為486級芯片(SX、DX、:DX2、DX4);

“5”表示為P5級芯片(經典奔騰和多能奔騰);

“6”表示為P6級芯片(包括Celeron、PentiumII、PenfiumIII系列);

“F”代表奔騰Ⅳ。

model:CPU屬于其系列中的哪一代的代號?!靶吞枴本幪柨梢宰層⑻貭栕R別微處理器的制造技術以及屬于第幾代設計(例如型號4)。型號與系列通常是相互配合使用的,用以確定您的計算機中所安裝的處理器是屬于處理器系列中的哪一種特定類型。在與英特爾聯系時,此信息通常用以識別特定的處理器。

model name:CPU的名字及其編號、標稱主頻

然后需要在內核中增加平臺判斷的代碼,給聲明的主平臺類型及子平臺類型全局變量賦值,以備后續(xù)使用,比如:服務器的C620硬件設備對應的的cpu family是6,model是23,則其對應的代碼大致如下:

If(c->x86_family==6&&c->x86_model==23)

{

g_main_platform_type=MAIN_PLATFORM_TYPE_SERVER;

g_sub_platform_type=SUB_PLATFORM_TYPE_SERVERC620;

}

Else if()

{……}

上述代碼中,g_main_platform_type和g_sub_platform_type分別為主平臺類型和子平臺類型全局變量,MAIN_PLATFORM_TYPE_SERVER和SUB_PLATFORM_TYPE_SERVERC620分別為cpu family是6,model是23的硬件設備的主平臺類型和子平臺類型。

該部分代碼可根據實際硬件類型進行修改、新增及擴展。

S3、在Linux內核后續(xù)啟動或運行過程中根據所述全局變量確定出硬件平臺類型。

主平臺及子平臺類型全局變量在內核啟動早期賦值后就可以用于判斷平臺類型了,后續(xù)的內核啟動或運行過程中均可以根據前述全局變量判斷平臺類型,針對不同平臺的進行不同操作,解決不同硬件可能出現的不同問題。

本發(fā)明實施例提供的基于Linux內核的判斷硬件平臺的方法,通過自定義主平臺及子平臺枚舉類型并聲明全局變量,在Linux內核初始化早期探測CPU階段根據探測到的CPU類型判斷對應的硬件平臺類型并賦值給全局變量,后續(xù)內核啟動或運行過程中根據所述全局變量即可確定出硬件平臺類型,便于內核編程中根據硬件平臺類型做區(qū)分操作。

參看圖2,本實施例公開一種基于Linux內核的判斷硬件平臺的裝置,包括:

獲取單元1,用于在Linux內核初始化早期探測CPU階段獲取CPU類型;

在具體應用中,獲取單元1可以在Linux內核初始化早期獲取early_cpu_init.cpu_detect()調用的結果,得到CPU類型。

賦值單元2,通過調用在Linux內核中預設的硬件平臺類型判斷的代碼,給預先在內核源碼中聲明的表示主平臺類型的全局變量和表示子平臺類型的全局變量賦值;

確定單元3,用于在Linux內核后續(xù)啟動或運行過程中根據所述全局變量確定出硬件平臺類型。

本發(fā)明實施例提供的基于Linux內核的判斷硬件平臺的裝置,通過自定義主平臺及子平臺枚舉類型并聲明全局變量,在Linux內核初始化早期探測CPU階段根據探測到的CPU類型判斷對應的硬件平臺類型并賦值給全局變量,后續(xù)內核啟動或運行過程中根據所述全局變量即可確定出硬件平臺類型,特別是針對grub參數的內核寫死操作,因不同平臺設置的grub參數可能不同,需要在解析grub參數前及早的判斷出硬件平臺做區(qū)分操作,本發(fā)明有助于內核編程中根據硬件平臺類型做區(qū)分操作,

本發(fā)明提供了一種方法及裝置在內核剛初始化階段能夠判斷區(qū)分硬件平臺,從而在內核中可根據自身需要及硬件特性做特殊操作,比如設置“noapic”或者“crashkernel”,內核判斷出硬件平臺后可根據自身需要直接在內核進行區(qū)分設置,而不再需要人為修改grub配置文件,這對于一些已售設備的grub修改平滑升級鏡像是非常必要的。

本領域內的技術人員應明白,本申請的實施例可提供為方法、系統(tǒng)、或計算機程序產品。因此,本申請可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產品的形式。

本申請是參照根據本申請實施例的方法、設備(系統(tǒng))、和計算機程序產品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理設備的處理器以產生一個機器,使得通過計算機或其他可編程數據處理設備的處理器執(zhí)行的指令產生用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。

這些計算機程序指令也可存儲在能引導計算機或其他可編程數據處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的制造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。

這些計算機程序指令也可裝載到計算機或其他可編程數據處理設備上,使得在計算機或其他可編程設備上執(zhí)行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程設備上執(zhí)行的指令提供用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。

需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。術語“上”、“下”等指示的方位或位置關系為基于附圖所示的方位或位置關系,僅是為了便于描述本發(fā)明和簡化描述,而不是指示或暗示所指的裝置或元件必須具有特定的方位、以特定的方位構造和操作,因此不能理解為對本發(fā)明的限制。除非另有明確的規(guī)定和限定,術語“安裝”、“相連”、“連接”應做廣義理解,例如,可以是固定連接,也可以是可拆卸連接,或一體地連接;可以是機械連接,也可以是電連接;可以是直接相連,也可以通過中間媒介間接相連,可以是兩個元件內部的連通。對于本領域的普通技術人員而言,可以根據具體情況理解上述術語在本發(fā)明中的具體含義。

本發(fā)明的說明書中,說明了大量具體細節(jié)。然而能夠理解的是,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結構和技術,以便不模糊對本說明書的理解。類似地,應當理解,為了精簡本發(fā)明公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應將該公開的方法解釋呈反映如下意圖:即所要求保護的本發(fā)明要求比在每個權利要求中所明確記載的特征更多的特征。更確切地說,如權利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權利要求書由此明確地并入該具體實施方式,其中每個權利要求本身都作為本發(fā)明的單獨實施例。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。本發(fā)明并不局限于任何單一的方面,也不局限于任何單一的實施例,也不局限于這些方面和/或實施例的任意組合和/或置換。而且,可以單獨使用本發(fā)明的每個方面和/或實施例或者與一個或更多其他方面和/或其實施例結合使用。

最后應說明的是:以上各實施例僅用以說明本發(fā)明的技術方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分或者全部技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發(fā)明各實施例技術方案的范圍,其均應涵蓋在本發(fā)明的權利要求和說明書的范圍當中。

當前第1頁1 2 3 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1