property_service是在init中启动的,
int main(int argc, char **argv){
property_init();
property_load_boot_defaults(); // 加载"/default.prop"
queue_builtin_action(property_service_init_action, "property_service_init");
// ...
void property_init(void){
init_property_area(); // 开始初始化property内存和workspace
}
static int init_property_area(void) {
if (property_area_inited)
return -1;
if(__system_property_area_init()) // 映射一块内存
return -1;
if(init_workspace(&pa_workspace, 0)) // 初始化workspace
return -1;
fcntl(pa_workspace.fd, F_SETFD, FD_CLOEXEC);
property_area_inited = 1; // 初始化完成标记
return 0;
}
int __system_property_area_init(){
return map_prop_area_rw();
}
static int map_prop_area_rw(){
prop_area *pa;
int fd;
int ret;
/* dev is a tmpfs that we can use to carve a shared workspace