aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xinit/init.c11
-rw-r--r--init/property_service.c8
-rw-r--r--init/property_service.h1
3 files changed, 15 insertions, 5 deletions
diff --git a/init/init.c b/init/init.c
index e2889b6b..3471cf86 100755
--- a/init/init.c
+++ b/init/init.c
@@ -193,9 +193,11 @@ void service_start(struct service *svc, const char *dynamic_args)
char tmp[32];
int fd, sz;
- get_property_workspace(&fd, &sz);
- sprintf(tmp, "%d,%d", dup(fd), sz);
- add_environment("ANDROID_PROPERTY_WORKSPACE", tmp);
+ if (properties_inited()) {
+ get_property_workspace(&fd, &sz);
+ sprintf(tmp, "%d,%d", dup(fd), sz);
+ add_environment("ANDROID_PROPERTY_WORKSPACE", tmp);
+ }
for (ei = svc->envvars; ei; ei = ei->next)
add_environment(ei->name, ei->value);
@@ -281,7 +283,8 @@ void service_start(struct service *svc, const char *dynamic_args)
svc->pid = pid;
svc->flags |= SVC_RUNNING;
- notify_service_state(svc->name, "running");
+ if (properties_inited())
+ notify_service_state(svc->name, "running");
}
void service_stop(struct service *svc)
diff --git a/init/property_service.c b/init/property_service.c
index a5a7a70a..e35cd387 100644
--- a/init/property_service.c
+++ b/init/property_service.c
@@ -49,6 +49,7 @@
#define PERSISTENT_PROPERTY_DIR "/data/property"
static int persistent_properties_loaded = 0;
+static int property_area_inited = 0;
static int property_set_fd = -1;
@@ -164,7 +165,7 @@ static int init_property_area(void)
/* plug into the lib property services */
__system_property_area__ = pa;
-
+ property_area_inited = 1;
return 0;
}
@@ -497,6 +498,11 @@ void property_init(void)
load_properties_from_file(PROP_PATH_RAMDISK_DEFAULT);
}
+int properties_inited(void)
+{
+ return property_area_inited;
+}
+
void start_property_service(void)
{
int fd;
diff --git a/init/property_service.h b/init/property_service.h
index 5bfa46c9..045d20a5 100644
--- a/init/property_service.h
+++ b/init/property_service.h
@@ -23,6 +23,7 @@ extern void start_property_service(void);
void get_property_workspace(int *fd, int *sz);
extern const char* property_get(const char *name);
extern int property_set(const char *name, const char *value);
+extern int properties_inited();
int get_property_set_fd(void);
#endif /* _INIT_PROPERTY_H */