diff options
Diffstat (limited to 'sys/kern/kern_sched.c')
| -rw-r--r-- | sys/kern/kern_sched.c | 22 |
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> |
