summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--init/devices.cpp8
-rw-r--r--init/ueventd.cpp4
2 files changed, 12 insertions, 0 deletions
diff --git a/init/devices.cpp b/init/devices.cpp
index 4944cec..9151f06 100644
--- a/init/devices.cpp
+++ b/init/devices.cpp
@@ -47,6 +47,7 @@
#include "ueventd_parser.h"
#include "util.h"
#include "log.h"
+#include "property_service.h"
#define SYSFS_PREFIX "/sys"
static const char *firmware_dirs[] = { "/etc/firmware",
@@ -55,6 +56,8 @@ static const char *firmware_dirs[] = { "/etc/firmware",
extern struct selabel_handle *sehandle;
+extern char boot_device[PROP_VALUE_MAX];
+
static int device_fd = -1;
struct uevent {
@@ -518,6 +521,11 @@ static char **get_block_device_symlinks(struct uevent *uevent)
else
links[link_num] = NULL;
+ if (pdev && boot_device[0] != '\0' && strstr(device, boot_device)) {
+ /* Create bootdevice symlink for platform boot stroage device */
+ make_link_init(link_path, "/dev/block/bootdevice");
+ }
+
return links;
}
diff --git a/init/ueventd.cpp b/init/ueventd.cpp
index c63fdaa..2dd8b01 100644
--- a/init/ueventd.cpp
+++ b/init/ueventd.cpp
@@ -33,6 +33,8 @@
#include "ueventd_parser.h"
#include "property_service.h"
+char boot_device[PROP_VALUE_MAX];
+
int ueventd_main(int argc, char **argv)
{
/*
@@ -65,6 +67,8 @@ int ueventd_main(int argc, char **argv)
ueventd_parse_config_file("/ueventd.rc");
ueventd_parse_config_file(android::base::StringPrintf("/ueventd.%s.rc", hardware).c_str());
+ property_get("ro.boot.bootdevice", boot_device);
+
device_init();
pollfd ufd;