編輯:關於Android編程
init.c(system/core/init/init.c)
Linux系統中用戶空間的第一個進程,main函數中主要解析了兩個配置文件,init.rc和硬件相關的配置文件,解析調用的是 init_parse_config_file,在Ueventd_Parser.c的Parse_config進行解析,首先找到配置文件的section,不同的section使用不同的方式去解析, section為當symbol為on或者service的時候表示section,4.3加入了import關鍵字,在init.rc中
on init : on關鍵字,對應的section名字是init
分析init.rc文件
1、section的內容從標識開始,到下一個section結束
2、boot和init在on這個section中,
解析service section:
init.h中使用service結構體,通過Initparse.c中的parse_service和parse_line_service將配置文件的內容填充於service結構體中。
init控制Service:
1、啟動zygote,當init進程執行到do_class_start時,即啟動service,因為zygote的classname為default,因此在init.rc中 #class_start 為 default,在init.c中zygote
通過fork(創建子線程)和execve(執行新的service)共同創建。
2、重啟zygote,在init.rc中 poll事件中有個SVC_RESTARTING標識,設置了它,執行service中的onrestart命令,在init.c的for循環中,執 行restart_processes,重啟所有標識為SVC_RESTARTING的service。
屬性服務(property service),類似於注冊表,重啟後鍵值依然存在
1、屬性服務的初始化,init_property_aera()初始化存儲空間,PA_SIZE 32768個字節,PA_INFO_START(1024)個字節存儲頭部信息
2、由init創建在共享內存上,而共享內存可以跨進程,(init_workspace),客戶端可以直接讀取屬性空間,只有讀權限。
3、客戶端想要設置屬性,需要通過屬性服務器來交互,客戶端通過property_set發送請求,init進程由start_property_service啟動服務,創建 了一個用來接收請求的socket,收到後調用handle_property_set_fd進行處理,檢查是否有權限,如果有,調用property_set修改屬性值。
小米4S手機用什麼SIM卡?小米4S已經發布了,那麼有想購買意願的用戶也想知道小米4S用的是什麼電話卡,還有需不需要剪卡之類的,這裡小編來給大家介紹一下小米
一、先在中文官網官網地址找到教案。二、Homebrew裝上(mac版本直接輸入下面的命令)。/usr/bin/ruby -e "$(curl -fsSL htt
在程序開發過程中,LOG是廣泛使用的用來記錄程序執行過程的機制,它既可以用於程序調試,也可以用於產品運營中的事件記錄。在Android系統中,提供了簡單、便利的LOG機制
本教程為大家分享了Android日歷庫的使用方法,供大家參考,具體內容如下MainActivity.java代碼:package siso.weekv;import an