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是怎么创建的

猜你喜欢

转载自blog.csdn.net/qq_26690505/article/details/79300614