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) {
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));
}