- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
User-space驱动程式-网路前瞻技术室
Driver 核心模組 vs 應用程式 應用程式啟動後從頭到尾都只執行同一件任務. 模組被載入核心之後必須先向核心註冊它自己. ?init_module()函式(模組的入口點)任務是將模組的功能準備好 以便事後可被invocation(調用). ?cleanup_module()在模組離開之前必須要被呼叫. 模組只能與核心連結所以模組只能呼叫核心所提供的程式 ex: printfk(). 由於上一點,模組的原始碼不能引入一般的標頭檔. ?有關核心相關事物放在 /usr/src/linux下的 include/linux 與 include/asm/ 目錄下的標頭檔. 使用者空間與核心空間 模組存活在kernel space(核心空間)而應用程式存在user space(使用者空間). 作業系統必須負責讓程式得以獨立運作並保護系統資源避免非授權的存取. 由CPU來保護系統軟體所以CPU本身提供了不同層級的作業模式(operating modality). Unix系統提供兩個層級而現在CPU也至少有兩種層級,故Unix系統只使用最高與最低層級,Unix核心運作在最高層級(supervisor mode)應用程式運作在最低層級(user mode). execution mode:包括kernel-space 與user-space分別有各自的memory mapping(記憶體對應關係)的關係與各自的address space(定址空間). insmod 載入 ?insmod對模組的作用:將模組內的任何unresolved symbol(懸置 符號)連結到目前核心(函式庫)的符號表. ?核心如何支援insmod? 依賴定義在kernel/module.c的system call函式: 1) sys_create_module():配置一塊可以容納模組的核心記憶空間. 2) sys_get_kernel_syms():傳回核心符號表,解決模組的懸置符號. 3) sys_init_module():將insmod改好的relocated object code移到 預先配置的核心空間. 系統呼叫大略表: kernel/ 目錄執行 egrep “sys_.*\)$” *.c 版本依存性 模組與連結對象核心息息相關每當升級何新版本時模組就必須再新版本核心下重新編譯一次. 編譯器會在ELF(executable Linking and Format).的.modifo(chap 11)區定義_module_kernel_version符號 insmod會依照此符號與當時的核心作比較. 定義在linux/module.h. 可使用insmod –f來略過版本檢查. 針對特定版本的核心來編譯模組必須引入該版本核心的標頭檔?再Makefile定義一個KERNELDIR環境變數讓他指另一個不同的位置. 核心符號表 模組化驅動程式所需的[核心全域項目(函式與變數)]的位置都紀錄在符號表裡 可從/proc/ksyms取的此表. 若模組能被順利載入核心,模組所釋放的符號也會成為核心符號的一部分. 模組所釋出的符號可以被新模組使用?新模組可以疊在其他模組之上. ex: msdos檔案系統得仰賴fat模組所釋出的符號 模組的生與死 init_module()會註冊模組所提供的任何facility(功能性). 模組可以註冊許多不同類型的facility,對於每一個facility都有一個特定的核心函式來完成其註冊程序. 傳給核心註冊函式的引數:facility註冊名稱,指標(指向此facility的資料結構). facility種類:序列阜,雜項裝置,/proc檔案,作業領域(executable domain),管制線路(line discipline). Init_module的錯誤處置 註冊失敗:系統沒有足夠空間或某資源已被其他驅動程式佔用… 模組自己要負責回復(undo)到註冊失敗之前的狀態,如果init_module()在中途失敗,模組必須自己主動註銷(unregister)那些已經註冊成功的facility. 不能藉由重新載入模組來重新註冊facility,也不太可能註銷他們,因為需要當初註冊所用的相同指標. 使用goto解決. 卸載模組 使用rmmod可卸載(unload)沒用的模組. 原理: rmmod觸發delete_module() system call,如果模組的用量為零,則delete_module()會呼叫模組本身的cleanup_module(
您可能关注的文档
- -厦门物联网行业协会.DOC
- -欢迎光临中国工商银行苏黎世网站.DOC
- 2001第五期欧亚汽车维修技术研讨会SAM电脑即为车身电脑在.DOC
- 2005春场营销学课程教学大纲-眉山广播电视大学.DOC
- 2005年第3期-上海微系统与信息技术研究所.DOC
- 2006~2007学年第一学期理工学院环境科学-暨南大学理工学院.DOC
- 2007-2008年福州三中高二历史必修三阶段考试卷.DOC
- 2007人才培养模式创新区申报书.DOC
- 2007亚洲户外广告大赏展览会参展商资讯制作-台北广告代理商业.PPT
- 2007年集团学校-中国高职高专教育网.PPT
- VSAN系统架构详细配置方案.DOC
- WebGIS的网络传输协议优点.PPT
- WEIGELWEIGEL变送器WEIGEL数显表WEIGEL变送器WEIGEL.DOC
- WhatisAsianDevelopmentBankADB什么是亚洲-国家节能中心.PPT
- WNS10-12YQ天然气锅炉用户需求书-苏中药业集团.DOC
- WSN节点定位技术及能量管理问题研究徐可毕业论文开题报告PPT.PPT
- WER2018普及赛——信息时代竞赛规则.DOC
- WEBOFSCIENCE引文数据库检索平台WEB百链数据库使用百.PPT
- XDCG2018-A-008厦门大学生命科学学院教学-厦门大学资产处.DOC
- XDCS2018-A-015动物代谢分析监测系统磋商文件-厦门大学资产处.DOC
最近下载
- 仁爱版初中英语九年级上册全册教案.pdf VIP
- 新建热网首站项目土建施工和设备安装工程技术方案.pdf VIP
- 故障码详解.ppt VIP
- NB-T11409-2023水电工程费用构成及概(估)算费用标准.docx VIP
- 导弹的诞生和发展教学课件PPT.ppt
- 发电厂和变电站工作票填写规范培训教案详解.ppt VIP
- 注册土木工程师(水土保持方向)案例题整理.docx VIP
- 系统架构设计:构建高可用、可扩展的IT系统培训课件.pptx VIP
- 河堤开挖出水池出水箱涵穿堤管道施工方案样本.doc VIP
- 人教版(PEP)新教材小学一年级英语上册Unit 2My first class 复习课件.pptx
原创力文档


文档评论(0)