void start_property_service(void) { int fd; // load_properties_from_file就是从文件中读取key和value,并把他们property_set(key, value); load_properties_from_file(PROP_PATH_SYSTEM_BUILD); // 获取之前的几个属性值 load_properties_from_file(PROP_PATH_SYSTEM_DEFAULT); load_override_properties(); /* Read persistent properties after all default values have been loaded. */ load_persistent_properties(); // 读取/data/property目录路中的属性值 // 创建套接字,以便init进程在收到子进程终止的SIGCHLD信号时调用相应的handler // PROP_SERVICE_NAME很熟悉的名字,在Bionic中的send_prop_msg时会连接这个属性并发送命令, // server端就是在这里实现的 fd = create_socket(PROP_SERVICE_NAME, SOCK_STREAM, 0666, 0, 0); if(fd < 0) return; fcntl(fd, F_SETFD, FD_CLOEXEC); fcntl(fd, F_SETFL, O_NONBLOCK); listen(fd, 8); property_set_fd = fd; #ifdef AW_BOOSTUP_ENABLE aw_init_boostup(); #endif }
void load_all_props(void) { load_properties_from_file(PROP_PATH_SYSTEM_BUILD, NULL); load_properties_from_file(PROP_PATH_SYSTEM_DEFAULT, NULL); load_properties_from_file(PROP_PATH_FACTORY, "ro.*"); load_override_properties(); #ifdef LENOVO_EASYIMAGE_SUPPORT //Lenovo [EasyImage] Start #define EASYIMAGE_OVERLAY_PROP "/system/easyimage/preload/prop.overlay" if( access(EASYIMAGE_OVERLAY_PROP,R_OK) !=-1 ) { load_properties_from_file_overwrite(EASYIMAGE_OVERLAY_PROP,NULL,1); //use 1 to overwrite ro prop } #define EASYIMAGE_OVERLAY_2_PROP "/system/easyimage/preload/prop.overlay.1" if( access(EASYIMAGE_OVERLAY_2_PROP,R_OK) !=-1 ) { load_properties_from_file_overwrite(EASYIMAGE_OVERLAY_2_PROP,NULL,1); //use 1 to overwrite ro prop } #endif //Lenovo [EasyImage] End /* Read persistent properties after all default values have been loaded. */ load_persistent_properties(); }
/* When booting an encrypted system, /data is not mounted when the * property service is started, so any properties stored there are * not loaded. Vold triggers init to load these properties once it * has mounted /data. */ void load_persist_props(void) { #ifdef ALLOW_LOCAL_PROP_OVERRIDE load_properties_from_file(PROP_PATH_LOCAL_OVERRIDE); #endif /* ALLOW_LOCAL_PROP_OVERRIDE */ /* Read persistent properties after all default values have been loaded. */ load_persistent_properties(); }
int property_init() { int rc; rc = __system_properties_init(); if (rc) return -1; load_properties_from_file(PROP_PATH_SYSTEM_BUILD); load_persistent_properties(); }
void load_all_props() { load_properties_from_file(PROP_PATH_SYSTEM_BUILD, NULL); load_properties_from_file(PROP_PATH_VENDOR_BUILD, NULL); load_properties_from_file(PROP_PATH_BOOTIMAGE_BUILD, NULL); load_properties_from_file(PROP_PATH_FACTORY, "ro.*"); load_override_properties(); /* Read persistent properties after all default values have been loaded. */ load_persistent_properties(); }
void load_all_props() { load_properties_from_file(PROP_PATH_SYSTEM_BUILD, NULL); load_properties_from_file(PROP_PATH_VENDOR_BUILD, NULL); load_properties_from_file(PROP_PATH_FACTORY, "ro.*"); load_override_properties(); /* Read persistent properties after all default values have been loaded. */ load_persistent_properties(); /* update with vendor-specific property runtime * overrides */ vendor_load_properties(); load_recovery_id_prop(); }
void start_property_service(void) { int fd; load_properties_from_file(PROP_PATH_SYSTEM_BUILD); load_properties_from_file(PROP_PATH_SYSTEM_DEFAULT); load_properties_from_file(PROP_PATH_LOCAL_OVERRIDE); /* Read persistent properties after all default values have been loaded. */ load_persistent_properties(); fd = create_socket(PROP_SERVICE_NAME, SOCK_STREAM, 0666, 0, 0); if(fd < 0) return; fcntl(fd, F_SETFD, FD_CLOEXEC); fcntl(fd, F_SETFL, O_NONBLOCK); listen(fd, 8); property_set_fd = fd; }
int start_property_service(char* hardware) { int fd; if (sizeof(hardware) > 0) { char props[64]; snprintf(props, sizeof(props), "/system/build.%s.prop", hardware); load_properties_from_file(props); } load_properties_from_file(PROP_PATH_SYSTEM_BUILD); load_properties_from_file(PROP_PATH_SYSTEM_DEFAULT); load_properties_from_file(PROP_PATH_LOCAL_OVERRIDE); /* Read persistent properties after all default values have been loaded. */ load_persistent_properties(); fd = create_socket(PROP_SERVICE_NAME, SOCK_STREAM, 0666, 0, 0); if(fd < 0) return -1; fcntl(fd, F_SETFD, FD_CLOEXEC); fcntl(fd, F_SETFL, O_NONBLOCK); listen(fd, 8); return fd; }
/* When booting an encrypted system, /data is not mounted when the * property service is started, so any properties stored there are * not loaded. Vold triggers init to load these properties once it * has mounted /data. */ void load_persist_props(void) { load_override_properties(); /* Read persistent properties after all default values have been loaded. */ load_persistent_properties(); }
/* When booting an encrypted system, /data is not mounted when the * property service is started, so any properties stored there are * not loaded. Vold triggers init to load these properties once it * has mounted /data. */ void load_persist_props(void) { load_properties_from_file(PROP_PATH_LOCAL_OVERRIDE); /* Read persistent properties after all default values have been loaded. */ load_persistent_properties(); }