Page MenuHomeFreeBSD

D49243.diff
No OneTemporary

D49243.diff

diff --git a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_aggregate.c b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_aggregate.c
--- a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_aggregate.c
+++ b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_aggregate.c
@@ -1092,8 +1092,10 @@
assert(agp->dtat_ncpu == 0);
assert(agp->dtat_cpus == NULL);
- agp->dtat_maxcpu = dt_sysconf(dtp, _SC_CPUID_MAX) + 1;
- agp->dtat_ncpu = dt_sysconf(dtp, _SC_NPROCESSORS_MAX);
+ agp->dtat_maxcpu = dt_cpu_maxid(dtp) + 1;
+ if (agp->dtat_maxcpu <= 0)
+ return (-1);
+ agp->dtat_ncpu = dt_sysconf(dtp, _SC_NPROCESSORS_CONF);
agp->dtat_cpus = malloc(agp->dtat_ncpu * sizeof (processorid_t));
if (agp->dtat_cpus == NULL)
diff --git a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c
--- a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c
+++ b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c
@@ -3949,8 +3949,8 @@
return (rval);
}
- if (max_ncpus == 0)
- max_ncpus = dt_sysconf(dtp, _SC_CPUID_MAX) + 1;
+ if (max_ncpus == 0 && (max_ncpus = dt_cpu_maxid(dtp) + 1) <= 0)
+ return (-1);
for (i = 0; i < max_ncpus; i++) {
dtrace_bufdesc_t *nbuf;
@@ -4040,8 +4040,8 @@
if (!dtp->dt_active)
return (dt_set_errno(dtp, EINVAL));
- if (max_ncpus == 0)
- max_ncpus = dt_sysconf(dtp, _SC_CPUID_MAX) + 1;
+ if (max_ncpus == 0 && (max_ncpus = dt_cpu_maxid(dtp) + 1) <= 0)
+ return (-1);
if (pf == NULL)
pf = (dtrace_consume_probe_f *)dt_nullprobe;
diff --git a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_impl.h b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_impl.h
--- a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_impl.h
+++ b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_impl.h
@@ -620,6 +620,7 @@
*/
extern char *dt_cpp_add_arg(dtrace_hdl_t *, const char *);
extern char *dt_cpp_pop_arg(dtrace_hdl_t *);
+extern int dt_cpu_maxid(dtrace_hdl_t *);
#ifdef illumos
extern int dt_set_errno(dtrace_hdl_t *, int);
diff --git a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c
--- a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c
+++ b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c
@@ -463,6 +463,20 @@
return (arg);
}
+int
+dt_cpu_maxid(dtrace_hdl_t *dtp)
+{
+ size_t len;
+ u_int count;
+ int error;
+
+ len = sizeof(count);
+ error = sysctlbyname("kern.smp.maxid", &count, &len, NULL, 0);
+ if (error != 0)
+ return (dt_set_errno(dtp, errno));
+ return (count);
+}
+
/*PRINTFLIKE1*/
void
dt_dprintf(const char *format, ...)
diff --git a/cddl/contrib/opensolaris/lib/libdtrace/common/dtrace.h b/cddl/contrib/opensolaris/lib/libdtrace/common/dtrace.h
--- a/cddl/contrib/opensolaris/lib/libdtrace/common/dtrace.h
+++ b/cddl/contrib/opensolaris/lib/libdtrace/common/dtrace.h
@@ -620,11 +620,6 @@
}
#endif
-#ifndef illumos
-#define _SC_CPUID_MAX _SC_NPROCESSORS_CONF
-#define _SC_NPROCESSORS_MAX _SC_NPROCESSORS_CONF
-#endif
-
/*
* Values for the dt_oformat property.
*/

File Metadata

Mime Type
text/plain
Expires
Thu, Mar 20, 6:33 PM (21 h, 16 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
17233404
Default Alt Text
D49243.diff (3 KB)

Event Timeline