版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、linux 設(shè)備模型簡(jiǎn)介設(shè)備模型簡(jiǎn)介設(shè)備模型概述(1)Linux 2.6內(nèi)核最初為了應(yīng)付電源管理的需要,提出了一個(gè)設(shè)備模型來管理所有的設(shè)備。在物理上,外設(shè)之間是有一種層次關(guān)系的,比如把一個(gè)U盤插到筆記本上,實(shí)際上這個(gè)U盤是接在一個(gè)USB Hub上,USB Hub又是接在USB 2.0 Host Controller (EHCI)上,最終EHCI又是一個(gè)掛在PCI Bus上的設(shè)備。這里的一個(gè)層次關(guān)系是:PCI-EHCI-USB Hub-USB Disk。如果操作系統(tǒng)要進(jìn)入休眠狀態(tài),首先要逐層通知所有的外設(shè)進(jìn)入休眠模式,然后整個(gè)系統(tǒng)才可以休眠。因此,需要有一個(gè)樹狀的結(jié)構(gòu)可以把所有的外設(shè)組織起來。這
2、就是最初建立Linux設(shè)備模型的目的。設(shè)備模型概述(2)Linux設(shè)備模型給我們帶來的便利遠(yuǎn)不止如此。既然已經(jīng)建立了一個(gè)組織所有設(shè)備和驅(qū)動(dòng)的樹狀結(jié)構(gòu),用戶就可以通過這棵樹去遍歷所有的設(shè)備,建立設(shè)備和驅(qū)動(dòng)程序之間的聯(lián)系,根據(jù)類型不同也可以對(duì)設(shè)備進(jìn)行歸類,這樣就可以更清晰的去“看”這顆枝繁葉茂的大樹。另外,Linux驅(qū)動(dòng)模型把很多設(shè)備共有的一些操作抽象出來,大大減少了重復(fù)造輪子的可能。同時(shí)Linux設(shè)備模型提供了一些輔助的機(jī)制,比如引用計(jì)數(shù),讓開發(fā)者可以安全高效的開發(fā)驅(qū)動(dòng)程序。達(dá)成了以上這些好處之后,我們還得到了一個(gè)非常方便的副產(chǎn)品,這就是sysfs-一個(gè)虛擬的文件系統(tǒng)。sysfs給用戶提供了一個(gè)
3、從用戶空間去訪問內(nèi)核設(shè)備的方法,它在Linux里的路徑是/sys。這個(gè)目錄并不是存儲(chǔ)在硬盤上的真實(shí)的文件系統(tǒng),只有在系統(tǒng)啟動(dòng)之后才會(huì)建起來sysfs文件系統(tǒng) sysfs文件系統(tǒng)是一個(gè)類似于proc文件系統(tǒng)的特殊文件系統(tǒng),用于將系統(tǒng)中的設(shè)備組織成層次結(jié)構(gòu),并向用戶模式程序提供詳細(xì)的內(nèi)核數(shù)據(jù)結(jié)構(gòu)信息,從而時(shí)用戶空間程序可以設(shè)置內(nèi)核屬性 Linux 統(tǒng)一設(shè)備模型又是以兩種基本數(shù)據(jù)結(jié)構(gòu)進(jìn)行樹型和鏈表型結(jié)構(gòu)組織的: kobject與kset內(nèi)核kobject(1)sysfs是內(nèi)核提供給用戶的一個(gè)設(shè)備層次結(jié)構(gòu)的視圖,而內(nèi)核設(shè)備層次構(gòu)建的最基本單元就是kobject類似于C+中的基類,它嵌入于更大的對(duì)象的對(duì)
4、象中-所謂的容器-用來描述設(shè)備模型的組件。如bus,devices, drivers 都是典型的容器。這些容器就是通過kobject連接起來了,形成了一個(gè)樹狀結(jié)構(gòu)。這個(gè)樹狀結(jié)構(gòu)就與sysfs向?qū)?yīng)。內(nèi)核kobject(2)kobject主要提供三方面功能:1) 引用計(jì)數(shù)2) sysfs表示:每個(gè)在內(nèi)核中注冊(cè)的kobject都對(duì)應(yīng)于sysfs文件系統(tǒng)的一個(gè)目錄,目錄下的文件代表kobject的屬性3) 設(shè)備熱插拔內(nèi)核kobject(3)struct kobject const char*name;/名稱struct list_headentry;/同類kobjects的鏈表struct kobj
5、ect*parent;/父對(duì)象struct kset*kset;/所屬集合struct kobj_type*ktype;/對(duì)象類型struct sysfs_dirent*sd;/sysfs文件系統(tǒng)中與該對(duì)象對(duì)應(yīng)的文件節(jié)點(diǎn)路徑指針struct krefkref;/引用計(jì)數(shù)unsigned int state_initialized:1;unsigned int state_in_sysfs:1;unsigned int state_add_uevent_sent:1;unsigned int state_remove_uevent_sent:1;unsigned int uevent_suppr
6、ess:1;內(nèi)核kobject(4) 每個(gè)kobject都會(huì)有一個(gè)屬性kobj_typestruct kobj_typevoid (*release)(struct kobject *kobj); /釋放kobject和其他占用資源的函數(shù)struct sysfs_ops *sysfs_ops;/操作屬性的方法struct attribute *default_attrs; /屬性數(shù)組; struct attributeconst char *name;/屬性的名稱struct module *owner;/只用擁有該屬性的模塊,已經(jīng)不常使用mode_t mode;/屬性讀寫權(quán)限;struct
7、sysfs_opsssize_t (*show)(struct kobject *,struct attribute *,char *);/讀屬性操作函數(shù)ssize_t (*store)(struct kobject *,struct attribute *,const char *,size_t); /寫屬性操作函數(shù);內(nèi)核kobject(5)添加屬性文件:int sysfs_create_file(struct kobject *kobj,const struct attribute *attr);刪除屬性文件:void sysfs_remove_file(struct kobject *k
8、obj , const struct attribute *attr);內(nèi)核kobject(6)內(nèi)核ksetstruct kset struct list_head list;/*連接所包含的kobject對(duì)象的鏈表首地址*/ spinlock_t list_lock;/*用于避免競(jìng)態(tài)的自旋鎖*/ struct kobject kobj; /*嵌入的kobject*/ struct kset_uevent_ops * uevent_ops; /*指向熱插拔操作表的指針*/;kobject通過kset組織成層次化結(jié)構(gòu),kset是具有相同類型的kobject的集合。所有屬于同一個(gè)ksets對(duì)象的parent都指向該ksets的kobject。kset最重要的是建立上層(sub-system)和下層的(k
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年滬教版選修6地理上冊(cè)月考試卷含答案
- 2025年外研銜接版高一歷史下冊(cè)階段測(cè)試試卷
- 2025年蘇教版選擇性必修1歷史下冊(cè)階段測(cè)試試卷含答案
- 2025年教科新版九年級(jí)生物上冊(cè)月考試卷含答案
- 2025年外研版選擇性必修1歷史下冊(cè)階段測(cè)試試卷
- 2025年滬科版選擇性必修3化學(xué)上冊(cè)階段測(cè)試試卷含答案
- 2025年冀教版九年級(jí)歷史下冊(cè)階段測(cè)試試卷
- 2025年度中央廚房設(shè)備定期檢查與維護(hù)合同4篇
- 2025年度租賃合同范本(含轉(zhuǎn)租規(guī)定)2篇
- 2025年度高端面包屋品牌加盟及產(chǎn)品訂購(gòu)合同4篇
- 圖像識(shí)別領(lǐng)域自適應(yīng)技術(shù)-洞察分析
- 個(gè)體戶店鋪?zhàn)赓U合同
- 禮盒業(yè)務(wù)銷售方案
- 二十屆三中全會(huì)精神學(xué)習(xí)試題及答案(100題)
- 小學(xué)五年級(jí)英語(yǔ)閱讀理解(帶答案)
- 仁愛版初中英語(yǔ)單詞(按字母順序排版)
- (正式版)YS∕T 5040-2024 有色金屬礦山工程項(xiàng)目可行性研究報(bào)告編制標(biāo)準(zhǔn)
- 小學(xué)一年級(jí)拼音天天練
- 新概念英語(yǔ)第二冊(cè)考評(píng)試卷含答案(第49-56課)
- 【奧運(yùn)會(huì)獎(jiǎng)牌榜預(yù)測(cè)建模實(shí)證探析12000字(論文)】
- 保安部工作計(jì)劃
評(píng)論
0/150
提交評(píng)論