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_DECLShome | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69f2e6b3.22073.38fe94f3>
