由《android电话系统rild之概述篇》可知,rild是init进程启动的一个守护进程,加载了libril.so和Reference-ril.so,从而实现了电话服务与硬件设备之间的通信。本文将介绍rild守护进程启动的流程。
Contents[hide] |
启动
init.rc中,启动rild守护进程。
service ril-daemon /system/bin/rild class main socket rild stream 660 root radio socket rild-debug stream 660 radio system user root group radio cache inet misc audio sdcard_rw qcom_oncrpc diag
流程分析
code path:Z:\Triangle\hardware\ril\rild\rild.c
下图所示为rild守护进程启动流程图。
[edit]函数调用时序图
[edit]summary
从以上图中可以得知,rild守护进程的主要作用是:
开启eventloop,循环监听ril-java发来的命令; 加载reference-ril.so,打开rild与modem通信的硬件设备接口并对其初始化,创建readloop读取modem发来的响应; 建立并开启socket,接收ril-java发来的数据; 进入while循环;
下一章将介绍rild处理数据流的流程(ril-java发送给rild,rild转换成AT命令再发给modem以及rild读取modem发来的消息,再上传给ril-java的流程)。