diff options
author | Elliott Hughes <enh@google.com> | 2015-04-24 22:25:12 -0700 |
---|---|---|
committer | Elliott Hughes <enh@google.com> | 2015-04-27 12:51:42 -0700 |
commit | f5290ee1a72ba063d2efb2e0ec604006fa042985 (patch) | |
tree | 460e1b7257769413d888bdac57e21d56e5e7c76c /debuggerd | |
parent | 55db2ebca952fa9380f1c1606360bbc276c4d9be (diff) | |
download | system_core-f5290ee1a72ba063d2efb2e0ec604006fa042985.zip system_core-f5290ee1a72ba063d2efb2e0ec604006fa042985.tar.gz system_core-f5290ee1a72ba063d2efb2e0ec604006fa042985.tar.bz2 |
Use WriteFully in debuggerd to talk to ActivityManager.
(cherry picked from commit b7cd09b93eaa8efa42db880a419d8d845dd4b4b3)
Change-Id: Ic81b4134fe563d8ebb15ba4ff3e9b2e8893c97a5
Diffstat (limited to 'debuggerd')
-rw-r--r-- | debuggerd/utility.cpp | 19 |
1 files changed, 3 insertions, 16 deletions
diff --git a/debuggerd/utility.cpp b/debuggerd/utility.cpp index e10feff..d6a6d2e 100644 --- a/debuggerd/utility.cpp +++ b/debuggerd/utility.cpp @@ -26,25 +26,12 @@ #include <sys/wait.h> #include <backtrace/Backtrace.h> +#include <base/file.h> #include <log/log.h> const int SLEEP_TIME_USEC = 50000; // 0.05 seconds const int MAX_TOTAL_SLEEP_USEC = 10000000; // 10 seconds -static int write_to_am(int fd, const char* buf, int len) { - int to_write = len; - while (to_write > 0) { - int written = TEMP_FAILURE_RETRY(write(fd, buf + len - to_write, to_write)); - if (written < 0) { - // hard failure - ALOGE("AM write failure (%d / %s)\n", errno, strerror(errno)); - return -1; - } - to_write -= written; - } - return len; -} - // Whitelist output desired in the logcat output. bool is_allowed_in_logcat(enum logtype ltype) { if ((ltype == ERROR) @@ -82,9 +69,9 @@ void _LOG(log_t* log, enum logtype ltype, const char* fmt, ...) { if (write_to_logcat) { __android_log_buf_write(LOG_ID_CRASH, ANDROID_LOG_INFO, LOG_TAG, buf); if (write_to_activitymanager) { - int written = write_to_am(log->amfd, buf, len); - if (written <= 0) { + if (!android::base::WriteFully(log->amfd, buf, len)) { // timeout or other failure on write; stop informing the activity manager + ALOGE("AM write failed: %s", strerror(errno)); log->amfd = -1; } } |