From 2baad525205c944e6ef9005fcb324439f99bcdc8 Mon Sep 17 00:00:00 2001 From: Greg Hackmann Date: Tue, 12 Feb 2013 14:39:31 -0800 Subject: [PATCH] init: move initial property area allocation into bionic bionic's __system_property_add() now expands the property area as needed by mapping in more pages. Rather than duplicate the mapping code, move it inside bionic and have bionic's __system_property_area_init() set up the first page. Signed-off-by: Greg Hackmann (cherry picked from commit f14eef0c3c456bfe39f7e9d57c8f7ae4ec775972) Change-Id: Ieb94caab1527c71f2155efe3795490b0ea215a29 --- init/property_service.c | 33 +++++---------------------------- 1 file changed, 5 insertions(+), 28 deletions(-) diff --git a/init/property_service.c b/init/property_service.c index c682809dd..70ee4a6a5 100755 --- a/init/property_service.c +++ b/init/property_service.c @@ -110,7 +110,6 @@ struct { }; typedef struct { - void *data; size_t size; int fd; } workspace; @@ -118,36 +117,13 @@ typedef struct { static int init_workspace(workspace *w, size_t size) { void *data; - int fd; - - /* dev is a tmpfs that we can use to carve a shared workspace - * out of, so let's do that... - */ - fd = open(PROP_FILENAME, O_RDWR | O_CREAT | O_NOFOLLOW, 0644); + int fd = open(PROP_FILENAME, O_RDONLY | O_NOFOLLOW); if (fd < 0) return -1; - if (ftruncate(fd, size) < 0) - goto out; - - data = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); - if(data == MAP_FAILED) - goto out; - - close(fd); - - fd = open(PROP_FILENAME, O_RDONLY | O_NOFOLLOW); - if (fd < 0) - return -1; - - w->data = data; w->size = size; w->fd = fd; return 0; - -out: - close(fd); - return -1; } static workspace pa_workspace; @@ -157,13 +133,14 @@ static int init_property_area(void) if (property_area_inited) return -1; - if(init_workspace(&pa_workspace, PA_SIZE)) + if(__system_property_area_init()) + return -1; + + if(init_workspace(&pa_workspace, 0)) return -1; fcntl(pa_workspace.fd, F_SETFD, FD_CLOEXEC); - __system_property_area_init(pa_workspace.data); - property_area_inited = 1; return 0; }