隨筆-1  評論-68  文章-98  trackbacks-0

          整理:徐建祥(netpirate@gmail.com)
          日期:2009/09/21
          網址:http://www.anymobile.org

          初始化流程,主入口init.rc, rild.c中的main函數,主要完成三個任務:
          1. 開啟libril.so中的event機制, 在RIL_startEventLoop中,是最核心的由多路I/O驅動的消息循環。
          2. 初始化librefrence_ril.so,也就是跟硬件或模擬硬件modem通信的部分(后面統一稱硬件), 通過RIL_Init函數完成。
          3. 通過RIL_Init獲取一組函數指針RIL_RadioFunctions, 并通過RIL_register完成注冊,并打開接受上層命令的socket通道。

          RIL的線程和事件

          一共創建了3個線程,5個事件:
          s_wakeupfd_event(s_fdWakeupRead,pipe),
          s_listen_event(s_fdListen,socket RILD),
          s_commands_event(accept(s_fdListen...)),
          s_debug_event(s_fdDebug,socket RILD-debug),
          -1.

          第一個線程s_tid_dispath處理所有fd(socket,pipe,port)對應的事件處理,處理和上層RIL.JAVA聯系是第一個線程和對應的5個事件。
          第二個線程s_tid_mainloop和第三個線程s_tid_reader通過硬件層連接的fd,來處理readline,processline,處理下層硬件相關。

          posted on 2010-12-14 22:44 Xu Jianxiang 閱讀(448) 評論(0)  編輯  收藏 所屬分類: Android
          主站蜘蛛池模板: 腾冲县| 双流县| 府谷县| 哈密市| 临夏县| 永济市| 西充县| 额济纳旗| 襄城县| 沅陵县| 封开县| 广宁县| 祥云县| 同德县| 吐鲁番市| 宁陵县| 通化县| 舒兰市| 中宁县| 株洲县| 鄂伦春自治旗| 阳西县| 临漳县| 东莞市| 古交市| 曲松县| 会昌县| 神木县| 辽阳市| 怀化市| 轮台县| 东乌珠穆沁旗| 浪卡子县| 沁水县| 嘉定区| 广昌县| 赤壁市| 紫金县| 肇庆市| 烟台市| 遂昌县|