Android RIL代码详细分析

 

RIL代码分析

代码位于:android/hardware/ril

1 rild.c中的main()函数提供了rild的入口

首先,通过main函数的传参,cmdline,内核选项等方式获取rild.libpathrild.libargs

我们这里主要是:/system/lib/libreference-ril.so

2 RIL_startEventLoop():建立消息队列的机制,开始事件的监听

函数RIL_startEventLoop()开启了一标识符为s_tid_dispatch的线程,线程的入口函数为eventLoop()

ril_event_init()进行消息队列的初始化,主要是初始化读文件描述符集readfds,time_list,pending_listwatch_table;后面三个都是ril_event的结构体变量

由定义可以看出它是一个双向链表。(重要的数据结构,后面会反复使用)

通过pipe()创建一个无名管道,对这个管道的读写描述符分别为:

 

创建一个s_wakeupfd_eventril_event,消息的fds_fdWakeupRead,消息的处理函数为processWakeupCallback();这个处理函数主要是读取管道内的消息。

s_wakeupfd_event加入消息队列并触发消息队列:

ril_event_add(ev):将ev加入watch_table[i];将ev->fd加入读文件描述符集readFds

triggerEvLoop():如果s_tid_dispatch 线程结束,通过s_fdWakeupWrite写一个变

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值