Author: mjg Date: Tue Apr 24 01:04:10 2018 New Revision: 332900 URL: https://svnweb.freebsd.org/changeset/base/332900
Log: lockstat: track lockstat just like sdt probes In particular flip the frequently tested var to bool. Modified: head/sys/cddl/dev/sdt/sdt.c head/sys/kern/kern_lockstat.c head/sys/sys/lockstat.h Modified: head/sys/cddl/dev/sdt/sdt.c ============================================================================== --- head/sys/cddl/dev/sdt/sdt.c Tue Apr 24 00:47:17 2018 (r332899) +++ head/sys/cddl/dev/sdt/sdt.c Tue Apr 24 01:04:10 2018 (r332900) @@ -77,6 +77,7 @@ static void sdt_kld_unload_try(void *, struct linker_f static MALLOC_DEFINE(M_SDT, "SDT", "DTrace SDT providers"); static int sdt_probes_enabled_count; +static int lockstat_enabled_count; static dtrace_pattr_t sdt_attr = { { DTRACE_STABILITY_EVOLVING, DTRACE_STABILITY_EVOLVING, DTRACE_CLASS_COMMON }, @@ -208,8 +209,11 @@ sdt_enable(void *arg __unused, dtrace_id_t id, void *p probe->id = id; probe->sdtp_lf->nenabled++; - if (strcmp(probe->prov->name, "lockstat") == 0) - lockstat_enabled++; + if (strcmp(probe->prov->name, "lockstat") == 0) { + lockstat_enabled_count++; + if (lockstat_enabled_count == 1) + lockstat_enabled = true; + } sdt_probes_enabled_count++; if (sdt_probes_enabled_count == 1) sdt_probes_enabled = true; @@ -225,8 +229,11 @@ sdt_disable(void *arg __unused, dtrace_id_t id, void * sdt_probes_enabled_count--; if (sdt_probes_enabled_count == 0) sdt_probes_enabled = false; - if (strcmp(probe->prov->name, "lockstat") == 0) - lockstat_enabled--; + if (strcmp(probe->prov->name, "lockstat") == 0) { + lockstat_enabled_count--; + if (lockstat_enabled_count == 0) + lockstat_enabled = false; + } probe->id = 0; probe->sdtp_lf->nenabled--; } Modified: head/sys/kern/kern_lockstat.c ============================================================================== --- head/sys/kern/kern_lockstat.c Tue Apr 24 00:47:17 2018 (r332899) +++ head/sys/kern/kern_lockstat.c Tue Apr 24 01:04:10 2018 (r332900) @@ -64,7 +64,7 @@ SDT_PROBE_DEFINE1(lockstat, , , sx__downgrade, "struct SDT_PROBE_DEFINE2(lockstat, , , thread__spin, "struct mtx *", "uint64_t"); -volatile int __read_frequently lockstat_enabled; +volatile bool __read_frequently lockstat_enabled; uint64_t lockstat_nsecs(struct lock_object *lo) Modified: head/sys/sys/lockstat.h ============================================================================== --- head/sys/sys/lockstat.h Tue Apr 24 00:47:17 2018 (r332899) +++ head/sys/sys/lockstat.h Tue Apr 24 01:04:10 2018 (r332900) @@ -70,7 +70,7 @@ SDT_PROBE_DECLARE(lockstat, , , thread__spin); #define LOCKSTAT_WRITER 0 #define LOCKSTAT_READER 1 -extern volatile int lockstat_enabled; +extern volatile bool lockstat_enabled; #ifdef KDTRACE_HOOKS _______________________________________________ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"