summaryrefslogtreecommitdiff
path: root/debuggerd/util.cpp
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2020-07-23 15:26:10 -0700
committerElliott Hughes <enh@google.com>2020-07-23 16:33:53 -0700
commita660cb3f13ad369554678ea19753cbc7e92726f3 (patch)
tree3559b09f77391adc9c74016ff9d9d2e52d2d1fb2 /debuggerd/util.cpp
parent4aa073337d6b872ff87b702c4dcfa26142e6c9c2 (diff)
debuggerd: use One True timestamp function.
An OEM asks for sub-second granularity, and that's most easily done if we only have one timestamp generator. I'm not convinced sub-second granularity is particularly useful myself, and I definitely don't think that nanosecond resolution is meaningful but I do like this cleanup, and if I'm going to use sub-second precision I may as well use the maximum precision available to me. Also reduce some duplication of code reading cmdline/comm. Bug: https://issuetracker.google.com/161860597 Test: head /data/tombstones/* Change-Id: I035ecfd4a3338ccd84dae0ef973a998a7c7c5056
Diffstat (limited to 'debuggerd/util.cpp')
-rw-r--r--debuggerd/util.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/debuggerd/util.cpp b/debuggerd/util.cpp
index a37b3b93b..9d09210f5 100644
--- a/debuggerd/util.cpp
+++ b/debuggerd/util.cpp
@@ -17,6 +17,7 @@
#include "util.h"
#include <sys/socket.h>
+#include <time.h>
#include <string>
#include <utility>
@@ -38,3 +39,19 @@ std::string get_thread_name(pid_t tid) {
android::base::ReadFileToString(android::base::StringPrintf("/proc/%d/comm", tid), &result);
return android::base::Trim(result);
}
+
+std::string get_timestamp() {
+ timespec ts;
+ clock_gettime(CLOCK_REALTIME, &ts);
+
+ tm tm;
+ localtime_r(&ts.tv_sec, &tm);
+
+ char buf[strlen("1970-01-01 00:00:00.123456789+0830") + 1];
+ char* s = buf;
+ size_t sz = sizeof(buf), n;
+ n = strftime(s, sz, "%F %H:%M", &tm), s += n, sz -= n;
+ n = snprintf(s, sz, ":%02d.%09ld", tm.tm_sec, ts.tv_nsec), s += n, sz -= n;
+ n = strftime(s, sz, "%z", &tm), s += n, sz -= n;
+ return buf;
+}