freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

android本質(zhì)上就是一個(gè)基于linux內(nèi)核的操作系統(tǒng)-資料下載頁

2025-06-19 08:13本頁面
  

【正文】 ftl(, F_SETFD, FD_CLOEXEC)。 pa_info_array = (void*) (((char*) ) + PA_INFO_START)。 pa = 。 memset(pa, 0, PA_SIZE)。 pamagic = PROP_AREA_MAGIC。 paversion = PROP_AREA_VERSION。 /* 初始化屬性內(nèi)存區(qū)域,屬性服務(wù)會(huì)使用該區(qū)域 */ __system_property_area__ = pa。 property_area_inited = 1。 return 0。} ,其實(shí)還有另外兩個(gè)表示路徑的宏,一共4個(gè)屬性文件。Android源代碼根目錄/bionic/libc/include/sys目錄中找到。這4個(gè)宏定義如下:define PROP_PATH_RAMDISK_DEFAULT /define PROP_PATH_SYSTEM_BUILD /system/define PROP_PATH_SYSTEM_DEFAULT /system/define PROP_PATH_LOCAL_OVERRIDE /data/ 現(xiàn)在讀者可以進(jìn)入Android設(shè)備的相應(yīng)目錄,通??梢哉业缴鲜?個(gè)文件,如一般會(huì)在根目錄,cat 。而屬性服務(wù)就是裝載所有這4個(gè)屬性文件中的所有屬性以及使用property_set設(shè)置的屬性。在Android設(shè)備的終端可以直接使用getprop命令從屬性服務(wù)獲取所有的屬性值。如圖2所示。getprop命令還可以直接根屬性名還獲取具體的屬性值,例如,getprop 。 圖2 如果讀者感興趣,可以看一下getprop是如何通過屬性服務(wù)讀寫屬性的。讀者可以在Android源代碼根目錄/system/core/toolbox目錄中找到該文件。實(shí)際上,getprop獲取屬性值也是通過property_get函數(shù)完成的。在前面分析過該函數(shù),實(shí)際上調(diào)用了__system_property_find函數(shù)從__system_property_area__變量指定的內(nèi)存區(qū)域獲取相應(yīng)的屬性值。 。static int send_prop_msg(prop_msg *msg){ struct pollfd pollfds[1]。 struct sockaddr_un addr。 socklen_t alen。 size_t namelen。 int s。 int r。 int result = 1。 // 創(chuàng)建用于連接屬性服務(wù)的socket s = socket(AF_LOCAL, SOCK_STREAM, 0)。 if(s 0) { return result。 } memset(amp。addr, 0, sizeof(addr))。 // property_service_socket是Socket設(shè)備文件名稱 namelen = strlen(property_service_socket)。 strlcpy(, property_service_socket, sizeof )。 = AF_LOCAL。 alen = namelen + offsetof(struct sockaddr_un, sun_path) + 1。 if(TEMP_FAILURE_RETRY(connect(s, (struct sockaddr *) amp。addr, alen)) 0) { close(s)。 return result。 } r = TEMP_FAILURE_RETRY(send(s, msg, sizeof(prop_msg), 0))。 if(r == sizeof(prop_msg)) { pollfds[0].fd = s。 pollfds[0].events = 0。 r = TEMP_FAILURE_RETRY(poll(pollfds, 1, 250 /* ms */))。 if (r == 1 amp。amp。 (pollfds[0].revents amp。 POLLHUP) != 0) { result = 0。 } else { result = 0。 } } close(s)。 return result。}// 用戶可以直接調(diào)用該函數(shù)設(shè)置屬性值int __system_property_set(const char *key, const char *value){ int err。 int tries = 0。 int update_seen = 0。 prop_msg msg。 if(key == 0) return 1。 if(value == 0) value = 。 if(strlen(key) = PROP_NAME_MAX) return 1。 if(strlen(value) = PROP_VALUE_MAX) return 1。 memset(amp。msg, 0, sizeof msg)。 = PROP_MSG_SETPROP。 strlcpy(, key, sizeof )。 strlcpy(, value, sizeof )。 // 設(shè)置屬性值 err = send_prop_msg(amp。msg)。 if(err 0) { return err。 } return 0。} 在send_prop_msg函數(shù)中涉及到一個(gè)property_service_socket變量,定義如下:static const char property_service_socket[] = /dev/socket/ PROP_SERVICE_NAME。 實(shí)際上,send_prop_msg通過這個(gè)設(shè)備文件與屬性服務(wù)通訊的。讀者可以在Android設(shè)備的終端進(jìn)入/dev/socket目錄,通常會(huì)看到一個(gè)property_service文件,該文件就是屬性服務(wù)映射的設(shè)備文件。 現(xiàn)在已經(jīng)分析完了init如何確定與硬件相關(guān)的初始化文件名(),并且討論了4個(gè)屬性文件及其裝載過程,以及屬性服務(wù)實(shí)現(xiàn)的基本原理。在下一篇文章中將討論更深入的內(nèi)容,例如,那么什么是aciton呢,?這些內(nèi)容都將在下一篇文章中揭曉。
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1