Commits

Greg Hackmann  committed 2baad52

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 <ghackmann@google.com>

(cherry picked from commit f14eef0c3c456bfe39f7e9d57c8f7ae4ec775972)

Change-Id: Ieb94caab1527c71f2155efe3795490b0ea215a29

  • Participants
  • Parent commits 26f2d2f

Comments (0)

Files changed (1)

File init/property_service.c

 };
 
 typedef struct {
-    void *data;
     size_t size;
     int fd;
 } workspace;
 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);
-    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);
+    int 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;
     if (property_area_inited)
         return -1;
 
-    if(init_workspace(&pa_workspace, PA_SIZE))
+    if(__system_property_area_init())
         return -1;
 
-    fcntl(pa_workspace.fd, F_SETFD, FD_CLOEXEC);
+    if(init_workspace(&pa_workspace, 0))
+        return -1;
 
-    __system_property_area_init(pa_workspace.data);
+    fcntl(pa_workspace.fd, F_SETFD, FD_CLOEXEC);
 
     property_area_inited = 1;
     return 0;