Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 30 Apr 2026 05:20:51 +0000
From:      Stephen J. Kiernan <stevek@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: b683fd0b3206 - main - preload: add "show preload" DDB command
Message-ID:  <69f2e6b3.22073.38fe94f3@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by stevek:

URL: https://cgit.FreeBSD.org/src/commit/?id=b683fd0b3206b35214f7f87805246e5c74552942

commit b683fd0b3206b35214f7f87805246e5c74552942
Author:     Stephen J. Kiernan <stevek@FreeBSD.org>
AuthorDate: 2026-04-30 05:19:09 +0000
Commit:     Stephen J. Kiernan <stevek@FreeBSD.org>
CommitDate: 2026-04-30 05:20:12 +0000

    preload: add "show preload" DDB command
    
    This is the DDB equivalent of the debug.dump_modinfo sysctl which
    outputs pretty-printed bootloader metadata.
    
    Move sbuf_db_printf_drain to subr_prf.c and expose it for general use.
    
    Reviewed By: jmg
    Differential Revision: https://reviews.freebsd.org/D53763
---
 sys/kern/subr_module.c  | 20 ++++++++++++++++++++
 sys/kern/subr_prf.c     |  9 +++++++++
 sys/kern/subr_witness.c |  6 ------
 sys/sys/sbuf.h          |  3 +++
 4 files changed, 32 insertions(+), 6 deletions(-)

diff --git a/sys/kern/subr_module.c b/sys/kern/subr_module.c
index 92f22206f8cf..b2d723fef038 100644
--- a/sys/kern/subr_module.c
+++ b/sys/kern/subr_module.c
@@ -28,6 +28,9 @@
  * SUCH DAMAGE.
  */
 
+#include <sys/cdefs.h>
+#include "opt_ddb.h"
+
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/linker.h>
@@ -39,6 +42,10 @@
 #include <vm/vm.h>
 #include <vm/vm_extern.h>
 
+#ifdef DDB
+#include <ddb/ddb.h>
+#endif
+
 /*
  * Preloaded module support
  */
@@ -607,3 +614,16 @@ SYSCTL_PROC(_debug, OID_AUTO, dump_modinfo,
     CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE,
     NULL, 0, sysctl_preload_dump, "A",
     "pretty-print the bootloader metadata");
+
+#ifdef DDB
+DB_SHOW_COMMAND_FLAGS(preload, db_show_preload, DB_CMD_MEMSAFE)
+{
+	struct sbuf sb;
+	char buffer[128];
+
+	sbuf_new(&sb, buffer, sizeof(buffer), SBUF_FIXEDLEN);
+	sbuf_set_drain(&sb, sbuf_db_printf_drain, NULL);
+	preload_dump_internal(&sb);
+	sbuf_finish(&sb);
+}
+#endif
diff --git a/sys/kern/subr_prf.c b/sys/kern/subr_prf.c
index bbf81b7a4ffe..35b5ee8ccdc8 100644
--- a/sys/kern/subr_prf.c
+++ b/sys/kern/subr_prf.c
@@ -1358,3 +1358,12 @@ sbuf_printf_drain(void *arg, const char *data, int len)
 
 	return (r);
 }
+
+#if defined(_KERNEL) && defined(DDB)
+int
+sbuf_db_printf_drain(void *arg __unused, const char *data, int len)
+{
+
+	return (db_printf("%.*s", len, data));
+}
+#endif
diff --git a/sys/kern/subr_witness.c b/sys/kern/subr_witness.c
index 85dc0c321797..3c192b2b0dce 100644
--- a/sys/kern/subr_witness.c
+++ b/sys/kern/subr_witness.c
@@ -3121,12 +3121,6 @@ sysctl_debug_witness_badstacks(SYSCTL_HANDLER_ARGS)
 }
 
 #ifdef DDB
-static int
-sbuf_db_printf_drain(void *arg __unused, const char *data, int len)
-{
-	return (db_printf("%.*s", len, data));
-}
-
 DB_SHOW_COMMAND_FLAGS(badstacks, db_witness_badstacks, DB_CMD_MEMSAFE)
 {
 	struct sbuf sb;
diff --git a/sys/sys/sbuf.h b/sys/sys/sbuf.h
index 60dcda53a461..e9959d7b2a13 100644
--- a/sys/sys/sbuf.h
+++ b/sys/sys/sbuf.h
@@ -114,6 +114,9 @@ struct uio;
 struct sbuf	*sbuf_uionew(struct sbuf *, struct uio *, int *);
 int		 sbuf_bcopyin(struct sbuf *, const void *, size_t);
 int		 sbuf_copyin(struct sbuf *, const void *, size_t);
+#ifdef DDB
+int		 sbuf_db_printf_drain(void *arg, const char *data, int len);
+#endif
 #endif
 __END_DECLS
 


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69f2e6b3.22073.38fe94f3>