The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=ba8f429f42ecae1881d0face52df87ad1489af15
commit ba8f429f42ecae1881d0face52df87ad1489af15 Author: Konstantin Belousov <[email protected]> AuthorDate: 2026-01-22 05:57:49 +0000 Commit: Konstantin Belousov <[email protected]> CommitDate: 2026-01-29 18:11:55 +0000 kern/sched_shim.c: Add sysctl kern.sched.available Reports all compiled-in schedulers. Reviewed by: olce Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D54831 --- sys/kern/sched_shim.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/sys/kern/sched_shim.c b/sys/kern/sched_shim.c index 96c824745815..f25b803bae82 100644 --- a/sys/kern/sched_shim.c +++ b/sys/kern/sched_shim.c @@ -14,6 +14,7 @@ #include <sys/lock.h> #include <sys/proc.h> #include <sys/runq.h> +#include <sys/sbuf.h> #include <sys/sched.h> #include <sys/sysctl.h> #include <machine/ifunc.h> @@ -166,3 +167,33 @@ SYSCTL_NODE(_kern, OID_AUTO, sched, CTLFLAG_RD | CTLFLAG_MPSAFE, 0, SYSCTL_STRING(_kern_sched, OID_AUTO, name, CTLFLAG_RD, sched_name, 0, "Scheduler name"); + +static int +sysctl_kern_sched_available(SYSCTL_HANDLER_ARGS) +{ + struct sched_selection *s, **ss; + struct sbuf *sb, sm; + int error; + bool first; + + sb = sbuf_new_for_sysctl(&sm, NULL, 0, req); + if (sb == NULL) + return (ENOMEM); + first = true; + SET_FOREACH(ss, sched_instance_set) { + s = *ss; + if (first) + first = false; + else + sbuf_cat(sb, ","); + sbuf_cat(sb, s->name); + } + error = sbuf_finish(sb); + sbuf_delete(sb); + return (error); +} + +SYSCTL_PROC(_kern_sched, OID_AUTO, available, + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, + NULL, 0, sysctl_kern_sched_available, "A", + "List of available schedulers");
