深入理解Android Telephony之RILD的启动

版本
Android 7.0

原生android rild目录位于hardware/ril,其中rild目录中定义rild.rc:

service ril-daemon /system/bin/rild
    class main
    socket rild stream 660 root radio
    socket sap_uim_socket1 stream 660 bluetooth bluetooth
    socket rild-debug stream 660 radio system
    user root
    group radio cache inet misc audio log readproc wakelock

然后在hardware/ril/rild中的Android.mk中包含到 LOCAL_INIT_RC

LOCAL_INIT_RC := rild.rc

LOCAL_INIT_RC 用于将rc文件编译到相应位置,比如rild.rc会编译到system/bin

MTK定制化rild,在alps/device/mediatek/$project/init.modem.rc:

service ril-daemon-mtk /vendor/bin/mtkrild
    class core
    socket rild stream 660 root radio
    socket rild2 stream 660 root radio
    socket rild3 stream 660 root radio
    socket rild4 stream 660 root radio
    socket rild-ims stream 660 root radio
    socket rild-debug stream 660 radio system
    socket rild-oem stream 660 radio system
    socket rild-mtk-ut stream 660 radio net_bt
    socket rild-mtk-ut-2 stream 660 radio net_bt
    socket rild-mtk-modem stream 660 radio system
    socket rild-atci stream 660 root radio
    socket rild-mal stream 660 radio system
    socket rild-mal-at stream 660 radio system
    socket rild-vsim stream 660 root radio
    socket rild-mbim stream 660 root radio
    socket sap_uim_socket1 stream 660 bluetooth bluetooth
    socket sap_uim_socket2 stream 660 bluetooth bluetooth
    user root
    group radio cache inet misc audio sdcard_r sdcard_rw log system
    disabled
    oneshot

service ril-daemon-mtkmd2 /vendor/bin/mtkrildmd2
    class core
    socket rild-md2 stream 660 root radio
    socket rild2-md2 stream 660 root radio
    socket rild-debug-md2 stream 660 radio system
    socket rild-oem-md2 stream 660 radio system
    socket rild-mtk-ut-md2 stream 660 radio net_bt
    socket rild-mtk-ut-2-md2 stream 660 radio net_bt
    socket rild-mtk-modem-md2 stream 660 radio system
    socket rild-atci-md2 stream 660 root radio
    socket rild-mal-md2 stream 660 radio system
    socket rild-mal-at-md2 stream 660 radio system
    socket rild-vsim-md2 stream 660 root radio
    socket rild-mbim-md2 stream 660 root radio
    user root
    group radio cache inet misc audio sdcard_r sdcard_rw log system
    disabled
    oneshot

这里定义了两个rild服务 :ril-daemon-mtk和ril-daemon-mtkmd2,并且分别都增加了不少socket

然后在device.mk中,把init.modem.rc拷贝到了系统根目录

PRODUCT_COPY_FILES += device/mediatek/mt6755/init.modem.rc:root/init.modem.rc

最后在init执行mount_all指令挂载分区时,会加载这些目录中的rc文件,并在合适的时机运行这些服务和操作。

adb shell命令可以看到,一个ril进程,一个phone进程,前者由init加载,后者由zygote64加载。

 $ ps | grep rild                                          
radio     1044  1     76608  5256  hrtimer_na 0000000000 S /vendor/bin/mtkrild
$ ps | grep phone                                             
radio     3435  471   1764972 80736 SyS_epoll_ 0000000000 S com.android.phone
$ ps | grep init                                          
root      1     0     27876  2364  SyS_epoll_ 0000000000 S /init
$ ps | grep zygote                                            
root      471   1     2135204 71208 poll_sched 0000000000 S zygote64
root      472   1     1568880 59088 poll_sched 0000000000 S zygote

参考资料
http://cache.baiducontent.com/c?m=9d78d513d99d1cfe0bb3837f7d01d0120e55f038608c96027ea4844fe7735a310737f7fc677c1f5e95833e7000dc5441baae6b27200357e6da9ed45dddccce7f699566732c4fdb4110d119adc946389260d601b8f14efaeca774c0f58c92c25353cc54037085fa&p=907fde15d9c041a4029f882d021489&newp=882a9645dd870efd1cb2de2d02149c231610db2151d7db1e6b82c825d7331b001c3bbfb423231404d5ce7f6402ab425be9fb3271330123a3dda5c91d9fb4c57479cc68663443cc&user=baidu&fm=sc&query=LOCAL_INIT_RC&qid=febf156a00002137&p1=1

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值