Uevent是Android内核与用户进程进行通信的一种方式,其本质是通过netlink(通过socket)发送消息给用户进程。
本文只讲一个大概的流程,只分析通信的一个过程,不深入解析具体的数据结构和传递的参数。
关于netlink socket的通信,请参考:
https://blog.youkuaiyun.com/Sunxiaolin2016/article/details/89635302
一、Kernel发送
Uevent是在kernel中发送出来的,通过kobject_uevent_env进行发送:
kobject_uevent_env(&edev->dev.kobj, KOBJ_CHANGE, envp);
二、用户进程接收
接收过程中,使用了Linux epoll机制,对事件进行监控。
1、使用uevent_open_socket()创建netlink socket,用于监听uevent事件
//本质是打开一个netlink socket
uevent_fd = uevent_open_socket(64 * 1024, tru

本文介绍了Android系统中Uevent的通信机制,包括内核发送Uevent的方式及用户进程通过netlink socket和epoll机制接收并处理Uevent的过程。
最低0.47元/天 解锁文章
614

被折叠的 条评论
为什么被折叠?



