changeset 836:ceb71a7a96f6

error: print thread name in cmn_err output Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
author Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
date Wed, 03 Mar 2021 19:12:53 -0500
parents 3d25e6c09e9f
children e1afd5b277d6
files error.c
diffstat 1 files changed, 15 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/error.c	Wed Mar 03 19:09:17 2021 -0500
+++ b/error.c	Wed Mar 03 19:12:53 2021 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013-2020 Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
+ * Copyright (c) 2013-2021 Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
@@ -31,6 +31,7 @@
 
 #include <jeffpc/config.h>
 #include <jeffpc/error.h>
+#include <jeffpc/thread.h>
 
 #include "init.h"
 
@@ -169,7 +170,9 @@
 {
 	const char *levelstr;
 	const char *session;
+	const char *name;
 	unsigned long tid;
+	size_t namelen;
 	int loglevel;
 	bool panic;
 	char buf[256];
@@ -213,9 +216,11 @@
 	vsnprintf(buf, sizeof(buf), fmt, ap);
 
 	/*
-	 * Get the session string.
+	 * Get the session & thread name strings.
 	 */
 	session = get_session();
+	name = xthr_get_name();
+	namelen = strlen(name);
 
 	/*
 	 * We are printing the thread ID as a 4-digit number. This will
@@ -225,8 +230,14 @@
 	 * clustered around some big integer, they will very likely always
 	 * print as the same number of digits.
 	 */
-	jeffpc_log(loglevel, "[%04lx] %-5s%s %s\n", tid, levelstr, session, buf);
-	jeffpc_print(level, "[%04lx] %-5s%s %s\n", tid, levelstr, session, buf);
+	jeffpc_log(loglevel, "[%04lx%s%s]%*s %-5s%s %s\n", tid,
+		   namelen ? "/" : "", name,
+		   XTHR_NAME_MAX_LEN - (int) namelen + (namelen ? 0 : 1), "",
+		   levelstr, session, buf);
+	jeffpc_print(level, "[%04lx%s%s]%*s %-5s%s %s\n", tid,
+		   namelen ? "/" : "", name,
+		   XTHR_NAME_MAX_LEN - (int) namelen + (namelen ? 0 : 1), "",
+		   levelstr, session, buf);
 
 	if (panic) {
 		print_stacktrace(CE_CRIT, NULL);