From nobody Mon Aug 3 21:44:05 2026 X-Original-To: dev-commits-src-all@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 4hDVYl3B0mz6n4l2 for ; Mon, 03 Aug 2026 21:44:11 +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 4hDVYk5MFvz3FQr for ; Mon, 03 Aug 2026 21:44:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1785793450; 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=j7Csc9Kh/jUQODU/Y8N/J9Z0Fpygh/ftT0ijTuFGqu+CBgyM8VYnwL9icggHTp9EK0FX52 BRReg8ehrTMPc0YH84y+ZSz0h1vbnk8M630ZGm2OYae1+bIQE6jfK6MRGWLJvJph1M35p8 rnGoGgwjyZF37ijIsuiBWdqAeE7otFtkh6EZLU+sG8JQdhGiGleY56eN5FyZC4Bd83xw0+ bdizRd5E61JPhL3SHiWIOVgz8OfKnXFWcricraKyI7H1vuWJ6lwTpS9EzQuTgkMbfyB0Xo KqF4aFAD0mZeQMVN80hS1sPTcqZrRmrUHj6I3oI3pghHnuJzIj0xXOBJqhcvlw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1785793450; a=rsa-sha256; cv=none; b=DvUVjXDAkQD2MNnb/2fwkd0YBmcyYCtkn4gqCI2/27H9SY54JICLQy9Lq515o09stCrxTM FAj0nAD6CDTxDY4HkPjsc4nB/t2r9degTnmzHGZxB5NZRza8/bL0AT4EaJMI6PoEXFP3/s uwjvt/pg3/1x7kdvLHX+PG4Rs4ToYkSkl5qtWiSO1CgOylOecHD1gOzbdnwQ9I9OhpEAeH KzLHmvfk4laYcWxPRWbcp7MnGiaPoMLKx3hmtkD5t5OoCnwG+4NXrdaAkpWjmOEzAe9FEV wXH1NMCU9M6dns/Q7WvY83lKj9UveQHDdQdJBOX1mknTEALoteTYWO23nrQHRw== 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=1785793450; 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=vhtS3f2SIAkQPuanh0plVMbLF3nMwfUm12findXYchc9xgSAd0m6DbOfGjmqT+ud9Wckg9 v86+Px3YEfuS6fV/6zGoMS3HFH7iFryPnyVraR9XP66DQcFtgXPfHgNWCOpFS1NxgMzfd7 dRNnT6qwPDwLHfR19gGp6wjykFuRZbWz8jwGgK5D1+/k8qJLBMD+tdSrN1vQfuzEDoQsAv Oqa1eOVjc7b9Cc4NEdd/sCWmlauI67phFvqLr+MCJ+0d2fzsFaX7ud1GWUt1+968ABqxIZ NQw3k8yAiBLtKCIdAyUujiCgOFIDGd/AVOps0udkKyDtG9yZRXSlYKxtA5AYdA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hDVYk4LCDz3YT for ; Mon, 03 Aug 2026 21:44:10 +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 all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@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