summaryrefslogtreecommitdiffstats
path: root/sys/sys/lockstat.h
diff options
context:
space:
mode:
authormarkj <markj@FreeBSD.org>2015-07-19 22:24:33 +0000
committermarkj <markj@FreeBSD.org>2015-07-19 22:24:33 +0000
commit2092d6ebaa81c46605e634d0491d84b53757d44f (patch)
tree00df546498905346ad09c126f134fd80edbd7479 /sys/sys/lockstat.h
parentfb4cb70b7d3b8771f051726851f280a5684263db (diff)
downloadFreeBSD-src-2092d6ebaa81c46605e634d0491d84b53757d44f.zip
FreeBSD-src-2092d6ebaa81c46605e634d0491d84b53757d44f.tar.gz
Consistently use a reader/writer flag for lockstat probes in rwlock(9) and
sx(9), rather than using the probe function name to determine whether a given lock is a read lock or a write lock. Update lockstat(1) accordingly.
Diffstat (limited to 'sys/sys/lockstat.h')
-rw-r--r--sys/sys/lockstat.h18
1 files changed, 17 insertions, 1 deletions
diff --git a/sys/sys/lockstat.h b/sys/sys/lockstat.h
index e53a7e4..1cb9a21 100644
--- a/sys/sys/lockstat.h
+++ b/sys/sys/lockstat.h
@@ -90,15 +90,25 @@ SDT_PROBE_DECLARE(lockstat, , , thread__spin);
LOCKSTAT_RECORD0(probe, lp); \
} while (0)
+#define LOCKSTAT_PROFILE_OBTAIN_RWLOCK_SUCCESS(probe, lp, c, wt, f, l, a) do { \
+ lock_profile_obtain_lock_success(&(lp)->lock_object, c, wt, f, l); \
+ LOCKSTAT_RECORD1(probe, lp, a); \
+} while (0)
+
#define LOCKSTAT_PROFILE_RELEASE_LOCK(probe, lp) do { \
lock_profile_release_lock(&(lp)->lock_object); \
LOCKSTAT_RECORD0(probe, lp); \
} while (0)
+#define LOCKSTAT_PROFILE_RELEASE_RWLOCK(probe, lp, a) do { \
+ lock_profile_release_lock(&(lp)->lock_object); \
+ LOCKSTAT_RECORD1(probe, lp, a); \
+} while (0)
+
extern int lockstat_enabled;
struct lock_object;
-extern uint64_t lockstat_nsecs(struct lock_object *);
+uint64_t lockstat_nsecs(struct lock_object *);
#else /* !KDTRACE_HOOKS */
@@ -111,9 +121,15 @@ extern uint64_t lockstat_nsecs(struct lock_object *);
#define LOCKSTAT_PROFILE_OBTAIN_LOCK_SUCCESS(probe, lp, c, wt, f, l) \
lock_profile_obtain_lock_success(&(lp)->lock_object, c, wt, f, l)
+#define LOCKSTAT_PROFILE_OBTAIN_RWLOCK_SUCCESS(probe, lp, c, wt, f, l, a) \
+ LOCKSTAT_PROFILE_OBTAIN_LOCK_SUCCESS(probe, lp, c, wt, f, l)
+
#define LOCKSTAT_PROFILE_RELEASE_LOCK(probe, lp) \
lock_profile_release_lock(&(lp)->lock_object)
+#define LOCKSTAT_PROFILE_RELEASE_RWLOCK(probe, lp, a) \
+ LOCKSTAT_PROFILE_RELEASE_LOCK(probe, lp)
+
#endif /* !KDTRACE_HOOKS */
#endif /* _KERNEL */
#endif /* _SYS_LOCKSTAT_H */
OpenPOWER on IntegriCloud