Browse Source

avoid needless function call when not tracing mutexes

Samuel Thibault 9 years ago
parent
commit
460f7aa22d
2 changed files with 40 additions and 15 deletions
  1. 22 0
      include/starpu_thread.h
  2. 18 15
      src/common/thread.c

+ 22 - 0
include/starpu_thread.h

@@ -101,9 +101,15 @@ typedef pthread_mutexattr_t starpu_pthread_mutexattr_t;
 #define starpu_pthread_mutexattr_destroy pthread_mutexattr_destroy
 #define starpu_pthread_mutexattr_init pthread_mutexattr_init
 
+#ifdef STARPU_FXT_LOCK_TRACES
 int starpu_pthread_mutex_lock(starpu_pthread_mutex_t *mutex);
 int starpu_pthread_mutex_unlock(starpu_pthread_mutex_t *mutex);
 int starpu_pthread_mutex_trylock(starpu_pthread_mutex_t *mutex);
+#else
+#define starpu_pthread_mutex_lock pthread_mutex_lock
+#define starpu_pthread_mutex_unlock pthread_mutex_unlock
+#define starpu_pthread_mutex_trylock pthread_mutex_trylock
+#endif
 
 #define STARPU_PTHREAD_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER
 
@@ -163,7 +169,11 @@ typedef pthread_condattr_t starpu_pthread_condattr_t;
 #define starpu_pthread_cond_signal pthread_cond_signal
 #define starpu_pthread_cond_broadcast pthread_cond_broadcast
 
+#ifdef STARPU_FXT_LOCK_TRACES
 int starpu_pthread_cond_wait(starpu_pthread_cond_t *cond, starpu_pthread_mutex_t *mutex);
+#else
+#define starpu_pthread_cond_wait pthread_cond_wait
+#endif
 
 #define starpu_pthread_cond_timedwait pthread_cond_timedwait
 #define starpu_pthread_cond_destroy pthread_cond_destroy
@@ -195,11 +205,19 @@ typedef pthread_rwlockattr_t starpu_pthread_rwlockattr_t;
 #define starpu_pthread_rwlock_init pthread_rwlock_init
 #define starpu_pthread_rwlock_destroy pthread_rwlock_destroy
 
+#ifdef STARPU_FXT_LOCK_TRACES
 int starpu_pthread_rwlock_rdlock(starpu_pthread_rwlock_t *rwlock);
 int starpu_pthread_rwlock_tryrdlock(starpu_pthread_rwlock_t *rwlock);
 int starpu_pthread_rwlock_wrlock(starpu_pthread_rwlock_t *rwlock);
 int starpu_pthread_rwlock_trywrlock(starpu_pthread_rwlock_t *rwlock);
 int starpu_pthread_rwlock_unlock(starpu_pthread_rwlock_t *rwlock);
+#else
+#define starpu_pthread_rwlock_rdlock pthread_rwlock_rdlock
+#define starpu_pthread_rwlock_tryrdlock pthread_rwlock_tryrdlock
+#define starpu_pthread_rwlock_wrlock pthread_rwlock_wrlock
+#define starpu_pthread_rwlock_trywrlock pthread_rwlock_trywrlock
+#define starpu_pthread_rwlock_unlock pthread_rwlock_unlock
+#endif
 
 #endif /* STARPU_SIMGRID, _MSC_VER */
 
@@ -238,7 +256,11 @@ typedef pthread_barrierattr_t starpu_pthread_barrierattr_t;
 #define starpu_pthread_barrier_init pthread_barrier_init
 #define starpu_pthread_barrier_destroy pthread_barrier_destroy
 
+#ifdef STARPU_FXT_LOCK_TRACES
 int starpu_pthread_barrier_wait(starpu_pthread_barrier_t *barrier);
+#else
+#define starpu_pthread_barrier_wait pthread_barrier_wait
+#endif
 #define STARPU_PTHREAD_BARRIER_SERIAL_THREAD PTHREAD_BARRIER_SERIAL_THREAD
 
 #endif /* STARPU_SIMGRID, !STARPU_HAVE_PTHREAD_BARRIER, _MSC_VER */

+ 18 - 15
src/common/thread.c

@@ -539,6 +539,7 @@ int starpu_pthread_barrier_wait(starpu_pthread_barrier_t *barrier)
 }
 #endif /* defined(STARPU_SIMGRID) || !defined(STARPU_HAVE_PTHREAD_BARRIER) */
 
+#ifdef STARPU_FXT_LOCK_TRACES
 #if !defined(STARPU_SIMGRID) && !defined(_MSC_VER) /* !STARPU_SIMGRID */
 int starpu_pthread_mutex_lock(starpu_pthread_mutex_t *mutex)
 {
@@ -642,7 +643,23 @@ int starpu_pthread_rwlock_unlock(starpu_pthread_rwlock_t *rwlock)
 
 	return p_ret;
 }
-#endif
+#endif /* !defined(STARPU_SIMGRID) && !defined(_MSC_VER) */
+
+#if !defined(STARPU_SIMGRID) && !defined(_MSC_VER) && defined(STARPU_HAVE_PTHREAD_BARRIER)
+int starpu_pthread_barrier_wait(starpu_pthread_barrier_t *barrier)
+{
+	int ret;
+	_STARPU_TRACE_BARRIER_WAIT_BEGIN();
+
+	ret = pthread_barrier_wait(barrier);
+
+	_STARPU_TRACE_BARRIER_WAIT_END();
+
+	return ret;
+}
+#endif /* STARPU_SIMGRID, _MSC_VER, STARPU_HAVE_PTHREAD_BARRIER */
+
+#endif /* STARPU_FXT_LOCK_TRACES */
 
 /* "sched" variants, to be used (through the STARPU_PTHREAD_MUTEX_*LOCK_SCHED
  * macros of course) which record when the mutex is held or not */
@@ -686,20 +703,6 @@ void starpu_pthread_mutex_check_sched(starpu_pthread_mutex_t *mutex, char *file,
 }
 #endif
 
-#if !defined(STARPU_SIMGRID) && !defined(_MSC_VER) && defined(STARPU_HAVE_PTHREAD_BARRIER)
-int starpu_pthread_barrier_wait(starpu_pthread_barrier_t *barrier)
-{
-	int ret;
-	_STARPU_TRACE_BARRIER_WAIT_BEGIN();
-
-	ret = pthread_barrier_wait(barrier);
-
-	_STARPU_TRACE_BARRIER_WAIT_END();
-
-	return ret;
-}
-#endif /* STARPU_SIMGRID, _MSC_VER, STARPU_HAVE_PTHREAD_BARRIER */
-
 #if defined(STARPU_SIMGRID) || (defined(STARPU_LINUX_SYS) && defined(STARPU_HAVE_XCHG)) || !defined(HAVE_PTHREAD_SPIN_LOCK)
 
 int starpu_pthread_spin_init(starpu_pthread_spinlock_t *lock, int pshared STARPU_ATTRIBUTE_UNUSED)