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 f14eef0c3c
)
Change-Id: Ieb94caab1527c71f2155efe3795490b0ea215a29
This commit is contained in:
parent
26f2d2f519
commit
2baad52520
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue