• main()
• RIL_register()
• mainLoop()
mainLoop()
at_set_on_reader_closed()
at_set_on_timeout()
open(tty)
at_open()
pthread_create(readerLoop)
for(;;)
readline()
isSMSUnsolicited()
strdup()
s_unsolHandle()
processLine()
onReaderclosed()
RIL_requestTimedCallback(initializeCallback)
waitForClose()
•
• RIL_register()
• RIL_startEventLoop()
• pthread_mutex_locK()
• pthread_create()---eventLoop()
• ril_event_init();
• pthread_mutex_lock(&s_startupMutex);
• pthread_cond_broadcast(&s_startupCond);
• pthread_mutex_unlock(&s_startupMutex);
• pipe(filedes);
• fcntl(s_fdWakeupRead, F_SETFL, O_NONBLOCK);
• ril_event_set (&s_wakeupfd_event, s_fdWakeupRead, true, processWakeupCallback);
while { read() }
• rilEventAddWakeup (&s_wakeupfd_event);
• ril_event_loop();
• for(;;)
• select()
• processTimeOuts()
• processReadReadies()
• firePending()
• kill(0, SIGKILL);
• android_get_control_socket()
• listen()
• ril_event_set() -- s_listen_event, listenCallback, s_fdListen
• accept()
• rilEventAddWakeup()
• getsockopt()
• getpwuid()
• close()
• onCommandsSocketClosed()
• rilEventAddWakeup()
• fcntl()
• record_stream_new()
• ril_event_set() -- s_commands_event, s_fdCommand, processCommandsCallback
• record_stream_get_next()
• processCommandBuffer()
• pRI->pCI = &(s_commands[request]);
• pRI->pCI->dispatchFunction(p, pRI);
• s_callbacks.onRequest()
• close()
• ril_event_del()
• record_stream_free()
• rilEventAddWakeup()
• ril_event_add(ev);
• triggerEvLoop();
• While { write() }
• onCommandsSocketClosed()
• rilEventAddWakeup()
• onNewCommandConnect()
• rilEventAddWakeup()
• ril_event_set() -- debugCallback, debugCallback, s_fdDebug
• issueLocalRequest()
• pRI->pCI = &(s_commands[request]);
• requestToString()
• s_callbacks.onRequest()
• RIL_requestTimeCallback()
• internalRequestTimedCallback()
• UserCallbackInfo->p_callback
• ril_event_set -- userTimerCallback()
• ril_timer_add()
• triggerEvLoop()
• While { write() }
• RIL_onRequestComplete()
• checkAndDequeueRequestInfo()
• requestToString()
• appendPrintBuf()
• pRI->pCI->responseFunction()
• writeStringToParcel()
• sendResponse()
• sendResponseRaw()
• blockingWrite()
• RIL_onUnsolicitedResponse()
• s_unsolResponses[] ----
• grabPartialWakeLock()
• acquire_wake_lock()
• processRadioState()
• decodeVoiceRadioTechnology()
• is3gpp2()
• RIL_onUnsolicitedResponse()
• decodeCdmaSubscriptionSource()
• decodeSimStatus()
• sendResponse()
• sendResponseRaw()
• blockingWrite()
• internalRequestTimedCallback() --- wakeTimeoutCallback()
• ----- releaseWakeLock()