欢迎来到天天文库
浏览记录
ID:30084769
大小:23.63 KB
页数:18页
时间:2018-12-26
《块设备和字符设备精简总结》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划块设备和字符设备精简总结 linux设备驱动分3类:字符设备驱动、块设备驱动、网络设备驱动。废话少说: 直接贴图展示: 1、字符设备结构体描述:cdev structcdev{ structkobjectkobj;/*内嵌的kobject对象*/ strcutmodule*owner;/*所属模块*/ structfile_operations*ops;/*文件操作结构体*/ struc
2、tlist_headlist; dev_tdev;/*设备号,dev_t实质是一个32位整,12位为主设备号,20位为次设备号,提取主次设备号的方法:MAJOR,MINOR,生成dev_t的方法:MKDEV*/ unsignedintcount; }; 2、内核提供了一组函数来操作cdev结构体 voidcdev_init(structcdev*,structfile_operations*);/*初始化cdev的成员,并且建立cdev与file_operation的连接*/目的-通过该培训员工可对保安
3、行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 structcdev*cdev_alloc(void);/*动态申请一个cdev的内存空间*/ voidcdev_put(structcdev*p); intcdev_add(structcdev*,dev_t,unsigned);/*添加一个cdev,完成字符的注册*/voidcdev_del(s
4、tructcdev*);/*删除一个cdev,完成字符的注销*/ 在调用cdev_add函数向系统注册字符设备之前,应该先调用register_chrdev_region()函数或是alloc_chrdev_region()函数向系统申请设备号;模型为: intregister_chrdev_region(dev_tfrom,unsignedcount,constchar*name); intalloc_chrdev_region(dev_t*dev,unsignedbaseminor,unsignedco
5、unt,constchar*name) 在系统调用cdev_del函数从系统注销字符设备后,uegister_chrdev_region()应该释放之前申请的设备号,该函数原型为: uegister_chrdev_region(dev_tfrom,unsignedcount) 3、关于file_operations的内容请参考下篇分析 下面代码是基于虚拟的globalmem设备进行字符设备的分析,具体在linux中设备驱动远要比这个复杂。/*目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发
6、展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 *Aglobalmemdriverasanexampleofchardevicedrivers * *TheinitialdeveloperoftheoriginalcodeisBarrySong *.AllRightsReserved. */ #include #include #include #include #i
7、nclude #include #include #include #include #include #include #defineGLOBALMEM_SIZE0x1000/*全局内存最大4K字节*/ #defineMEM_CLEAR0x1/*清0全局内存*/ #defineGLOBALMEM_MAJOR250/*预设的globalmem的主设备号*/目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战
8、略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 staticintglobalmem_major=GLOBALMEM_MAJOR; /*globalmem设备结构体*/ structglobalmem_dev{ structcdevcdev;/*cdev结构体*/ unsignedcharmem[GLOBALME
此文档下载收益归作者所有