device_create,device_create_file
2015-06-30 13:19
585 查看
1,
例子1
device_create( my_class, NULL, MKDEV(hello_major, 0), "hello" "%d", 0 );
如果成功,它将会在/dev目录下产生/dev/hello0设备。
例子2
led_cdev->dev = device_create_drvdata(leds_class, parent, 0, led_cdev,
"%s",
led_cdev->name);
这是前文platform之gpio-leds里面的源码
由于dev_t是0,所以它不会在/dev下产生设备文件。
led_cdev为传递给class的私有数据。
会把第6个参数的内容复制到第5个参数 “%s”,就像printf一样
2,device_create_file好像用来在 文件系统的设备子系统下
设置某个设备文件属性的。而这个设备属性里包括了 属性名称, 读写属性的方法等
调用device_create_file(dev, &dev_attr_debug);函数在/sys中导出信息,device_create_file()的第一个入口参数类型为struct
device结构体。问题是如何把cdev转换到device,
结构层次:
/ \
cdev device
所以从子类cdev--->父类kobject--->子类device
container_of(kobj)-->list_entry(entry)->(struct device*)
3,在驱动初始化的代码里调用class_create为该设备创建一个class,再为每个设备调用
class_device_create创建对应的设备。大致用法如下:
struct class *myclass = class_create(THIS_MODULE, “my_device_driver”);
class_device_create(myclass, NULL, MKDEV(major_num, 0), NULL, “my_device”);
这样的module被加载时,udev daemon就会自动在/dev下创建my_device设备文件。
例子1
device_create( my_class, NULL, MKDEV(hello_major, 0), "hello" "%d", 0 );
如果成功,它将会在/dev目录下产生/dev/hello0设备。
例子2
led_cdev->dev = device_create_drvdata(leds_class, parent, 0, led_cdev,
"%s",
led_cdev->name);
这是前文platform之gpio-leds里面的源码
由于dev_t是0,所以它不会在/dev下产生设备文件。
led_cdev为传递给class的私有数据。
会把第6个参数的内容复制到第5个参数 “%s”,就像printf一样
2,device_create_file好像用来在 文件系统的设备子系统下
设置某个设备文件属性的。而这个设备属性里包括了 属性名称, 读写属性的方法等
调用device_create_file(dev, &dev_attr_debug);函数在/sys中导出信息,device_create_file()的第一个入口参数类型为struct
device结构体。问题是如何把cdev转换到device,
结构层次:
kobject
/ \
cdev device
所以从子类cdev--->父类kobject--->子类device
container_of(kobj)-->list_entry(entry)->(struct device*)
3,在驱动初始化的代码里调用class_create为该设备创建一个class,再为每个设备调用
class_device_create创建对应的设备。大致用法如下:
struct class *myclass = class_create(THIS_MODULE, “my_device_driver”);
class_device_create(myclass, NULL, MKDEV(major_num, 0), NULL, “my_device”);
这样的module被加载时,udev daemon就会自动在/dev下创建my_device设备文件。
相关文章推荐
- OMAP3630 Linux I2C总线驱动分析
- Linux设备驱动开发环境的搭建
- 设备控制接口(ioctl 函数) 主要是在驱动中
- NAPI
- 嵌入式linux和嵌入式android系统有什么区别和联系?
- struct file结构体
- Linux设备驱动之简单字符设备驱动开开发
- Fedora 20 上安装基于dell 1420的无线网卡驱动
- 记得感激我 评论我 nvidia显卡驱动linux系统地安装 完全驱动方法 世界第一人
- pwm驱动程序及其注释
- pwm驱动程序及其注释
- 在使用SIS M672+SIS 968芯片组,SIS Mirage 3+集成显卡的电脑上安装Debian 7.7的驱动
- Bus--device--driver驱动模型源码分析
- linux驱动---DMA操作---驱动编写
- linux驱动---DMA操作---寄存器分析
- linux驱动
- Linux驱动程序开发 - 字符设备驱动
- 在tiny6410移植rt5370驱动
- 一个最简单的linux驱动程序的编译运行