summaryrefslogtreecommitdiffstats
path: root/debuggerd
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2015-04-24 22:25:12 -0700
committerElliott Hughes <enh@google.com>2015-04-24 22:25:12 -0700
commitb7cd09b93eaa8efa42db880a419d8d845dd4b4b3 (patch)
treef0976831988df186ff80dc3f1a000bdc5fc50456 /debuggerd
parent9798023e9f646a51222b5fd4683c91bfbfc5167f (diff)
downloadcore-b7cd09b93eaa8efa42db880a419d8d845dd4b4b3.tar.gz
core-b7cd09b93eaa8efa42db880a419d8d845dd4b4b3.tar.bz2
core-b7cd09b93eaa8efa42db880a419d8d845dd4b4b3.zip
Use WriteFully in debuggerd to talk to ActivityManager.
Change-Id: I5b57fda9b0343434e1c0f9189147075a368e0282
Diffstat (limited to 'debuggerd')
-rw-r--r--debuggerd/utility.cpp19
1 files changed, 3 insertions, 16 deletions
diff --git a/debuggerd/utility.cpp b/debuggerd/utility.cpp
index e10feff39..d6a6d2e6c 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;
}
}