diff options
-rw-r--r-- | init/devices.cpp | 8 | ||||
-rw-r--r-- | init/ueventd.cpp | 4 |
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; |