驱动--自动创建设备节点

自动创建设备节点

头文件:#include <linux/device.h>

自动创建设备节点:

struct class *cls;

cls = class_create(owner, name) /void class_destroy(struct class *cls)

功能:向用户空间提交目录信息

参数:

@owner :THIS_MODULE  (宏,固定格式)

@name  :目录名字

返回值:成功返回struct class *指针

失败返回错误码指针 int (-5)

if(IS_ERR(cls)){           //将错误码指针转换为错误码

   printk("class _create error");

   return IS_ERR(cls);

}    

struct device *device_create(struct class *class, struct device *parent,

 dev_t devt, void *drvdata, const char *fmt, ...)

void device_destroy(struct class *class, dev_t devt)

功能:向用户空间提交文件信息

参数:

@class :目录名字 cls(向用户空间提交目录信息时产生的返回值)

@parent:NULL

@devt  :设备号    MKDEV(major,0)

@drvdata :NULL

@fmt   :文件的名字

返回值:成功返回struct device *指针

失败返回错误码指针 int (-5)

struct class*cls;

struct device *dev;

//自动创建设备节点

cls = class_create(THIS_MODULE,CNAME);

if(IS_ERR(cls)){

printk("class create error\n");

return PTR_ERR(cls);

}

dev = device_create(cls,NULL,MKDEV(major,0),NULL

,CNAME);

if(IS_ERR(dev)){

printk("device create error\n");

return PTR_ERR(dev);

}

 头文件

 声明处:

 入口处:

 

 //出口-》这里写了卸载时注销的函数

static void __exit hello_exit(void)//出口

{

device_destroy(devc,MKDEV(major,1));//注销内容

class_destroy(cls);//注销目录

iounmap(green_base);

iounmap(blue_base);

iounmap(red_base);

unregister_chrdev(major,CNAME);

}

注意:MKDEV(major,0)为一个宏,用于配置主设备号和次设备号

#insmod hello.ko   

ls查看 并没有hello设备节点

 自动创建设备节点hello建立在dev里 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值