linux下hotplug_uevent机制(热插拔机制)
回过头看看我们以前写的驱动程序
随便看一个
为什么要创建类 为什么要在类下面创建设备呢
为了让mdev根据这些信息来创建设备节点
我们来看看device_create凭什么可以让mdev创建设备节点
然后进入这个device_create_vargs
然后我们会看见关键性函数 device_register
然后进入device_add
同样是进入关键函数
kobjece_uevent这个函数
进入这个函数
一步一步进入
然后同样找到关键函数
这里将action_string这个指针指向"add"
然后在
先为环境变量分配一个缓冲区
然后设置环境变量
环境变量是什么东西
在你的开发板上输入env
这些都是环境变量
这个环境变量是我们shell程序,就是根据我们输入来执行程序的那个shell程序的环境变量
ps看看
就是这个的环境变量
每一个应用程序都有环境变量
如果这个变量有数据的话 call_usermodehelper
这个是干啥呢
调用应用程序,这个应用程序是什么,比如mdev 假设argv[0]=uevent_helper=mdev
调用用户模式的helper,就是创建一个进程,传入传输,环境变量,这个应用程序会根据这个环境变量创建设备节点
我们来打印,看看这个是不是等于mdev
修改代码如下
然后重新编译内核烧写
然后我们insmod一个驱动
输出信息如下(由于现在没网,只能截wds的图)
然后就会得到
他会根据这些信息创建设备节点
接着分析 busybox mdev_main()
如果他不是mdev -s mdev -s是什么意思呢?
就是它扫描,我们一开始启动的时候
我们cat /etc/init.d/rcS
这里就有mdev -s
扫描这个/sys这个目录,产生这个目录 当系统启动的时候 根据这个里面的信息来创建设备
我们不是这个这一项
获得环境变量
action = add
我们这里是OP_add
所以进入下面这个make_device
这个函数里面我们看主要的
在这里创建设备节点
我们看node_name是怎么创建的