Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 15 Jun 2012 01:59:03 +0000
From:      gmiller@FreeBSD.org
To:        svn-soc-all@FreeBSD.org
Subject:   socsvn commit: r237736 - in soc2012/gmiller/locking-head: include lib/libthr/thread
Message-ID:  <20120615015903.C2419106566B@hub.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: gmiller
Date: Fri Jun 15 01:59:03 2012
New Revision: 237736
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=237736

Log:
  Add pthread_lockprof_enable_mp() and pthread_lockprof_disable_mp() to turn
  lock profiling on and off dynamically. Profiling is still enabled by default.
  

Modified:
  soc2012/gmiller/locking-head/include/pthread_np.h
  soc2012/gmiller/locking-head/lib/libthr/thread/thr_profile.c

Modified: soc2012/gmiller/locking-head/include/pthread_np.h
==============================================================================
--- soc2012/gmiller/locking-head/include/pthread_np.h	Thu Jun 14 22:19:23 2012	(r237735)
+++ soc2012/gmiller/locking-head/include/pthread_np.h	Fri Jun 15 01:59:03 2012	(r237736)
@@ -90,6 +90,9 @@
 void		pthread_getstatistics_begin_np(struct pthread_statistics_np *);
 int		pthread_getstatistics_next_np(struct pthread_statistics_np *);
 void		pthread_getstatistics_end_np(struct pthread_statistics_np *);
+void		pthread_resetstatistics_np(void);
+void		pthread_lockprof_enable_np(void);
+void		pthread_lockprof_disable_np(void);
 
 #endif
 

Modified: soc2012/gmiller/locking-head/lib/libthr/thread/thr_profile.c
==============================================================================
--- soc2012/gmiller/locking-head/lib/libthr/thread/thr_profile.c	Thu Jun 14 22:19:23 2012	(r237735)
+++ soc2012/gmiller/locking-head/lib/libthr/thread/thr_profile.c	Fri Jun 15 01:59:03 2012	(r237736)
@@ -62,7 +62,8 @@
 	struct timespec	wait_time;
 };
 
-LIST_HEAD(acq_head, acquisition) acq_head = LIST_HEAD_INITIALIZER(acq_head);
+static LIST_HEAD(acq_head, acquisition) acq_head =
+     LIST_HEAD_INITIALIZER(acq_head);
 
 struct acq_point_head mutex_hash[LOCK_PROF_HASH_SIZE];
 
@@ -71,6 +72,8 @@
 	struct acquisition_point *last_record;
 };
 
+static int lockprof_enabled;
+
 void
 _lock_profile_init()
 {
@@ -79,6 +82,8 @@
 	for (i = 0; i < LOCK_PROF_HASH_SIZE; i++) {
 		SLIST_INIT(&mutex_hash[i]);
 	}
+
+	lockprof_enabled = 1;
 }
 
 static struct acquisition *
@@ -132,7 +137,7 @@
 	struct pthread *curthread = _get_curthread();
 	struct acquisition *acq;
 
-	if (file == NULL) {
+	if (file == NULL || !lockprof_enabled) {
 		return;
 	}
 
@@ -163,7 +168,7 @@
 _mutex_obtain_failed(struct pthread_mutex *m, struct timespec *wait_time,
 		     const char *file)
 {
-	if (file == NULL) {
+	if (file == NULL || !lockprof_enabled) {
 		return;
 	}
 
@@ -360,4 +365,16 @@
 	}
 }
 
+void
+pthread_lockprof_enable_np()
+{
+	lockprof_enabled = 1;
+}
+
+void
+pthread_lockprof_disable_np()
+{
+	lockprof_enabled = 0;
+}
+
 #endif /* LOCK_PROFILING */



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