Android RIL daemon call stack

• 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()

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值