Android设备节点的动态管理

在Android中,没有独立的类似于udev或者mdev的用户程序,这个功能集成到了init中做了。代码见:system/core/init/init.c文件,如下:

if (ufds[0].revents == POLLIN)

handle_device_fd(device_fd);

其中handle_device_fd(device_fd)函数在system/core/init/devices.c中实现,参数device_fd由函数device_init()->open_uevent_socket()->socket(PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT)函数调用返回。

函数handle_device_fd(device_fd)中,根据传进来的device_fd参数,调用recv(fd, msg, UEVENT_MSG_LEN, 0)函数,将内核探测到的设备并通过NETLINK机制传过来的socket描述符转化成消息。接着调用parse_event(msg, &uevent);函数将消息翻译成uevent事件,并将改事件传递给handle_device_event(&uevent)函数。

handle_device_event(&uevent)函数中,依据参数uevent->subsystem类型创建dev下的相应目录,如:/dev/graphics。紧接着根据uevent->action是"add"还是"remove"来实现设备节点的创建与删除。如果uevent->action是"add",则调用make_device(devpath, block, uevent->major, uevent->minor)函数生成设备节点。如果uevent->action是"remove",则调用unlink(devpath)对设备节点进行删除。

原文地址:http://blog.chinaunix.net/space.php?uid=9185047&do=blog&id=445183

更多相关文章

  1. Android中获取设备的各种信息总结
  2. Kali Linux将Android设备变成黑客瑞士军刀
  3. Android官方开发文档Training系列课程中文版:连接无线设备之通过W
  4. android蓝牙开发 蓝牙设备的查找和连接
  5. Android 防止设备休眠
  6. Android如何生成设备节点
  7. Android 抽象回调函数以及接口回调更新UI
  8. 为android系统添加USB AUDIO设备的放音和录音功能

随机推荐

  1. Android(安卓)sub project list
  2. Android中Activity之间访问互传参数
  3. Android:getWritableDatabase/getReadabl
  4. Android(安卓)分组列表适配器 MyExpandab
  5. Android(安卓)系统广播Action一览验证
  6. Android(安卓)DEV : Andriod Studio Show
  7. Android之再谈文件操作和SDcard读写
  8. Android(安卓)ViewHolder
  9. android - mars课程列表
  10. android中textView周围显示图片