diff options
author | markj <markj@FreeBSD.org> | 2015-07-19 22:24:33 +0000 |
---|---|---|
committer | markj <markj@FreeBSD.org> | 2015-07-19 22:24:33 +0000 |
commit | 2092d6ebaa81c46605e634d0491d84b53757d44f (patch) | |
tree | 00df546498905346ad09c126f134fd80edbd7479 /sys/sys/lockstat.h | |
parent | fb4cb70b7d3b8771f051726851f280a5684263db (diff) | |
download | FreeBSD-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.h | 18 |
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 */ |