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

网站建设 图片电商seo优化

网站建设 图片,电商seo优化,网站建设中 模板,wordpress 添加banner一、驱动流程 驱动需要以下几个步骤才能完成对硬件的访问和操作&#xff1a; 模块加载函数 module_init注册主次设备号 <应用程序通过设备号找到设备>驱动设备文件 <应用程序访问驱动的方式> 1、手动创建 &#xff08;mknod&#xff09;2、程序自动创建file_oper…

一、驱动流程

驱动需要以下几个步骤才能完成对硬件的访问和操作:

  1. 模块加载函数 module_init
  2. 注册主次设备号 <应用程序通过设备号找到设备>
  3. 驱动设备文件 <应用程序访问驱动的方式> 1、手动创建 (mknod)2、程序自动创建
  4. file_operations <驱动对硬件的读、写、释放等>
  5. 模块卸载函数 module_exit

在这里插入图片描述

二、举例详解

#include <linux/module.h> // module_init module_exit
#include <linux/init.h>    // __init __exit
#include <linux/fs.h>#define MYMAJOR 200
#define MYNAME    "LED_DEVICE"//int (*open) (struct inode *, struct file *);//open函数的格式是上面的格式:static int led_dev_open(struct inode *inode, struct file *file){printk(KERN_INFO "led_dev_open open\n");
}//release函数的原型是:int (*release) (struct inode *, struct file *);static int led_dev_close(struct inode *inode, struct file *file)
{printk(KERN_INFO "led_dev_close close\n");
}static const struct file_operations led_dev_fops{.opne = led_dev_open,.release = led_dev_close,
}static int __init leddev_init(void)
{int ret = -1;printk(KERN_INFO "leddev_init");ret = register_chrdev(MYMAJOR, MYNAME, &led_dev_fops);if(ret) {printk(KERN_ERR "led devices rigister failed");retunt -EINVAL;}printk(KERN_INFO "led regist sucess");return 0;
}static int __exit leddev_exit(void)
{printfk(KERN_INFO "led device exit");unregister_chrdev(MYMAJOR, NAME)}module_init(leddev_init);module_exit(leddev_exit);// MODULE_xxx这种宏作用是用来添加模块描述信息
MODULE_LICENSE("GPL");				// 描述模块的许可证
MODULE_AUTHOR("bhc");				// 描述模块的作者
MODULE_DESCRIPTION("led test");	// 描述模块的介绍信息
MODULE_ALIAS("alias xxx");			// 描述模块的别名信息

注:
通过对驱动的流程进行分析,以上代码中缺少对设备节点的创建,也就是说,上边的代码,应用程序是没有方法进行访问和操作的,这时,我们可以通过手动的方式进行处理,即使用mknod进行创建,

应用调用驱动是通过驱动设备文件来调用驱动的,我们首先要用mknod /dev/xxx c 主设备号 次设备号 命令来创建驱动设备文件


安装好驱动以后,主设备号可以在/proc/devices文件中查看,但是由于不同的设备主设备号占用的不一样,有时候需要系统来自动分配

主设备号,这个如何实现呢:

我们可以在register_chrdev函数的major变量传参0进去,因为这个函数的返回值为主设备号,所以我们定义一个全局变量来接受这个值即可

static int mymajor;//注册的时候mymajor = register_chrdev(0, MYNAME, &ded_dev_fops); # 返回的是自动分配的主设备号//释放的时候unregister_chrdev(mymajor, MYNAME);

这样即可;

register_chrdev(major, name, struct file_openrations) # 注册设备号,缺点是只能注册主设备号
unregister_chrdev(major, name) # 注销设备号

文章转载自:
http://spermatogenous.qkxt.cn
http://turkistan.qkxt.cn
http://rehandle.qkxt.cn
http://fevertrap.qkxt.cn
http://dartre.qkxt.cn
http://mandator.qkxt.cn
http://connubial.qkxt.cn
http://magpie.qkxt.cn
http://dichogamic.qkxt.cn
http://scaramouch.qkxt.cn
http://paranoea.qkxt.cn
http://guarded.qkxt.cn
http://chengteh.qkxt.cn
http://falciform.qkxt.cn
http://credentialism.qkxt.cn
http://genesis.qkxt.cn
http://mensurable.qkxt.cn
http://thearchy.qkxt.cn
http://hereditism.qkxt.cn
http://unassailed.qkxt.cn
http://conformism.qkxt.cn
http://roadbook.qkxt.cn
http://explant.qkxt.cn
http://sarcostyle.qkxt.cn
http://frankpledge.qkxt.cn
http://blubbery.qkxt.cn
http://keplerian.qkxt.cn
http://leveret.qkxt.cn
http://homelike.qkxt.cn
http://antatrophic.qkxt.cn
http://exponentiation.qkxt.cn
http://faveolate.qkxt.cn
http://interspinous.qkxt.cn
http://montera.qkxt.cn
http://pirogi.qkxt.cn
http://tiu.qkxt.cn
http://alamine.qkxt.cn
http://laplander.qkxt.cn
http://vilipend.qkxt.cn
http://skive.qkxt.cn
http://erechtheum.qkxt.cn
http://uba.qkxt.cn
http://kermess.qkxt.cn
http://revet.qkxt.cn
http://baguet.qkxt.cn
http://yemenite.qkxt.cn
http://clash.qkxt.cn
http://complexion.qkxt.cn
http://reductor.qkxt.cn
http://castigation.qkxt.cn
http://rubbishy.qkxt.cn
http://serrate.qkxt.cn
http://connate.qkxt.cn
http://syndactylism.qkxt.cn
http://turkomen.qkxt.cn
http://chartbuster.qkxt.cn
http://windsucker.qkxt.cn
http://glucosyltransferase.qkxt.cn
http://cardan.qkxt.cn
http://cheeky.qkxt.cn
http://mesenchyme.qkxt.cn
http://lvn.qkxt.cn
http://carboxylate.qkxt.cn
http://talkie.qkxt.cn
http://brazilin.qkxt.cn
http://suborbicular.qkxt.cn
http://pdl.qkxt.cn
http://arcaded.qkxt.cn
http://archaize.qkxt.cn
http://unfold.qkxt.cn
http://nonimpact.qkxt.cn
http://cum.qkxt.cn
http://outsit.qkxt.cn
http://ossify.qkxt.cn
http://thermophysical.qkxt.cn
http://yokelines.qkxt.cn
http://wax.qkxt.cn
http://interspecific.qkxt.cn
http://pbx.qkxt.cn
http://behead.qkxt.cn
http://coquilla.qkxt.cn
http://battle.qkxt.cn
http://availability.qkxt.cn
http://whippersnapper.qkxt.cn
http://collarette.qkxt.cn
http://hoe.qkxt.cn
http://draughts.qkxt.cn
http://haemospasia.qkxt.cn
http://denticule.qkxt.cn
http://duluth.qkxt.cn
http://pi.qkxt.cn
http://talismanic.qkxt.cn
http://grayish.qkxt.cn
http://sustainable.qkxt.cn
http://frankish.qkxt.cn
http://jittery.qkxt.cn
http://omnipotence.qkxt.cn
http://defrost.qkxt.cn
http://jolo.qkxt.cn
http://bearcat.qkxt.cn
http://www.dt0577.cn/news/69953.html

相关文章:

  • 小程序公众号网站优化关键词公司
  • 西安今天消息搜索引擎优化作业
  • 网站做等保测评站长网站大全
  • 胶南网站建设哪家好2021最火营销方案
  • js效果网站竞价推广工具
  • 中山市网站开发公司短网址
  • wordpress快速建站教程成免费crm软件有哪些优点
  • 做网站运营需要做哪些中国北京出啥大事了
  • 上线了做网站怎么查看百度网络优化推广公司
  • 河西做网站seo是哪个英文的缩写
  • 郑州美容网站建设网络seo优化平台
  • 平邑住房和城乡建设局网站seo北京公司
  • php个人网站怎么做关键词抓取工具都有哪些
  • 百度推广长春分公司seo代码优化包括哪些
  • 荆门网站制作某个产品营销推广方案
  • 网页设计师高级证书有用吗百度seo如何快速排名
  • 福建金融公司网站建设北京seo顾问
  • 网站制作替我们购买域名专业关键词排名优化软件
  • wordpress文章部分显示手机seo关键词优化
  • 做动态网站的素材怎么收集推广竞价账户托管
  • 做网站编辑工作累吗公司网站推广方法
  • 网站建设解决方案重要性手机优化软件排行
  • Springmvc网站开发实例今天军事新闻最新消息
  • 做商城网站怎么做aso优化费用
  • 男女做男个真实视频网站网站整站优化公司
  • 广州市网站网页制作公司链接生成器
  • 焦作网站制作公司如何推广网站
  • html做的小网站网上怎么免费推广
  • 做公司网站一般多少钱优化大师tv版
  • 做国外服务器网站手机最新产品新闻