summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/conf/NOTES6
-rw-r--r--sys/kern/kern_cpuset.c14
-rw-r--r--sys/kern/kern_ktr.c12
-rw-r--r--sys/sys/_cpuset.h6
4 files changed, 21 insertions, 17 deletions
diff --git a/sys/conf/NOTES b/sys/conf/NOTES
index 6b341a5..1a3e71f 100644
--- a/sys/conf/NOTES
+++ b/sys/conf/NOTES
@@ -442,8 +442,8 @@ options KTRACE_REQUEST_POOL=101
# what events to trace. KTR_CPUMASK determines which CPU's log
# events, with bit X corresponding to CPU X. The layout of the string
# passed as KTR_CPUMASK must match a series of bitmasks each of them
-# separated by the ", " characters (ie:
-# KTR_CPUMASK=("0xAF, 0xFFFFFFFFFFFFFFFF")). KTR_VERBOSE enables
+# separated by the "," character (ie:
+# KTR_CPUMASK=0xAF,0xFFFFFFFFFFFFFFFF). KTR_VERBOSE enables
# dumping of KTR events to the console by default. This functionality
# can be toggled via the debug.ktr_verbose sysctl and defaults to off
# if KTR_VERBOSE is not defined. See ktr(4) and ktrdump(8) for details.
@@ -452,7 +452,7 @@ options KTR
options KTR_ENTRIES=1024
options KTR_COMPILE=(KTR_INTR|KTR_PROC)
options KTR_MASK=KTR_INTR
-options KTR_CPUMASK=("0x3")
+options KTR_CPUMASK=0x3
options KTR_VERBOSE
#
diff --git a/sys/kern/kern_cpuset.c b/sys/kern/kern_cpuset.c
index 818132d..8f4014f 100644
--- a/sys/kern/kern_cpuset.c
+++ b/sys/kern/kern_cpuset.c
@@ -651,12 +651,12 @@ cpusetobj_strprint(char *buf, const cpuset_t *set)
bytesp = 0;
bufsiz = CPUSETBUFSIZ;
- for (i = _NCPUWORDS - 1; i > 0; i--) {
- bytesp = snprintf(tbuf, bufsiz, "%lx, ", set->__bits[i]);
+ for (i = 0; i < (_NCPUWORDS - 1); i++) {
+ bytesp = snprintf(tbuf, bufsiz, "%lx,", set->__bits[i]);
bufsiz -= bytesp;
tbuf += bytesp;
}
- snprintf(tbuf, bufsiz, "%lx", set->__bits[0]);
+ snprintf(tbuf, bufsiz, "%lx", set->__bits[_NCPUWORDS - 1]);
return (buf);
}
@@ -682,16 +682,16 @@ cpusetobj_strscan(cpuset_t *set, const char *buf)
return (-1);
CPU_ZERO(set);
- for (i = nwords - 1; i > 0; i--) {
- ret = sscanf(buf, "%lx, ", &set->__bits[i]);
+ for (i = 0; i < (nwords - 1); i++) {
+ ret = sscanf(buf, "%lx,", &set->__bits[i]);
if (ret == 0 || ret == -1)
return (-1);
- buf = strstr(buf, " ");
+ buf = strstr(buf, ",");
if (buf == NULL)
return (-1);
buf++;
}
- ret = sscanf(buf, "%lx", &set->__bits[0]);
+ ret = sscanf(buf, "%lx", &set->__bits[nwords - 1]);
if (ret == 0 || ret == -1)
return (-1);
return (0);
diff --git a/sys/kern/kern_ktr.c b/sys/kern/kern_ktr.c
index 6adca69..738b05a 100644
--- a/sys/kern/kern_ktr.c
+++ b/sys/kern/kern_ktr.c
@@ -70,6 +70,10 @@ __FBSDID("$FreeBSD$");
#define KTR_MASK (0)
#endif
+#ifndef KTR_CPUMASK
+#define KTR_CPUMASK CPUSET_FSET
+#endif
+
#ifndef KTR_TIME
#define KTR_TIME get_cyclecount()
#endif
@@ -99,7 +103,7 @@ int ktr_version = KTR_VERSION;
SYSCTL_INT(_debug_ktr, OID_AUTO, version, CTLFLAG_RD,
&ktr_version, 0, "Version of the KTR interface");
-cpuset_t ktr_cpumask;
+cpuset_t ktr_cpumask = CPUSET_T_INITIALIZER(KTR_CPUMASK);
static char ktr_cpumask_str[CPUSETBUFSIZ];
TUNABLE_STR("debug.ktr.cpumask", ktr_cpumask_str, sizeof(ktr_cpumask_str));
@@ -107,12 +111,6 @@ static void
ktr_cpumask_initializer(void *dummy __unused)
{
- CPU_FILL(&ktr_cpumask);
-#ifdef KTR_CPUMASK
- if (cpusetobj_strscan(&ktr_cpumask, KTR_CPUMASK) == -1)
- CPU_FILL(&ktr_cpumask);
-#endif
-
/*
* TUNABLE_STR() runs with SI_ORDER_MIDDLE priority, thus it must be
* already set, if necessary.
diff --git a/sys/sys/_cpuset.h b/sys/sys/_cpuset.h
index 42a0a6a..a11c0f0 100644
--- a/sys/sys/_cpuset.h
+++ b/sys/sys/_cpuset.h
@@ -49,4 +49,10 @@ typedef struct _cpuset {
long __bits[howmany(CPU_SETSIZE, _NCPUBITS)];
} cpuset_t;
+#define CPUSET_FSET \
+ [ 0 ... (_NCPUWORDS - 1) ] = (-1L)
+
+#define CPUSET_T_INITIALIZER(x) \
+ { .__bits = { x } }
+
#endif /* !_SYS__CPUSET_H_ */
OpenPOWER on IntegriCloud