当前位置: 首页 > news >正文

江苏广宇建设集团有限公司 网站自媒体平台源码

江苏广宇建设集团有限公司 网站,自媒体平台源码,百度实时热搜榜,来宾建设工程造价网站一个内核模块应该由以下几部分组成。 第一部分#xff0c;头文件部分。一般的内核模块#xff0c;都需要 include 下面两个头文件#xff1a; #include linux/module.h #include linux/init.h 第二部分#xff0c;定义一些函数#xff0c;用于处理内核…一个内核模块应该由以下几部分组成。 第一部分头文件部分。一般的内核模块都需要 include 下面两个头文件 #include linux/module.h #include linux/init.h 第二部分定义一些函数用于处理内核模块的主要逻辑。例如打开、关闭、读取、写入设备的函数或者响应中断的函数。 例如logibm.c 里面就定义了 logibm_open。logibm_close 就是处理打开和关闭的定义了 logibm_interrupt 就是用来响应中断的。再如lp.c 里面就定义了 lp_readlp_write 就是处理读写的。 第三部分定义一个 file_operations 结构。设备是可以通过文件系统的接口进行访问的。对于某种文件系统的操作都是放在 file_operations 里面的。例如 ext4 就定义了这么一个结构里面都是 ext4_xxx 之类的函数。设备要想被文件系统的接口操作也需要定义这样一个结构。 例如lp.c 里面就定义了这样一个结构。 static const struct file_operations lp_fops {.owner THIS_MODULE,.write lp_write,.unlocked_ioctl lp_ioctl, #ifdef CONFIG_COMPAT.compat_ioctl lp_compat_ioctl, #endif.open lp_open,.release lp_release, #ifdef CONFIG_PARPORT_1284.read lp_read, #endif.llseek noop_llseek, }; 在 logibm.c 里面我们找不到这样的结构是因为它属于众多输入设备的一种而输入设备的操作被统一定义在 drivers/input/input.c 里面logibm.c 只是定义了一些自己独有的操作。 static const struct file_operations input_devices_fileops {.owner THIS_MODULE,.open input_proc_devices_open,.poll input_proc_devices_poll,.read seq_read,.llseek seq_lseek,.release seq_release, }; 第四部分定义整个模块的初始化函数和退出函数用于加载和卸载这个 ko 的时候调用。 例如 lp.c 就定义了 lp_init_module 和 lp_cleanup_modulelogibm.c 就定义了 logibm_init 和 logibm_exit。 第五部分调用 module_init 和 module_exit分别指向上面两个初始化函数和退出函数。 第六部分声明一下 lisense调用 MODULE_LICENSE。有了这六部分一个内核模块就基本合格了可以工作了。 打开字符设备 在字符设备驱动的内核模块加载的时候最重要的一件事情就是注册这个字符设备。注册的方式是调用 __register_chrdev_region注册字符设备的主次设备号和名称然后分配一个 struct cdev 结构将 cdev 的 ops 成员变量指向这个模块声明的 file_operations。然后cdev_add 会将这个字符设备添加到内核中一个叫作 struct kobj_map *cdev_map 的结构来统一管理所有字符设备。 写入字符设备 写入一个字符设备就是用文件系统的标准接口 write参数文件描述符 fd在内核里面调用的 sys_write在 sys_write 里面根据文件描述符 fd 得到 struct file 结构。 一个字符设备要能够工作需要三部分配合。 第一有一个设备驱动程序的 ko 模块里面有模块初始化函数、中断处理函数、设备操作函数。这里面封装了对于外部设备的操作。加载设备驱动程序模块的时候模块初始化函数会被调用。在内核维护所有字符设备驱动的数据结构 cdev_map 里面注册我们就可以很容易根据设备号找到相应的设备驱动程序。 第二在 /dev 目录下有一个文件表示这个设备这个文件在特殊的 devtmpfs 文件系统上因而也有相应的 dentry 和 inode。这里的 inode 是一个特殊的 inode里面有设备号。通过它我们可以在 cdev_map 中找到设备驱动程序里面还有针对字符设备文件的默认操作 def_chr_fops。 第三打开一个字符设备文件和打开一个普通的文件有类似的数据结构有文件描述符、有 struct file、指向字符设备文件的 dentry 和 inode。字符设备文件的相关操作 file_operations 一开始指向 def_chr_fops在调用 def_chr_fops 里面的 chrdev_open 函数的时候修改为指向设备操作函数从而读写一个字符设备文件就会直接变成读写外部设备了。 此文章为11月Day12学习笔记内容来源于极客时间《趣谈Linux操作系统》推荐该课程。
http://www.tj-hxxt.cn/news/224241.html

相关文章:

  • 中英文企业网站豆芽网站建设 优帮云
  • 建设主题网站一般要经历的顺序东营网站设计制作
  • 网站制作排序怎么做招聘网站
  • 提卡网站建设中国协会网站建设方案
  • 做网站和做推广的区别微信开发者工具
  • 如何用vc做网站网页可信站点
  • 网站域名有哪些绍兴做微网站
  • 安徽省建设厅网站张天培wordpress 发卡插件
  • 哪些网站可以接单做好的网站设计特点
  • 设计网站作品欣赏有那些网站wordpress代码框
  • 做企业网站收费多少钱百度推广登录首页
  • 自己做简单网站网站开发设计定制
  • 有什么网站可以免费看电影wordpress插件开发教程
  • 东莞人才网官方网站律师在哪个网站做推广比较好
  • 网站怎么做六个页面做网站只用php不用html
  • 武进网站建设咨询自媒体平台注册流程
  • 网站 域名绑定诗词网页制作素材
  • 为什么做企业网站高端html5网站建设的思路
  • 网站怎么做免费推广方案建设银行个人网上银行app
  • 网站安全防护找谁做济南搜到网络推广
  • 广州网站制作报价学校网站建设流程图
  • 东莞主页网站制作苏州园区网站建设
  • 做软件赚钱还是做网站赚钱免费ftp空间
  • 做网站哪里比较好深圳好的高端企业网站建设公司
  • 分类信息网站建设计划替人做赌彩网站被判刑
  • 网站开发建设合同书2022年企业所得税税率表一览
  • 烟台广告公司网站建设p2p网站建设公司哪家好
  • 梅州企业网站该工具支持 preview 功能
  • 商贸公司的网站建设2021网站建设前景怎么样
  • 四川省建设厅网站打不开网站运营推广该如何做