Index: sys/sys/_cpuset.h =================================================================== --- sys/sys/_cpuset.h (revisione 239723) +++ sys/sys/_cpuset.h (copia locale) @@ -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_ */ Index: sys/conf/NOTES =================================================================== --- sys/conf/NOTES (revisione 239723) +++ sys/conf/NOTES (copia locale) @@ -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 # Index: sys/kern/kern_ktr.c =================================================================== --- sys/kern/kern_ktr.c (revisione 239723) +++ sys/kern/kern_ktr.c (copia locale) @@ -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. Index: sys/kern/kern_cpuset.c =================================================================== --- sys/kern/kern_cpuset.c (revisione 239723) +++ sys/kern/kern_cpuset.c (copia locale) @@ -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);