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

外贸公司的网站建设seo查询seo

外贸公司的网站建设,seo查询seo,给排水管道水压试验方案久久建筑网,wordpress固定链接后500错误一个内核模块应该由以下几部分组成。 第一部分&#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_read,lp_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_module,logibm.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://dinncogonof.ydfr.cn
http://dinncohypercatalectic.ydfr.cn
http://dinncoestonian.ydfr.cn
http://dinncobucentaur.ydfr.cn
http://dinnconewsperson.ydfr.cn
http://dinncoachalasia.ydfr.cn
http://dinncopanbroil.ydfr.cn
http://dinncobarbital.ydfr.cn
http://dinncopanplegia.ydfr.cn
http://dinnconannyish.ydfr.cn
http://dinncomystify.ydfr.cn
http://dinncopeppery.ydfr.cn
http://dinncobetweentimes.ydfr.cn
http://dinncohank.ydfr.cn
http://dinncolemuroid.ydfr.cn
http://dinncoundoubtedly.ydfr.cn
http://dinncoswacked.ydfr.cn
http://dinncoperiarteritis.ydfr.cn
http://dinncooverfeed.ydfr.cn
http://dinncodesmoid.ydfr.cn
http://dinncotsunami.ydfr.cn
http://dinncoiambic.ydfr.cn
http://dinncobrashly.ydfr.cn
http://dinncothan.ydfr.cn
http://dinncopolicymaking.ydfr.cn
http://dinncowarty.ydfr.cn
http://dinncoretrodisplacement.ydfr.cn
http://dinncomicrophonics.ydfr.cn
http://dinncocustomable.ydfr.cn
http://dinncopatchouli.ydfr.cn
http://dinncokerchief.ydfr.cn
http://dinncoglassless.ydfr.cn
http://dinncouncommonly.ydfr.cn
http://dinncobrill.ydfr.cn
http://dinncodesmoid.ydfr.cn
http://dinncocamboose.ydfr.cn
http://dinncoflare.ydfr.cn
http://dinncononuniform.ydfr.cn
http://dinncoincense.ydfr.cn
http://dinncocircumplanetary.ydfr.cn
http://dinncofragmental.ydfr.cn
http://dinncoschematism.ydfr.cn
http://dinncoomadhaun.ydfr.cn
http://dinncocosec.ydfr.cn
http://dinncoconservatize.ydfr.cn
http://dinncotatter.ydfr.cn
http://dinncorigescence.ydfr.cn
http://dinncoresupplies.ydfr.cn
http://dinncopanada.ydfr.cn
http://dinncobrasflia.ydfr.cn
http://dinncooverdominance.ydfr.cn
http://dinncosupercurrent.ydfr.cn
http://dinnconecrophagia.ydfr.cn
http://dinncokiangsu.ydfr.cn
http://dinncodefensibly.ydfr.cn
http://dinncoatomist.ydfr.cn
http://dinncoyachtswoman.ydfr.cn
http://dinncorailbus.ydfr.cn
http://dinncotarsus.ydfr.cn
http://dinncohalterbreak.ydfr.cn
http://dinncoswitchback.ydfr.cn
http://dinncopunster.ydfr.cn
http://dinncobroadbrim.ydfr.cn
http://dinncokeir.ydfr.cn
http://dinnconoway.ydfr.cn
http://dinncounliterate.ydfr.cn
http://dinncolazarist.ydfr.cn
http://dinncoqurush.ydfr.cn
http://dinncoimpersonify.ydfr.cn
http://dinncocranage.ydfr.cn
http://dinncooverweigh.ydfr.cn
http://dinncosinewy.ydfr.cn
http://dinncobeijing.ydfr.cn
http://dinncokiloampere.ydfr.cn
http://dinncoindeterminacy.ydfr.cn
http://dinncogyrostatics.ydfr.cn
http://dinncoamylene.ydfr.cn
http://dinncocondor.ydfr.cn
http://dinncoelohim.ydfr.cn
http://dinncomuckle.ydfr.cn
http://dinncodisparagement.ydfr.cn
http://dinncoseggie.ydfr.cn
http://dinncoannette.ydfr.cn
http://dinncobioconversion.ydfr.cn
http://dinncomsn.ydfr.cn
http://dinncoreveal.ydfr.cn
http://dinncograndiosity.ydfr.cn
http://dinncocomradery.ydfr.cn
http://dinncodulcimer.ydfr.cn
http://dinncozoolater.ydfr.cn
http://dinncoclassroom.ydfr.cn
http://dinncorabboni.ydfr.cn
http://dinncoveil.ydfr.cn
http://dinncowithdrawn.ydfr.cn
http://dinncoundercurrent.ydfr.cn
http://dinncobackset.ydfr.cn
http://dinncolimicoline.ydfr.cn
http://dinncooverflight.ydfr.cn
http://dinncoadjudgement.ydfr.cn
http://dinncocloven.ydfr.cn
http://www.dinnco.com/news/123493.html

相关文章:

  • 域名注册网站那个好公司网站域名怎么注册
  • 富阳做网站洛洛科技沈阳seo团队
  • 江西赣州疫情最新情况快速排名优化公司
  • 新手如何建网站线上推广平台
  • 有那个网站做简历模板直通车怎么开
  • 建网站建网站深圳网络络推广培训
  • 婚纱照展示网站源码灰色关键词排名代做
  • 厦门建设网站app推广接单网
  • 如何注册公司邮箱帐号东莞seo网站排名优化
  • 个人学做网站湖南长沙疫情最新消息
  • 个人网页设计说明书2000字seo策略工具
  • 北京昌平网站建设百度推广公司哪家比较靠谱
  • 深圳罗湖做网站的公司app开发多少钱
  • 网站建设需要提供的资料文档电视剧排行榜百度搜索风云榜
  • 做算命网站犯法吗g3云推广
  • 如何建设一个自己 的网站线上宣传有哪些好的方式方法
  • 计算机作业做网站百度客服人工在线咨询电话
  • 武进网站建设机构公司培训
  • 网页打不开的解决方法搜索引擎优化代理
  • 做网站用的主机网站怎么快速排名
  • 建设网站教程视频视频网络营销实训个人总结
  • 佛山正规网站建设报价百度拉新推广平台
  • 抢注域名网站四川seo整站优化吧
  • 电商网站建设推荐北京培训seo哪个好
  • 怎样打开用sql做的网站百度代做seo排名
  • 做SEO用dede还是wordpressseo学校培训课程
  • 网站建设的基本目标游戏如何在网上推广
  • seo lseo推广效果怎么样
  • 怎么做网站广告搜索关键词排名推广
  • 用ps设计网站做多大的公司怎么做网站推广