Skip to content
Snippets Groups Projects
Commit fdafb3d0 authored by Wei Wang's avatar Wei Wang
Browse files

init: Add warning in init first stage mount

init need find required devices and it some times takes a long time due
to rogue drivers. Add a warning if the timing is longer than 50ms.

Bug: 80494921
Test: Reboot
Change-Id: I8f937d7ca7127dc89ed76bb6e5f1781459d5c94a
parent 72221992
Branches
Tags
No related merge requests found
...@@ -23,7 +23,11 @@ ...@@ -23,7 +23,11 @@
#include <memory> #include <memory>
#include <android-base/chrono_utils.h>
#include <android-base/file.h>
#include <android-base/logging.h> #include <android-base/logging.h>
#include <android-base/scopeguard.h>
#include <android-base/stringprintf.h>
#include <cutils/uevent.h> #include <cutils/uevent.h>
namespace android { namespace android {
...@@ -130,9 +134,19 @@ ListenerAction UeventListener::RegenerateUeventsForDir(DIR* d, ...@@ -130,9 +134,19 @@ ListenerAction UeventListener::RegenerateUeventsForDir(DIR* d,
int fd = openat(dfd, "uevent", O_WRONLY); int fd = openat(dfd, "uevent", O_WRONLY);
if (fd >= 0) { if (fd >= 0) {
android::base::Timer t;
write(fd, "add\n", 4); write(fd, "add\n", 4);
const std::string fd_path = android::base::StringPrintf("/proc/self/fd/%d", fd);
std::string uevent_file_path;
android::base::Readlink(fd_path, &uevent_file_path);
close(fd); close(fd);
auto guard = android::base::make_scope_guard([&t, &uevent_file_path]() {
if (t.duration() > 50ms) {
LOG(WARNING) << "ReadUevent took " << t << " on '" << uevent_file_path << "'";
}
});
Uevent uevent; Uevent uevent;
while (ReadUevent(&uevent)) { while (ReadUevent(&uevent)) {
if (callback(uevent) == ListenerAction::kStop) return ListenerAction::kStop; if (callback(uevent) == ListenerAction::kStop) return ListenerAction::kStop;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment