summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_sched.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern/kern_sched.c')
-rw-r--r--sys/kern/kern_sched.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/sys/kern/kern_sched.c b/sys/kern/kern_sched.c
index 4309255ca9d..ce9e80066a3 100644
--- a/sys/kern/kern_sched.c
+++ b/sys/kern/kern_sched.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: kern_sched.c,v 1.50 2018/07/07 15:19:25 visa Exp $ */
+/* $OpenBSD: kern_sched.c,v 1.51 2018/07/12 01:23:38 cheloha Exp $ */
/*
* Copyright (c) 2007, 2008 Artur Grabowski <art@openbsd.org>
*
@@ -812,6 +812,26 @@ cpuset_complement(struct cpuset *to, struct cpuset *a, struct cpuset *b)
to->cs_set[i] = b->cs_set[i] & ~a->cs_set[i];
}
+int
+cpuset_cardinality(struct cpuset *cs)
+{
+ int cardinality, i, n;
+
+ cardinality = 0;
+
+ for (i = 0; i < CPUSET_ASIZE(ncpus); i++)
+ for (n = cs->cs_set[i]; n != 0; n &= n - 1)
+ cardinality++;
+
+ return (cardinality);
+}
+
+int
+sysctl_hwncpuonline(void)
+{
+ return cpuset_cardinality(&sched_all_cpus);
+}
+
#ifdef __HAVE_CPU_TOPOLOGY
#include <sys/sysctl.h>