整理:徐建祥(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 閱讀(445)
評論(0) 編輯 收藏 所屬分類:
Android