hotplug_uevent机制
来源:互联网 发布:网站授权码系统源码 编辑:程序博客网 时间:2024/05/22 09:04
1、驱动部分
class_device_create class_device_register class_device_add kobject_uevent(&class_dev->kobj, KOBJ_ADD); kobject_uevent_env(kobj, action, NULL); //action string = "add"; action_string = action_to_string(action); //分配保存环境变量的内存 /* enviroment values*/ buffer = kmalloc(BUFFER_SIZE, GFP_KERNEL); /*设置环境变量*/ envp[i++] = "HOME=/"; envp[i++] = "PATH=/sbin:/bin:/usr/sbin:/usr/bin"; /* default keys */ scratch = buffer; envp [i++] = scratch; scratch += sprintf(scratch, "ACTION=%s", action_string) + 1; envp [i++] = scratch; scratch += sprintf (scratch, "DEVPATH=%s", devpath) + 1; envp [i++] = scratch; scratch += sprintf(scratch, "SUBSYSTEM=%s", subsystem) + 1; /* 调用应用程序:比如mdev */ /* * 启动脚本 echo /sbin/mdev > /proc/sys/kernel/hotplug * 设置了 uevent_helper 为“/sbin/mdev” */ argv [0] = uevent_helper; // = "/sbin/mdev" argv [1] = (char *)subsystem; argv [2] = NULL; call_usermodehelper (argv[0], argv, envp, 0); //调用应用程序 "/sbin/mdev"
2、分析busybox mdev.c
//# insmod dma.ko 100ask uevent_helper = /sbin/mdevenvp[0]=HOME=/envp[1]=PATH=/sbin:/bin:/usr/sbin:/usr/binenvp[2]=ACTION=addenvp[3]=DEVPATH=/module/dmaenvp[4]=SUBSYSTEM=moduleenvp[5]=SEQNUM=719100ask uevent_helper = /sbin/mdevenvp[0]=HOME=/envp[1]=PATH=/sbin:/bin:/usr/sbin:/usr/binenvp[2]=ACTION=addenvp[3]=DEVPATH=/class/s3c_dma/dmaenvp[4]=SUBSYSTEM=s3c_dmaenvp[5]=SEQNUM=720envp[6]=MAJOR=252envp[7]=MINOR=0
mdev_main tmp = /sys/class/net/vnet0 make_device /*确定设备文件名,类型,主次设备号*/ device_name = bb_basename(path); =dma 'c' == > 字符设备节点 根据“/sys//class/s3c_dma/dma/dev” 的内容确定主次设备号 mknod(device_name, mode | type, makedev(major, minor))
阅读全文
0 0
- hotplug_uevent机制
- hotplug_uevent机制学习笔记
- linux下hotplug_uevent机制(热插拔机制)
- Linux设备驱动之Hotplug_uevent机制
- hotplug_uevent机制_修改mdev配置支持U盘自动挂载学习笔记
- hotplug_uevent机制_修改mdev配置支持U盘自动挂载学习笔记
- 嵌入式linux之hotplug_uevent驱动(热拔插)
- 嵌入式linux之hotplug_uevent驱动(热拔插)
- 机制
- UML机制、通用机制
- tcp重发机制,确认机制,窗口机制
- session机制
- 消息机制
- session机制
- 信号机制
- 缓冲机制
- cookie机制
- 消息机制
- js之简易计算器
- 创建对话框寻找多个面
- C语言中有关二维数组的指针问题
- 平面设计和UI设计的区别有哪些?
- 1201 18岁生日
- hotplug_uevent机制
- http状态响应码
- Windows Security
- VScode 插件的那些事
- 单链表结点删除
- Spring4.x MVC 整合笔记,使用maven
- 我的博客第一篇
- NYOJ:27-水池数目
- LeetCode371——Sum of Two Integers(不用+)