From nobody Mon Aug 3 21:44:05 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4hDVYd5JR1z6n4n4 for ; Mon, 03 Aug 2026 21:44:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hDVYd4hjqz3FGb for ; Mon, 03 Aug 2026 21:44:05 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1785793445; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=RdhlJo5+ih2l+/AQ6dUdwRMy90RV8jrl2plJ6J4OkKo=; b=Zawp4QNtTjpd/hQxL5DffbxzOftw7Xl7jBb5etNRjS5AgVeg18SQO+SMFKvEPYZi1nfQbM yMZK4D1QmpoITGw78Ofyy/30cAy+su5i0bqRRAIk8cx+QFwkMtzWGqnkFhYJDeXWEVjWEF hpyTCnuUNStfmeb+5BUKHnoS/HRi1z/9yDNUDMY1PUiVPyBjZuj1k5JBPjFHfn9wVxb/7/ E8ylHyW6tC9hZIqBthf9rjN8bM5uanT703EPpCy887939U6L2L7Pznk10cpovUrTKqpbj1 wr9OuvTLdSOQVK0Q+qEn1YpkJZuhGTrnmqQYQPaYsCJ47Sz8EynyDg9bDeMGXg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1785793445; a=rsa-sha256; cv=none; b=mXjDLZD6a5Us3DXmM9BpShxC7dR3cdxSv9TaltC54v9bExSuojk6Wdy6SRdewAKW3wUkY/ zHVbpwoOm0ZEeNlGdqWnhbLdMOYGj6K7q8/cu1SWzDKLfsHJhZylVlJPQvhkkojBcgeuES Cp7vSMmX6shyapBy8K4AfzXhiaD3e95O2UKG+6RpfeIrI2LbaIgpLgGXDziBAwEqSeqGQE w6v1ewDOl/ugaAlLpSHxZuyNfYLUie61vlgNp33QHojE7fOS1x+isdB/ZaxVKXxfHNV9cB jLM+eT9zOcwf76/Etr8Auu2gvBXMobBdSx2iWd49IBkabu6S+tkJkhJgdIgaDQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1785793445; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=RdhlJo5+ih2l+/AQ6dUdwRMy90RV8jrl2plJ6J4OkKo=; b=sy8e1U6Hz3b2eQ3uGTV8iE0/Ji8qwlhpANoUwm1U9mKh44CXjHNy4v3/God6tJs0O7fHjO NbJPLH5PkxqVPmoQhcPuFWhqr+VaGyDWjd5K57BQopNK5pbsDJQg2z/rQv2hSWEEEwSsyi B5vQvzf/PBVf0DGgDsWelrdAyt2J1BD4khswjd9+/MTHlPMnoRXn9Qp4ZiKYyFspTCXSNA GV1c4eGURcvAbUrasmx+QtYi0nhlveJuhThZ6FZ1PzKsBU+2gRAtQu2BNARU9Bab3okoQD 4HHxflORMT4he7T3pXA/plOq0LzL5hCXXzVRvtuwepWGtgMpwOZKgBmHxArz7A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hDVYd3Hr6z3WK for ; Mon, 03 Aug 2026 21:44:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3cf94 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 03 Aug 2026 21:44:05 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Brooks Davis Subject: git: bbf95a9b8481 - main - exterror(9): split category into multiple sources List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: brooks X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: bbf95a9b8481e41a99b301e12338e1cda6915a01 Auto-Submitted: auto-generated Date: Mon, 03 Aug 2026 21:44:05 +0000 Message-Id: <6a710ba5.3cf94.105bbf6b@gitrepo.freebsd.org> The branch main has been updated by brooks: URL: https://cgit.FreeBSD.org/src/commit/?id=bbf95a9b8481e41a99b301e12338e1cda6915a01 commit bbf95a9b8481e41a99b301e12338e1cda6915a01 Author: Brooks Davis AuthorDate: 2026-08-03 16:48:27 +0000 Commit: Brooks Davis CommitDate: 2026-08-03 21:43:22 +0000 exterror(9): split category into multiple sources The static, global index into an array of strings is simple, cheap, and works for the base kernel, but is unworkable for (potentially third-party) kernel modules or for arbitrary userspace code. Swipe a few of the top bits of category to indicate a source with all-zeros being the current model (EXTERR_CAT_SRC_KERN_STATIC). Add two additional sources EXTERR_CAT_SRC_KERN_DYNAMIC and EXTERR_CAT_SRC_USER with stub implementations. Reviewed by: kib Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D58236 --- lib/libc/gen/uexterr_format.c | 18 +++++++++++++++--- sys/sys/exterr_cat.h | 12 ++++++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/lib/libc/gen/uexterr_format.c b/lib/libc/gen/uexterr_format.c index 308220adea1f..df93ae1447cd 100644 --- a/lib/libc/gen/uexterr_format.c +++ b/lib/libc/gen/uexterr_format.c @@ -25,10 +25,22 @@ static const char * const cat_to_filenames[] = { static const char * cat_to_filename(int category) { - if (category < 0 || category >= nitems(cat_to_filenames) || - cat_to_filenames[category] == NULL) + switch (EXTERR_CAT_SRC(category)) { + case EXTERR_CAT_SRC_KERN_STATIC: + if (category < 0 || category >= nitems(cat_to_filenames) || + cat_to_filenames[category] == NULL) + return ("unknown:kern"); + return (cat_to_filenames[category]); + + case EXTERR_CAT_SRC_KERN_DYNAMIC: + return ("unknown:kern"); + + case EXTERR_CAT_SRC_USER: + return ("unknown:user"); + + default: return ("unknown"); - return (cat_to_filenames[category]); + } } static const char exterror_verbose_name[] = "EXTERROR_VERBOSE"; diff --git a/sys/sys/exterr_cat.h b/sys/sys/exterr_cat.h index 637cecdcbcd0..1b56e241023b 100644 --- a/sys/sys/exterr_cat.h +++ b/sys/sys/exterr_cat.h @@ -22,6 +22,18 @@ #ifndef _SYS_EXTERR_CAT_H_ #define _SYS_EXTERR_CAT_H_ +#define _EXTERR_CAT_SRC_SHIFT 28 +#define EXTERR_CAT_SRC_MASK (0xf << _EXTERR_CAT_SRC_SHIFT) + +#define EXTERR_CAT_SRC_KERN_STATIC (0 << _EXTERR_CAT_SRC_SHIFT) +#define EXTERR_CAT_SRC_KERN_DYNAMIC (1 << _EXTERR_CAT_SRC_SHIFT) +#define EXTERR_CAT_SRC_USER (2 << _EXTERR_CAT_SRC_SHIFT) + +#define EXTERR_CAT_SRC(c) ((c) & EXTERR_CAT_SRC_MASK) +#define EXTERR_CAT(c) ((c) & ~EXTERR_CAT_SRC_MASK) + +#define EXTERR_CAT_NONE 0 + #define EXTERR_CAT_MMAP 1 #define EXTERR_CAT_FILEDESC 2 #define EXTERR_KTRACE 3 /* To allow inclusion of this