本篇分析usb_linux_client.c中的usb_init(),它的**如下:
void usb_init()
else
}
呼叫usb_adb_init():
static void usb_adb_init()
else
d("[ usb_init - starting thread ]\n");
if(adb_thread_create(&tid, usb_adb_open_thread, h))
}
usb_adb_open_thread的**如下:
static void *usb_adb_open_thread(void *x)
if (fd < 0)
} while (fd < 0);
d("[ opening device succeeded ]\n");
close_on_exec(fd);
usb->fd = fd;
d("[ usb_thread - registering device ]\n");
register_usb_transport(usb, 0, 0, 1);
}// never gets here
return 0;
}
這個執行緒的作用是一進入立即開啟/dev/android_adb或/dev/android,如果成功,則呼叫register_usb_transport()後再次迴圈,並阻塞在以下**處
while(usb->fd != -1)
adb_cond_wait(&usb->notify, &usb->lock);
當usb->kick()呼叫後fd的值被賦為-1,並傳送cond喚醒上面的**。
android adb原始碼分析 3
本篇分析fdevent.c的源 這個源 檔案的工作時建立 監聽和處理讀寫事件。static fdevent fd table 0 static int fd table max 0 fd table儲存的是以fdevent fd為索引儲存的fdevent指標,即 the fdevent的值等於fd ...
Android ADB 命令及原始碼編譯命令筆記
adb 常用命令 adb root 獲取root 許可權 adb remount 重新掛載 adb shell 進入terminal adb devices s serialnumber 檢視指定裝置狀態 adb devices 獲取裝置列表及裝置狀態 adb kill server adb sta...
spring原始碼分析 spring原始碼分析
1.spring 執行原理 spring 啟動時讀取應用程式提供的 bean 配置資訊,並在 spring 容器中生成乙份相應的 bean 配置登錄檔,然後根據這張登錄檔例項化 bean,裝配好 bean 之間的依賴關係,為上 層應用提供準備就緒的執行環境。二 spring 原始碼分析 1.1spr...