Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 26 May 2012 06:16:12 +0000
From:      gmiller@FreeBSD.org
To:        svn-soc-all@FreeBSD.org
Subject:   socsvn commit: r236445 - in soc2012/gmiller/locking-head: include lib/libthr/thread
Message-ID:  <20120526061612.B8670106564A@hub.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: gmiller
Date: Sat May 26 06:16:12 2012
New Revision: 236445
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=236445

Log:
  
  Macroize pthread_mutex_lock() in order to add the file and line parameters
  that identify the acquisition point for the lock.
  

Modified:
  soc2012/gmiller/locking-head/include/pthread.h
  soc2012/gmiller/locking-head/lib/libthr/thread/thr_mutex.c

Modified: soc2012/gmiller/locking-head/include/pthread.h
==============================================================================
--- soc2012/gmiller/locking-head/include/pthread.h	Sat May 26 05:29:53 2012	(r236444)
+++ soc2012/gmiller/locking-head/include/pthread.h	Sat May 26 06:16:12 2012	(r236445)
@@ -179,6 +179,12 @@
 			__pthread_cleanup_pop_imp(execute);			\
 		}
 
+#ifdef LOCK_PROFILING
+#define		_PTHREAD_PROFILE_PARMS , const char *, int
+#else
+#define		_PTHREAD_PROFILE_PARMS /* */
+#endif
+
 int		pthread_condattr_destroy(pthread_condattr_t *);
 int		pthread_condattr_getclock(const pthread_condattr_t *,
 			clockid_t *);
@@ -215,7 +221,7 @@
 int		pthread_mutex_destroy(pthread_mutex_t *);
 int		pthread_mutex_init(pthread_mutex_t *,
 			const pthread_mutexattr_t *);
-int		pthread_mutex_lock(pthread_mutex_t *);
+int		pthread_mutex_lock(pthread_mutex_t * _PTHREAD_PROFILE_PARMS);
 int		pthread_mutex_trylock(pthread_mutex_t *);
 int		pthread_mutex_timedlock(pthread_mutex_t *,
 			const struct timespec *);
@@ -294,4 +300,16 @@
 void		__pthread_cleanup_pop_imp(int);
 __END_DECLS
 
+#ifdef LOCK_PROFILING
+
+#ifndef pthread_mutex_lock
+#define		pthread_mutex_lock(m)                                         \
+		pthread_mutex_lock (m, __FILE__, __LINE__)
+#endif
+
+#define		_pthread_mutex_lock(m)                                        \
+		_pthread_mutex_lock (m, __FILE__, __LINE__)
+
+#endif
+
 #endif

Modified: soc2012/gmiller/locking-head/lib/libthr/thread/thr_mutex.c
==============================================================================
--- soc2012/gmiller/locking-head/lib/libthr/thread/thr_mutex.c	Sat May 26 05:29:53 2012	(r236444)
+++ soc2012/gmiller/locking-head/lib/libthr/thread/thr_mutex.c	Sat May 26 06:16:12 2012	(r236445)
@@ -71,13 +71,19 @@
  */
 #define MUTEX_ADAPTIVE_SPINS	2000
 
+#ifdef LOCK_PROFILING
+#define		_PROFILE_PARMS	, const char *file, int line
+#else
+#define		_PROFILE_PARMS	/* */
+#endif
+
 /*
  * Prototypes
  */
 int	__pthread_mutex_init(pthread_mutex_t *mutex,
 		const pthread_mutexattr_t *mutex_attr);
 int	__pthread_mutex_trylock(pthread_mutex_t *mutex);
-int	__pthread_mutex_lock(pthread_mutex_t *mutex);
+int	__pthread_mutex_lock(pthread_mutex_t *mutex _PROFILE_PARMS);
 int	__pthread_mutex_timedlock(pthread_mutex_t *mutex,
 		const struct timespec *abstime);
 int	_pthread_mutex_init_calloc_cb(pthread_mutex_t *mutex,
@@ -354,6 +360,10 @@
 	if (m->m_owner == curthread)
 		return mutex_self_lock(m, abstime);
 
+#if 0
+	lock_profile_obtain_lock_success();
+#endif
+
 	id = TID(curthread);
 	/*
 	 * For adaptive mutexes, spin for a bit in the expectation
@@ -432,7 +442,7 @@
 }
 
 int
-__pthread_mutex_lock(pthread_mutex_t *mutex)
+__pthread_mutex_lock(pthread_mutex_t *mutex _PROFILE_PARMS)
 {
 	struct pthread_mutex	*m;
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120526061612.B8670106564A>