git: f3ca689d176f - stable/15 - kdump: tweaks for the extended errors decoding
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 23 Apr 2026 17:09:35 UTC
The branch stable/15 has been updated by kib:
URL: https://cgit.FreeBSD.org/src/commit/?id=f3ca689d176f6653ddccd22674b9b19755dcc55d
commit f3ca689d176f6653ddccd22674b9b19755dcc55d
Author: Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2026-04-21 06:13:04 +0000
Commit: Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2026-04-23 17:09:06 +0000
kdump: tweaks for the extended errors decoding
(cherry picked from commit 5c89d661a023c83a2001cf5b354b09c7d3ac91d8)
---
usr.bin/kdump/Makefile | 1 +
usr.bin/kdump/kdump.c | 23 ++++++++++++++++++++---
2 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/usr.bin/kdump/Makefile b/usr.bin/kdump/Makefile
index 2c5c456a6de5..cef87f665b46 100644
--- a/usr.bin/kdump/Makefile
+++ b/usr.bin/kdump/Makefile
@@ -5,6 +5,7 @@
PROG= kdump
SRCS= kdump.c subr.c
CFLAGS+= -I${SRCTOP}/usr.bin/ktrace
+CFLAGS+= -I${SRCTOP}/lib/libc/gen
LIBADD= sysdecode
.if ${MK_CASPER} != "no"
diff --git a/usr.bin/kdump/kdump.c b/usr.bin/kdump/kdump.c
index d3f2ac882e61..9ebd18646474 100644
--- a/usr.bin/kdump/kdump.c
+++ b/usr.bin/kdump/kdump.c
@@ -40,6 +40,7 @@
#include <sys/_bitset.h>
#include <sys/bitset.h>
#include <sys/errno.h>
+#include <sys/exterr_cat.h>
#include <sys/time.h>
#include <sys/uio.h>
#include <sys/event.h>
@@ -2442,15 +2443,31 @@ bad_size:
return;
}
+static const char * const cat_to_filenames[] = {
+#include <exterr_cat_filenames.h>
+};
+
+static const char *
+cat_to_filename(int category)
+{
+ if (category < 0 || (unsigned)category >= nitems(cat_to_filenames) ||
+ cat_to_filenames[category] == NULL)
+ return ("unknown");
+ return (cat_to_filenames[category]);
+}
+
static void
ktrexterr(struct ktr_exterr *ke)
{
+ char *msg;
struct uexterror *ue;
ue = &ke->ue;
- printf("{ errno %d category %u (src line %u) p1 %#jx p2 %#jx %s }\n",
- ue->error, ue->cat, ue->src_line,
- (uintmax_t)ue->p1, (uintmax_t)ue->p2, ue->msg);
+ asprintf(&msg, ue->msg, (uintmax_t)ue->p1, (uintmax_t)ue->p2);
+ printf("{ errno %d %s:%u \"%s\" (category %u p1 %#jx p2 %#jx) }\n",
+ ue->error, cat_to_filename(ue->cat), ue->src_line, msg,
+ ue->cat, (uintmax_t)ue->p1, (uintmax_t)ue->p2);
+ free(msg);
}
static void