class_create(),class_device_create()创建/dev/xxx 名字

原创 2012年03月27日 11:30:48

在刚开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点,实际上Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模块时删除该节点,当然前提条件是用户空间移植了udev。

内核中定义了struct class结构体,顾名思义,一个struct class结构体类型变量对应一个类,内核同时提供了class_create(…)函数,可以用它来创建一个类,这个类存放于sysfs下面,一旦创建好了这个类,再调用device_create(…)函数来在/dev目录下创建相应的设备节点。这样,加载模块的时候,用户空间中的udev会自动响应device_create(…)函数,去/sysfs下寻找对应的类从而创建设备节点。

注意,在2.6较早的内核版本中,device_create(…)函数名称不同,是class_device_create(…),所以在新的内核中编译以前的模块程序有时会报错,就是因为函数名称不同,而且里面的参数设置也有一些变化。

struct class和device_create(…) 以及device_create(…)都定义在/include/linux/device.h中,使用的时候一定要包含这个头文件,否则编译器会报错。

版权声明:本文为博主原创文章,未经博主允许不得转载。

/dev/下创建可操作文件

#include #include #include #include #include #include #include #include #include #...
  • harhy
  • harhy
  • 2015年12月21日 17:15
  • 701

自动创建设备节点 device_create

error: implicit declaration of  ‘class_device_create’ 这个代码在Kernel 2.6.18下面编译的时候没有任何问题。为什么在2.6.34下...
  • newnewman80
  • newnewman80
  • 2013年03月12日 10:14
  • 10538

自动在/dev/下创建设备文件

转载自:http://blog.csdn.net/xie376450483/article/details/5726128 在modprobe或者insmod后,如果不自动创建设备文件,需要...
  • hj5225244
  • hj5225244
  • 2014年01月12日 17:03
  • 1241

Linux /dev 自动创建设备节点

udev的支持主要作用是:在驱动初始化的代码里调用class_create(...)为该设备创建一个class,再为每个设备调用device_create(...); 内核中定义的struct cl...
  • dddxxxx
  • dddxxxx
  • 2016年09月08日 09:07
  • 1080

图解Dev C++ 创建Win32 项目模板

打开Dev C++,新建一个项目; 在Windows程序设计第五版源码中,找到第10章,PoePoem例子;把PoePoem.c代码拷贝到main.cpp中; 用它来作为一个模板;...
  • bcbobo21cn
  • bcbobo21cn
  • 2016年05月22日 12:43
  • 2085

android 字符设备驱动模块及在 /dev 下自动创建设备节点问题

#include Linux/input.h> #include #include #include #include #include #inclu...
  • u010164190
  • u010164190
  • 2016年10月29日 21:44
  • 893

Linux 下的两个特殊的文件: /dev/null 和 /dev/zero 简介及对比

1、概论 -- 来自维基的解释 /dev/null  : 在类Unix系统中,/dev/null,或称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一...
  • wangliang888888
  • wangliang888888
  • 2016年11月15日 14:15
  • 1015

linux中在/dev/下手动创建设备节点

linux中在/dev/下手动创建设备节点 /dev/目录下有许多设备节点文件,比如u盘的文件/dev/sda,mmc卡的文件/dev/mmcblk0,这些文件通常是由udev或mdev程序检测到u...
  • chuanzhilong
  • chuanzhilong
  • 2017年03月25日 15:36
  • 2854

使用dev-c++建立工程(多个文件一同编译连接)并运行

使用dev-c++建立工程(多个文件一同编译连接)并运行
  • test1280
  • test1280
  • 2016年08月03日 12:59
  • 2452

动态添加dev CheckEdit控件,以及删除。事件处理

//删除原有动态生成的控件,原本这个容器中只有4个控件,其他的都是动态生成。如后期有添加控件,这里的4应做修改 int count = navBarGroupControlCo...
  • shui0527
  • shui0527
  • 2013年09月24日 15:35
  • 1962
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:class_create(),class_device_create()创建/dev/xxx 名字
举报原因:
原因补充:

(最多只允许输入30个字)