一、dhcp client 和 dhcpcd server直接的資訊互動:
client 和server 通過property_get/set 共享記憶體來共享資訊。
property_get/set(key,value),儲存在共享記憶體中,系統中的各個程序可以通過property_service訪問。
二、dhcp 客戶端:
啟動dhcp 請求:
原始碼:gingerbread/system/core/libnetutils/dhcp_utils.c
int dhcp_do_request(const char *inte***ce, in_addr_t *ipaddr, in_addr_t *gateway, in_addr_t *mask, in_addr_t *dns1, in_addr_t *dns2, in_addr_t *server, uint32_t *lease)
else }
static void fill_ip_info(const char *inte***ce, in_addr_t *ipaddr, in_addr_t *gateway, in_addr_t *mask, in_addr_t *dns1, in_addr_t *dns2, in_addr_t *server, uint32_t *lease)
三、dchpcd 服務端程序:
原始碼:gingerbread/external/dhcpcd/dhcpcd.c
main()
dhcp_run()
handle_timeout(struct if_state *state, const struct options *options)
switch (state->state)
case state_renewing:
case state_rebinding:
if (iface->raw_fd == -1)
do_socket(state, socket_open);
send_message(state, dhcp_request, options);
break;
}} handle_dhcp_packet()àhandle_dhcp()àbind_dhcp()àconfigure()àrun_script()
執行指令碼檔案/system/etc/dhcpcd/dhcpcd-run-hooks,指令碼檔案呼叫setprop命令設定dhcp相關引數,並設定dhcp result.
case "$" in
bound|inform|rebind|reboot|renew|timeout)
setprop dhcp.$.ipaddress "$"
setprop dhcp.$.gateway
"$"setprop dhcp.$.mask
"$"setprop dhcp.$.leasetime "$"
setprop dhcp.$.server
"$"setprop dhcp.$.result "ok"
;;expire|fail|ipv4ll|stop)
setprop dhcp.$.result "failed"
;;release)
setprop dhcp.$.result "released"
;;
啟動故障分析
最近看到好多帖子是關於啟動故障的,找了些資料,結合本人拙建,希望對大家有所幫助 電腦的啟動過程是乙個非常複雜的過程,它有乙個非常完善的自檢體系,在你按下電源開關的幾秒之內,要經歷大約100多個檢測步驟,以下是啟動過程以及常見的問題和大致的判斷 一 電源,主機板,cpu 當按下電源開關時,電源開始供電...
Zygote啟動分析
基於效能的考慮,dalvik虛擬機器只啟動一次,新的例項將從第一次啟動的dalvik中拷貝。這個功能是通過系統服務zygote來實現的。zygote的啟動過程簡述如下 首先,它預初始化和預載入通用的android類到它的堆中。然後,它監聽在socket埠上,等待啟動乙個新的android應用程式的命...
Mycat 啟動分析
mycat版本 1.4.1 dev mycat啟動類 org.opencloudb.mycatstartup mycat home org.opencloudb.config.model.systemconfig mycat系統基礎配置項。mycat啟動時,首先會檢查mycat home是否設定。如...