mdev机制(二)————在Linux内核中的实现
来源:互联网 发布:mac如何强制删除程序 编辑:程序博客网 时间:2024/06/03 22:05
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); /* 分配保存环境变量的内存 */ /* environment values */ buffer = kmalloc(BUFFER_SIZE, GFP_KERNEL); /* 设置环境变量 */ 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);分析: busybox mdev.c 100ask: uevent_helper = /sbin/mdevenvp[0] = HOME=/envp[1] = PATH=/sbin:/bin:/usr/sbin:/usr/binenvp[2] = ACTION=addenvp[3] = DEVPATH=/class/sixth_drv/buttonsenvp[4] = SUBSYSTEM=sixth_drvenvp[5] = SEQNUM=720envp[6] = MAJOR=252envp[7] = MINOR=0mdev_main temp = /sys/class/sixth_drv/buttons make_device(temp, 0); /* 确定设备文件名,类型,主次设备号 */ device_name = bb_basename(path); = "buttons" 'c' == > 字符设备节点 根据"/sys/class/sixth_drv/buttons/dev"的内容确定主次设备号 mknod(device_name, mode | type, makedev(major, minor)
0 0
- mdev机制(二)————在Linux内核中的实现
- mdev机制(四)————mdev实现U盘或SD卡自动挂载
- linux中的mdev机制
- mdev机制(三)————mdev的使用及mdev.conf的规则配置
- mdev机制(一)————mdev的基本工作原理
- 浅析 Linux 中的时间编程和实现原理四——Linux 内核的工作二
- linux中的热插拔和mdev机制
- linux中的热插拔和mdev机制
- linux中的热插拔和mdev机制
- linux中的热插拔和mdev机制
- linux中的热插拔和mdev机制
- linux中的热插拔和mdev机制
- linux中的热插拔和mdev机制
- linux中的热插拔和mdev机制
- linux中的热插拔和mdev机制
- linux内核中的copy_to_user和copy_from_user(二)—图解__arch_copy_from_user
- Linux内核学习笔记七——内核同步机制和实现方式
- Linux内核学习笔记七——内核同步机制和实现方式
- Wheel v.s. Egg
- sys argv 命令行参数
- NoSQL可视化管理
- 通宵、复赛、霸面
- lua socket
- mdev机制(二)————在Linux内核中的实现
- bootstrap之 carousel.js轮播插件源码分析
- 使用pandas的DataFrame的plot方法绘制图像
- java对象在jvm中的存储
- [非专业前端快速入门套路]任务导向-快速完成前端开发
- Java利用BlockingQueue实现生产者和消费者模式
- [ZJOI2015] 诸神眷顾的幻想乡
- 【2017.04.25】蘑菇街一面面经
- BST 二叉搜索树 (动态建树与静态建树)