Page MenuHomeFreeBSD

D38112.id115921.diff
No OneTemporary

D38112.id115921.diff

diff --git a/lib/libthr/thread/thr_attr.c b/lib/libthr/thread/thr_attr.c
--- a/lib/libthr/thread/thr_attr.c
+++ b/lib/libthr/thread/thr_attr.c
@@ -599,9 +599,11 @@
size_t len;
len = sizeof(kern_cpuset_size);
- if (sysctlbyname("kern.sched.cpusetsize", &kern_cpuset_size,
- &len, NULL, 0))
- PANIC("failed to get sysctl kern.sched.cpusetsize");
+ if (sysctlbyname("kern.sched.cpusetsizemin", &kern_cpuset_size,
+ &len, NULL, 0) != 0)
+ if (sysctlbyname("kern.sched.cpusetsize",
+ &kern_cpuset_size, &len, NULL, 0) != 0)
+ PANIC("failed to get sysctl kern.sched.cpusetsize");
}
return (kern_cpuset_size);
diff --git a/sys/kern/kern_cpuset.c b/sys/kern/kern_cpuset.c
--- a/sys/kern/kern_cpuset.c
+++ b/sys/kern/kern_cpuset.c
@@ -136,16 +136,31 @@
static struct unrhdr *cpuset_unr;
static struct cpuset *cpuset_zero, *cpuset_default, *cpuset_kernel;
static struct domainset *domainset0, *domainset2;
+u_int cpusetsizemin;
/* Return the size of cpuset_t at the kernel level */
SYSCTL_INT(_kern_sched, OID_AUTO, cpusetsize, CTLFLAG_RD | CTLFLAG_CAPRD,
SYSCTL_NULL_INT_PTR, sizeof(cpuset_t), "sizeof(cpuset_t)");
+/* Return the minimum size of cpuset_t allowed by the kernel */
+SYSCTL_UINT(_kern_sched, OID_AUTO, cpusetsizemin,
+ CTLFLAG_RD | CTLFLAG_CAPRD, &cpusetsizemin, 0,
+ "The minimum size of cpuset_t allowed by the kernel");
+
cpuset_t *cpuset_root;
cpuset_t cpuset_domain[MAXMEMDOM];
static int domainset_valid(const struct domainset *, const struct domainset *);
+static void
+cpu_calc_cpusetsize(void *dummy)
+{
+
+ cpusetsizemin = howmany(mp_maxid + 1, NBBY);
+}
+SYSINIT(cpu_calc_cpusetsize, SI_SUB_TUNABLES, SI_ORDER_ANY,
+ cpu_calc_cpusetsize, NULL);
+
/*
* Find the first non-anonymous set starting from 'set'.
*/
diff --git a/sys/sys/smp.h b/sys/sys/smp.h
--- a/sys/sys/smp.h
+++ b/sys/sys/smp.h
@@ -177,6 +177,7 @@
extern cpuset_t all_cpus;
extern cpuset_t cpuset_domain[MAXMEMDOM]; /* CPUs in each NUMA domain. */
+extern u_int cpusetsizemin;
/*
* Macro allowing us to determine whether a CPU is absent at any given

File Metadata

Mime Type
text/plain
Expires
Sun, Oct 12, 5:40 PM (1 h, 37 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
23633424
Default Alt Text
D38112.id115921.diff (2 KB)

Event Timeline