Show TID instead of PID in warn_time().
authorEmil Mikulic <emikulic@gmail.com>
Sun, 10 Mar 2013 17:23:14 +0000 (04:23 +1100)
committerEmil Mikulic <emikulic@gmail.com>
Sun, 10 Mar 2013 17:26:20 +0000 (04:26 +1100)
buftee.c

index 4b03eca..0ab9bd4 100644 (file)
--- a/buftee.c
+++ b/buftee.c
@@ -175,6 +175,10 @@ static void time_diff(const struct timespec* restrict start,
   assert(out->tv_nsec < 1000000000);
 }
 
+static int gettid(void) {
+  return (int)syscall(SYS_gettid);
+}
+
 static void warn_time(const char* desc,
                       const struct timespec* restrict start,
                       const struct timespec* restrict end) {
@@ -183,9 +187,8 @@ static void warn_time(const char* desc,
   if (diff.tv_sec > 0 || diff.tv_nsec > SLOW_NSEC) {
     char buf[128];
     extern char *__progname;  // This is where glibc stashes argv[0].
-    snprintf(buf, sizeof(buf), "%d: %s: %s took %d.%09d secs\n",
-            (int)getpid(), __progname, desc,
-            (int)diff.tv_sec, (int)diff.tv_nsec);
+    snprintf(buf, sizeof(buf), "%s:tid %d: %s took %d.%09d secs\n",
+            __progname, gettid(), desc, (int)diff.tv_sec, (int)diff.tv_nsec);
     // Best effort write to a non-blocking stderr.
     (void)write(STDERR_FILENO, buf, strlen(buf));
   }