git: 874cdf6af695 - main - exterr: in verbose mode, print the source file name
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 29 Dec 2025 01:16:42 UTC
The branch main has been updated by kib:
URL: https://cgit.FreeBSD.org/src/commit/?id=874cdf6af695c42d561647f7165c99c2d3df0faa
commit 874cdf6af695c42d561647f7165c99c2d3df0faa
Author: Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2025-12-28 14:13:49 +0000
Commit: Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2025-12-29 01:16:25 +0000
exterr: in verbose mode, print the source file name
Reviewed by: emaste, mckusick
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D54380
---
lib/libc/gen/uexterr_format.c | 21 +++++++++++++++++----
sys/sys/exterr_cat.h | 11 +++++++++++
2 files changed, 28 insertions(+), 4 deletions(-)
diff --git a/lib/libc/gen/uexterr_format.c b/lib/libc/gen/uexterr_format.c
index 3321fd80616d..8d3b458ca9f2 100644
--- a/lib/libc/gen/uexterr_format.c
+++ b/lib/libc/gen/uexterr_format.c
@@ -8,7 +8,7 @@
* under sponsorship from the FreeBSD Foundation.
*/
-#include <sys/types.h>
+#include <sys/param.h>
#include <sys/exterrvar.h>
#include <exterr.h>
#include <stdbool.h>
@@ -17,6 +17,19 @@
#include <string.h>
#include <unistd.h>
+static const char * const cat_to_filenames[] = {
+#include "exterr_cat_filenames.h"
+};
+
+static const char *
+cat_to_filename(int category)
+{
+ if (category < 0 || category >= nitems(cat_to_filenames) ||
+ cat_to_filenames[category] == NULL)
+ return ("unknown");
+ return (cat_to_filenames[category]);
+}
+
static const char exterror_verbose_name[] = "EXTERROR_VERBOSE";
enum exterr_verbose_state {
EXTERR_VERBOSE_UNKNOWN = 100,
@@ -68,9 +81,9 @@ __uexterr_format(const struct uexterror *ue, char *buf, size_t bufsz)
char lbuf[128];
snprintf(lbuf, sizeof(lbuf),
- "errno %d category %u (src line %u) p1 %#jx p2 %#jx",
- ue->error, ue->cat, ue->src_line,
- (uintmax_t)ue->p1, (uintmax_t)ue->p2);
+ "errno %d category %u (src sys/%s:%u) p1 %#jx p2 %#jx",
+ ue->error, ue->cat, cat_to_filename(ue->cat),
+ ue->src_line, (uintmax_t)ue->p1, (uintmax_t)ue->p2);
if (has_msg)
strlcat(buf, " ", bufsz);
strlcat(buf, lbuf, bufsz);
diff --git a/sys/sys/exterr_cat.h b/sys/sys/exterr_cat.h
index 7492fc31662a..24f07539fe35 100644
--- a/sys/sys/exterr_cat.h
+++ b/sys/sys/exterr_cat.h
@@ -8,6 +8,17 @@
* under sponsorship from the FreeBSD Foundation.
*/
+/*
+ * The category identifiers for the extended errors.
+ * The ids participate in ABI between kernel and libc, so they must
+ * never be reused or changed. Only new ids can be added.
+ *
+ * After adding a new category id, run
+ * tools/build/make_libc_exterr_cat_filenames.sh
+ * from the top of the source tree, and commit updated file
+ * lib/libc/gen/exterr_cat_filenames.h
+ */
+
#ifndef _SYS_EXTERR_CAT_H_
#define _SYS_EXTERR_CAT_H_