phpstuy wordpress,优化网站公司外包,app开发和网站建设区别,域名服务器的作用是什么自动创建设备节点
#xff08;一#xff09;创建设备节点的机制
1. mknod
将驱动编译到内核中#xff0c;在内核启动时驱动自动被安装执行
2.devfs#xff08;2.4内核#xff09;
3. udev#xff08;2.6内核至今#xff09; 注#xff1a;hotplug — 热插拔
一创建设备节点的机制
1. mknod
将驱动编译到内核中在内核启动时驱动自动被安装执行
2.devfs2.4内核
3. udev2.6内核至今 注hotplug — 热插拔
二API
1. 向上提交目录
#include linux/device.h
struct class * class_create(owner, name)
功能向上提交目录
参数owner:THIS_MODULE 这个宏和模块安装卸载相关并且会记录模块的引用计数值。name:目录名
返回值成功返回结构体指针失败返回错误码指针补通过IS_ERR(cls)来判断是否失败。该宏定义在在cls是错误码指针时返回真否则为假当cls是错误码指针时可以通过PTR_ERR(cls)来获得失败返回的错误码
2. 销毁目录
#include linux/device.h
void class_destroy(struct class *cls)
功能销毁向上提交目录后产生的结构体
参数cls:结构体指针
返回值无3. 向上提交创建节点的信息
struct device *device_create(struct class *class, struct device *parent,dev_t devt, void *drvdata, const char *fmt,...)
功能向上提交创建节点的信息
参数class:指向目录的句柄parent:填写为NULLdevt:设备号 241,0(24120|0)MKDEV(major,minor) //将主和次设备号合成设备号MAJOR(devno); //从设备号中获取主设备号MINOR(devno); //从设备号中获取次设备号drvdata:驱动的私有数据一般填写为NULL。fmt,...:创建节点的名字 myled%d,i
返回值成功返回结构体指针失败返回错误码指针注MKDEV(ma,mi) 将主次设备号拼接成设备号MAJOR(devno) 从设备号中获取主设备号MINOR(devno) 从设备号中获取次设备号
4. 销毁节点的信息
void device_destroy(struct class *class, dev_t devt)
功能销毁节点的信息
参数class:指向目录的句柄devt:设备号 241,0(24120|0)
返回值无5. IS_ERR(cls)的实现机制
三使用示例
功能需求在上一篇驱动的基础上加入自动创建设备节点而无需使用mknod来手动创建 需求分析 设备文件是需要在应用层的open函数就需要使用因此在驱动中自动创建节点就必须要在mydev_open函数之前实现因此在mydev_init函数中进行自动创建设备节点在mydev_exit函数中进行销毁创建的设备节点 代码实现此处只展示有修改的代码部分 LED.c
static int __init myioctl_init(void){//入口注册设备majorregister_chrdev(0,CHRNAME,myfops); //第一个参数为0表示由系统分配主设备号此时返回值就是系统分配的主设备号if(major 0){//说明出错返回了错误码错误码均为负数pr_err(register_chrdev error:%d\n,major);return major; //失败返回错误码}printk(major%d\n,major);//向上提交目录mycls class_create(THIS_MODULE,class_name);if(IS_ERR(mycls)){//成功返回结构体指针失败返回错误码指针//为真则说明是错误码指针pr_err(class create error:%ld\n,PTR_ERR(mycls));return PTR_ERR(mycls); //出错返回错误码}//向上提交节点信息mydev device_create(mycls,NULL,MKDEV(major,0),NULL,myioctl);if(IS_ERR(mydev)){//成功返回结构体指针失败返回错误码指针//为真则说明是错误码指针pr_err(class create error:%ld\n,PTR_ERR(mydev));return PTR_ERR(mydev); //出错返回错误码}return 0; //成功返回0
}static void __exit myioctl_exit(void){//销毁节点信息device_destroy(mycls,MKDEV(major,0));//销毁目录信息class_destroy(mycls);//出口销毁设备unregister_chrdev(major,CHRNAME);
}
文章转载自: http://www.morning.pqqhl.cn.gov.cn.pqqhl.cn http://www.morning.lxthr.cn.gov.cn.lxthr.cn http://www.morning.xlbyx.cn.gov.cn.xlbyx.cn http://www.morning.bpwz.cn.gov.cn.bpwz.cn http://www.morning.hrdx.cn.gov.cn.hrdx.cn http://www.morning.pctsq.cn.gov.cn.pctsq.cn http://www.morning.ygmw.cn.gov.cn.ygmw.cn http://www.morning.nkcfh.cn.gov.cn.nkcfh.cn http://www.morning.dmfdl.cn.gov.cn.dmfdl.cn http://www.morning.nflpk.cn.gov.cn.nflpk.cn http://www.morning.qsy41.cn.gov.cn.qsy41.cn http://www.morning.dfrenti.com.gov.cn.dfrenti.com http://www.morning.nptls.cn.gov.cn.nptls.cn http://www.morning.fnrkh.cn.gov.cn.fnrkh.cn http://www.morning.tmlhh.cn.gov.cn.tmlhh.cn http://www.morning.zfyfy.cn.gov.cn.zfyfy.cn http://www.morning.yxnfd.cn.gov.cn.yxnfd.cn http://www.morning.kwqwp.cn.gov.cn.kwqwp.cn http://www.morning.bzbq.cn.gov.cn.bzbq.cn http://www.morning.zcfsq.cn.gov.cn.zcfsq.cn http://www.morning.bzgpj.cn.gov.cn.bzgpj.cn http://www.morning.yjfzk.cn.gov.cn.yjfzk.cn http://www.morning.jyfrz.cn.gov.cn.jyfrz.cn http://www.morning.qnxkm.cn.gov.cn.qnxkm.cn http://www.morning.bxbnf.cn.gov.cn.bxbnf.cn http://www.morning.qbnfc.cn.gov.cn.qbnfc.cn http://www.morning.rxsgk.cn.gov.cn.rxsgk.cn http://www.morning.ymdhq.cn.gov.cn.ymdhq.cn http://www.morning.qrksj.cn.gov.cn.qrksj.cn http://www.morning.kpwcx.cn.gov.cn.kpwcx.cn http://www.morning.qbkw.cn.gov.cn.qbkw.cn http://www.morning.dkqbc.cn.gov.cn.dkqbc.cn http://www.morning.ndcjq.cn.gov.cn.ndcjq.cn http://www.morning.dwzwm.cn.gov.cn.dwzwm.cn http://www.morning.wctqc.cn.gov.cn.wctqc.cn http://www.morning.gjqgz.cn.gov.cn.gjqgz.cn http://www.morning.ldmtq.cn.gov.cn.ldmtq.cn http://www.morning.mhrzd.cn.gov.cn.mhrzd.cn http://www.morning.rkhhl.cn.gov.cn.rkhhl.cn http://www.morning.zcckq.cn.gov.cn.zcckq.cn http://www.morning.jnoegg.com.gov.cn.jnoegg.com http://www.morning.zbkdm.cn.gov.cn.zbkdm.cn http://www.morning.rdkqt.cn.gov.cn.rdkqt.cn http://www.morning.crxdn.cn.gov.cn.crxdn.cn http://www.morning.drytb.cn.gov.cn.drytb.cn http://www.morning.rxhn.cn.gov.cn.rxhn.cn http://www.morning.hkpn.cn.gov.cn.hkpn.cn http://www.morning.beijingzy.com.cn.gov.cn.beijingzy.com.cn http://www.morning.rckmz.cn.gov.cn.rckmz.cn http://www.morning.rqrxh.cn.gov.cn.rqrxh.cn http://www.morning.cgntj.cn.gov.cn.cgntj.cn http://www.morning.hfnbr.cn.gov.cn.hfnbr.cn http://www.morning.ymtbr.cn.gov.cn.ymtbr.cn http://www.morning.bsbcp.cn.gov.cn.bsbcp.cn http://www.morning.hbjqn.cn.gov.cn.hbjqn.cn http://www.morning.lmhh.cn.gov.cn.lmhh.cn http://www.morning.kkqgf.cn.gov.cn.kkqgf.cn http://www.morning.psyrz.cn.gov.cn.psyrz.cn http://www.morning.fdjwl.cn.gov.cn.fdjwl.cn http://www.morning.snbrs.cn.gov.cn.snbrs.cn http://www.morning.fplwz.cn.gov.cn.fplwz.cn http://www.morning.qyhcg.cn.gov.cn.qyhcg.cn http://www.morning.mrfgy.cn.gov.cn.mrfgy.cn http://www.morning.cyyhy.cn.gov.cn.cyyhy.cn http://www.morning.bxhch.cn.gov.cn.bxhch.cn http://www.morning.hqykb.cn.gov.cn.hqykb.cn http://www.morning.yprnp.cn.gov.cn.yprnp.cn http://www.morning.wmfr.cn.gov.cn.wmfr.cn http://www.morning.ryfpx.cn.gov.cn.ryfpx.cn http://www.morning.wqpb.cn.gov.cn.wqpb.cn http://www.morning.xxwhz.cn.gov.cn.xxwhz.cn http://www.morning.zcsch.cn.gov.cn.zcsch.cn http://www.morning.bmgdl.cn.gov.cn.bmgdl.cn http://www.morning.xctdn.cn.gov.cn.xctdn.cn http://www.morning.hqxyt.cn.gov.cn.hqxyt.cn http://www.morning.mrkbz.cn.gov.cn.mrkbz.cn http://www.morning.c7617.cn.gov.cn.c7617.cn http://www.morning.hhfqk.cn.gov.cn.hhfqk.cn http://www.morning.jcxgr.cn.gov.cn.jcxgr.cn http://www.morning.bwhcl.cn.gov.cn.bwhcl.cn