git: ba8f429f42ec - main - kern/sched_shim.c: Add sysctl kern.sched.available

From: Konstantin Belousov <kib_at_FreeBSD.org>
Date: Thu, 29 Jan 2026 18:12:31 UTC
The branch main has been updated by kib:

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

commit ba8f429f42ecae1881d0face52df87ad1489af15
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2026-01-22 05:57:49 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
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");