diff options
author | wtc%netscape.com <devnull@localhost> | 1999-02-12 00:59:52 +0000 |
---|---|---|
committer | wtc%netscape.com <devnull@localhost> | 1999-02-12 00:59:52 +0000 |
commit | cdecf25d299bf33118efdb138e2887d11762c4d1 (patch) | |
tree | 7f9b70e90b4f796643e837bbf7ade7a516543204 | |
parent | fa098cea5753b1a8be402972e346e49a36dc6221 (diff) | |
download | nspr-hg-cdecf25d299bf33118efdb138e2887d11762c4d1.tar.gz |
Added hash lock counts to collect statistics on how often each lock is
used.
-rw-r--r-- | pr/src/misc/pratom.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/pr/src/misc/pratom.c b/pr/src/misc/pratom.c index 58034c7c..b4e603f5 100644 --- a/pr/src/misc/pratom.c +++ b/pr/src/misc/pratom.c @@ -57,6 +57,10 @@ static pthread_mutex_t atomic_lock[16] = { PTHREAD_MUTEX_INITIALIZER, PTHREAD_MUTEX_INITIALIZER, PTHREAD_MUTEX_INITIALIZER, PTHREAD_MUTEX_INITIALIZER }; +#ifdef DEBUG +static PRInt32 hash_lock_counts[16]; +#endif + #define _PR_HASH_FOR_LOCK(ptr) (((long)ptr>>4)&15) void _PR_MD_INIT_ATOMIC() @@ -71,6 +75,9 @@ _PR_MD_ATOMIC_INCREMENT(PRInt32 *val) pthread_mutex_lock(&atomic_lock[idx]); rv = ++(*val); +#ifdef DEBUG + hash_lock_counts[idx]++; +#endif pthread_mutex_unlock(&atomic_lock[idx]); return rv; } @@ -83,6 +90,9 @@ _PR_MD_ATOMIC_ADD(PRInt32 *ptr, PRInt32 val) pthread_mutex_lock(&atomic_lock[idx]); rv = ((*ptr) += val); +#ifdef DEBUG + hash_lock_counts[idx]++; +#endif pthread_mutex_unlock(&atomic_lock[idx]); return rv; } @@ -95,6 +105,9 @@ _PR_MD_ATOMIC_DECREMENT(PRInt32 *val) pthread_mutex_lock(&atomic_lock[idx]); rv = --(*val); +#ifdef DEBUG + hash_lock_counts[idx]++; +#endif pthread_mutex_unlock(&atomic_lock[idx]); return rv; } @@ -108,6 +121,9 @@ _PR_MD_ATOMIC_SET(PRInt32 *val, PRInt32 newval) pthread_mutex_lock(&atomic_lock[idx]); rv = *val; *val = newval; +#ifdef DEBUG + hash_lock_counts[idx]++; +#endif pthread_mutex_unlock(&atomic_lock[idx]); return rv; } |