<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                下面來認識一下Vold,它的代碼在main.cpp中,如下所示: **Main.cpp** ~~~ int main() { VolumeManager *vm; CommandListener *cl; NetlinkManager *nm; SLOGI("Vold 2.1 (the revenge) firing up"); //創建文件夾/dev/block/vold mkdir("/dev/block/vold", 0755); //①創建VolumeManager對象 if(!(vm = VolumeManager::Instance())) { SLOGE("Unable to create VolumeManager"); exit(1); }; //②創建NetlinkManager對象 if(!(nm = NetlinkManager::Instance())) { SLOGE("Unable to create NetlinkManager"); exit(1); }; //③創建CommandListener對象 cl = new CommandListener(); vm->setBroadcaster((SocketListener *) cl); nm->setBroadcaster((SocketListener *) cl); //④啟動VM if(vm->start()) { ...... exit(1); } //⑤根據配置文件來初始化VM if(process_config(vm)) { ...... } //⑥啟動NM if(nm->start()) { ...... exit(1); } //通過往/sys/block目錄下對應的uevent文件寫”add\n”來觸發內核發送Uevent消息 coldboot("/sys/block"); { FILE *fp; char state[255]; /* Android支持將手機上的外部存儲設備作為磁盤掛載到電腦上。下面的代碼可查看是否打開了 磁盤掛載功能。這里涉及UMS(Usb Mass Storage,USB大容量存儲)方面的知識。 */ if((fp = fopen("/sys/devices/virtual/switch/usb_mass_storage/state", "r"))) { if (fgets(state, sizeof(state), fp)) { if (!strncmp(state, "online", 6)) { //⑧VM通過CL向感興趣的模塊(如MountService)通知UMS的狀態 vm->notifyUmsConnected(true); } else { vm->notifyUmsConnected(false); } } ...... fclose(fp); } ...... } ...... //⑨啟動CL if(cl->startListener()) { ...... exit(1); } //無限循環 while(1) { sleep(1000); } SLOGI("Vold exiting"); exit(0); } ~~~ 上面代碼中列出了九個關鍵點。由于Vold將其功能合理分配到了各個模塊中,所以這九個關鍵點將放到圖9-1所示Vold的三個模塊中去討論。 下面,看第一個模塊NetlinkManager,簡稱NM。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看