android adb原始碼分析 2

2021-07-15 19:45:59 字數 926 閱讀 8779

本篇分析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...