Changeset: 46ee15612684 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=46ee15612684
Modified Files:
        clients/Tests/exports.stable.out
        gdk/gdk_system.c
        gdk/gdk_system.h
        monetdb5/mal/mal_dataflow.c
Branch: default
Log Message:

Cleanup: remove MT_LOCK_TRACE code, simplify code for debug printing.


diffs (271 lines):

diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -295,7 +295,6 @@ size_t HEAPvmsize(Heap *h);
 lng IMPSimprintsize(BAT *b);
 void MRschedule(int taskcnt, void **arg, void( *cmd)(void *p));
 int MT_check_nr_cores(void);
-unsigned long long MT_clock(void);
 int MT_create_thread(MT_Id *t, void( *function)(void *), void *arg, enum 
MT_thr_detach d);
 void MT_exiting_thread(void);
 MT_Id MT_getpid(void);
@@ -303,11 +302,6 @@ size_t MT_getrss(void);
 void MT_init(void);
 int MT_join_thread(MT_Id t);
 int MT_lockf(char *filename, int mode, off_t off, off_t len);
-MT_Id MT_locktrace;
-unsigned long long MT_locktrace_cnt[65536];
-void MT_locktrace_end(void);
-char *MT_locktrace_nme[65536];
-void MT_locktrace_start(void);
 struct Mallinfo MT_mallinfo(void);
 void *MT_mmap(const char *path, int mode, size_t len);
 int MT_munmap(void *p, size_t len);
diff --git a/gdk/gdk_system.c b/gdk/gdk_system.c
--- a/gdk/gdk_system.c
+++ b/gdk/gdk_system.c
@@ -150,74 +150,6 @@ GDKlockstatistics(int what)
 }
 #endif
 
-#ifdef MT_LOCK_TRACE
-unsigned long long MT_locktrace_cnt[65536] = { 0 };
-char *MT_locktrace_nme[65536] = { NULL };
-
-#if defined(ia64) && !defined(__GNUC__)
-#include "ia64regs.h"
-#endif
-
-unsigned long long
-MT_clock()
-{
-       unsigned long long tsc;
-
-#if defined(__x86_64__) && !defined(__PGI)
-       unsigned long long a, d;
-       __asm__ __volatile__("rdtsc":"=a"(a), "=d"(d));
-
-       tsc = ((unsigned long) a) | (((unsigned long) d) << 32);
-#define TICKNAME "rdtsc "
-#elif defined(__i386__) && !defined(__PGI)
-       __asm__ __volatile__("rdtsc":"=A"(tsc));
-
-#define TICKNAME "rdtsc "
-#elif !defined(ia64)
-       tsc = (unsigned long long) clock();
-#define TICKNAME "clock "
-#elif defined(__GNUC__)
-       __asm__ __volatile__("mov %0=ar.itc":"=r"(tsc)::"memory");
-
-#define TICKNAME "ar.itc"
-#else
-       tsc = (unsigned long long) __getReg(_IA64_REG_AR_ITC);
-#define TICKNAME "AR_ITC"
-#endif /* defined(i386) */
-       return tsc;
-}
-MT_Id MT_locktrace = 0;
-
-void
-MT_locktrace_start()
-{
-       memset(MT_locktrace_cnt, 0, 65536 * sizeof(unsigned long long));
-       MT_locktrace = MT_getpid();
-}
-
-void
-MT_locktrace_end()
-{
-       unsigned long long my_cnt[65536];
-       memset(my_cnt, 0, 65536 * sizeof(unsigned long long));
-       for (int i = 0; i < 65536; i++)
-               if (MT_locktrace_cnt[i]) {
-                       int idx = MT_locktrace_hash(MT_locktrace_nme[i]);
-
-                       my_cnt[idx] += MT_locktrace_cnt[i];
-               }
-       for (int i = 0; i < 65536; i++)
-               if (MT_locktrace_cnt[i]) {
-                       int idx = MT_locktrace_hash(MT_locktrace_nme[i]);
-
-                       if (my_cnt[idx])
-                               fprintf(stderr, "%s " ULLFMT "\n", 
MT_locktrace_nme[i], my_cnt[idx]);
-                       my_cnt[idx] = 0;
-               }
-       MT_locktrace = 0;
-}
-#endif /* MT_LOCK_TRACE */
-
 #if !defined(HAVE_PTHREAD_H) && defined(_MSC_VER)
 static struct winthread {
        struct winthread *next;
diff --git a/gdk/gdk_system.h b/gdk/gdk_system.h
--- a/gdk/gdk_system.h
+++ b/gdk/gdk_system.h
@@ -63,50 +63,6 @@ gdk_export int gprof_pthread_create(pthr
 /* debug and errno integers */
 gdk_export int GDKdebug;
 
-/* lock performance tracing */
-/* #define MT_LOCK_TRACE 1 */
-#ifdef MT_LOCK_TRACE
-gdk_export MT_Id MT_locktrace;
-gdk_export void MT_locktrace_start(void);
-gdk_export void MT_locktrace_end(void);
-gdk_export unsigned long long MT_locktrace_cnt[65536];
-gdk_export char *MT_locktrace_nme[65536];
-gdk_export unsigned long long MT_clock(void);
-
-#define MT_locktrace_hash(_id) ((int) (((lng) ((size_t) (_id))) ^ (((lng) 
((size_t) (_id))) >> 16)) & 65535)
-#define MT_log_trace(_impl, _object, _action, _caller, _fp, _pat)      \
-       do {                                                            \
-               unsigned long long _c=0;                                \
-               if (MT_locktrace)                                       \
-                       _c = MT_getpid() == MT_locktrace ? MT_clock() : 0; \
-               MT_log(_impl, _object, _action, _caller, _fp);          \
-               if (_c)                                         \
-                       MT_locktrace_cnt[MT_locktrace_hash(_pat)] += MT_clock() 
- _c; \
-       } while(0)
-#define MT_locktrace_set(s, n)                                         \
-       do {                                                            \
-               int _i = MT_locktrace_hash(s);                          \
-               if (MT_locktrace_nme[_i] && MT_locktrace_nme[_i] != (n)) { \
-                       fprintf(stderr, "MT_locktrace: name collision %s hides 
%s\n", \
-                              MT_locktrace_nme[_i], (n));              \
-               } else                                                  \
-                       MT_locktrace_nme[_i] = (n);                     \
-       } while (0)
-#else
-#define MT_log_trace(_impl, _object, _action, _caller, _fp, _pat) 
MT_log(_impl, _object, _action, _caller, _fp)
-#define MT_locktrace_set(s, n)
-#endif
-
-#define MT_log(_impl, _object, _action, _caller, _fp)                  \
-       do {                                                            \
-               TEMDEBUG {                                              \
-                       fprintf(_fp, "%s: " _action "(" PTRFMT ")\n",   \
-                               _caller, PTRFMTCAST(void*) _object);    \
-                       fflush(_fp);                                    \
-               }                                                       \
-               _impl;                                                  \
-       } while (0)
-
 /* API */
 
 /*
@@ -157,21 +113,34 @@ gdk_export int pthread_mutex_unlock(pthr
 
 #ifdef USE_PTHREAD_LOCKS
 
-typedef pthread_mutex_t MT_Lock;
+typedef struct {
+       pthread_mutex_t lock;
+       const char *name;
+} MT_Lock;
 
-#define MT_lock_init(l, n)                                     \
-       do {                                                    \
-               pthread_mutex_init((pthread_mutex_t*) (l), 0);  \
-               MT_locktrace_set(l, n);                         \
+#define MT_lock_init(l, n)                             \
+       do {                                            \
+               (l)->name = (n);                        \
+               pthread_mutex_init(&(l)->lock, 0);      \
        } while (0)
-#define MT_lock_destroy(l)     pthread_mutex_destroy((pthread_mutex_t*) (l))
-#define MT_lock_set(l, n)      
MT_log_trace(pthread_mutex_lock((pthread_mutex_t *) (l)), (l), "MT_set_lock", 
n, stderr, (l))
-#define MT_lock_unset(l, n)    MT_log(pthread_mutex_unlock((pthread_mutex_t *) 
(l)), (l), "MT_unset_lock", n, stderr)
-#define MT_lock_try(l)         pthread_mutex_trylock((pthread_mutex_t *) (l))
-#define MT_lock_dump(l, fp, n) MT_log(/*nothing*/, &(l), "MT_dump_lock", n, fp)
+#define MT_lock_destroy(l)     pthread_mutex_destroy(&(l)->lock)
+#define MT_lock_set(l, n)                                              \
+       do {                                                            \
+               TEMDEBUG fprintf(stderr, "#%s: locking %s...\n",        \
+                                (n), (l)->name);                       \
+               pthread_mutex_lock(&(l)->lock);                         \
+               TEMDEBUG fprintf(stderr, "#%s: locking %s complete\n",  \
+                                (n), (l)->name);                       \
+       } while (0)
+#define MT_lock_unset(l, n)                                            \
+       do {                                                            \
+               TEMDEBUG fprintf(stderr, "#%s: unlocking %s\n",         \
+                                (n), (l)->name);                       \
+               pthread_mutex_unlock(&(l)->lock);                       \
+       } while (0)
 
 #ifdef PTHREAD_MUTEX_INITIALIZER
-#define MT_LOCK_INITIALIZER(name)      = PTHREAD_MUTEX_INITIALIZER
+#define MT_LOCK_INITIALIZER(name)      = { PTHREAD_MUTEX_INITIALIZER, name }
 #else
 /* no static initialization possible, so we need dynamic initialization */
 #define MT_LOCK_INITIALIZER(name)
@@ -208,7 +177,8 @@ gdk_export ATOMIC_TYPE volatile GDKlocks
 #define _DBG_LOCK_LOCKER(l, n)         ((l)->locker = (n))
 #define _DBG_LOCK_CONTENTION(l, n)                                     \
        do {                                                            \
-               TEMDEBUG fprintf(stderr, "#lock %s contention in %s\n", 
(l)->name, n); \
+               TEMDEBUG fprintf(stderr, "#lock %s contention in %s\n", \
+                                (l)->name, n);                         \
                (void) ATOMIC_INC(GDKlockcontentioncnt, dummy, n);      \
                (l)->contention++;                                      \
        } while (0)
@@ -314,8 +284,6 @@ gdk_export ATOMIC_TYPE volatile GDKlocks
                        ATOMIC_CLEAR((l)->lock, dummy, n);      \
                } while (0)
 #define MT_lock_destroy(l)     _DBG_LOCK_DESTROY(l)
-/* return 0 on success, -1 on failure to get the lock */
-#define MT_lock_try(l)         ((ATOMIC_TAS((l)->lock, dummy, dummy) == 0) - 1)
 
 #endif
 
@@ -353,16 +321,31 @@ gdk_export void pthread_sema_down(pthrea
 
 #endif
 
-typedef pthread_sema_t MT_Sema;
+typedef struct {
+       pthread_sema_t sema;
+       const char *name;
+} MT_Sema;
 
-#define MT_sema_init(s, nr, n)                 \
-       do {                                    \
-               pthread_sema_init((s), 0, nr);  \
-               MT_locktrace_set((s), n);       \
+#define MT_sema_init(s, nr, n)                         \
+       do {                                            \
+               (s)->name = (n);                        \
+               pthread_sema_init(&(s)->sema, 0, nr);   \
        } while (0)
-#define MT_sema_destroy(s)     pthread_sema_destroy(s)
-#define MT_sema_up(s, n)       MT_log(pthread_sema_up(s), (s), "MT_up_sema", 
n, stderr)
-#define MT_sema_down(s, n)     MT_log_trace(pthread_sema_down(s), (s), 
"MT_down_sema", n, stderr, s)
+#define MT_sema_destroy(s)     pthread_sema_destroy(&(s)->sema)
+#define MT_sema_up(s, n)                                       \
+       do {                                                    \
+               TEMDEBUG fprintf(stderr, "#%s: sema %s up\n",   \
+                                (n), (s)->name);               \
+               pthread_sema_up(&(s)->sema);                    \
+       } while (0)
+#define MT_sema_down(s, n)                                             \
+       do {                                                            \
+               TEMDEBUG fprintf(stderr, "#%s: sema %s down...\n",      \
+                                (n), (s)->name);                       \
+               pthread_sema_down(&(s)->sema);                          \
+               TEMDEBUG fprintf(stderr, "#%s: sema %s down complete\n", \
+                                (n), (s)->name);                       \
+       } while (0)
 
 gdk_export int MT_check_nr_cores(void);
 
diff --git a/monetdb5/mal/mal_dataflow.c b/monetdb5/mal/mal_dataflow.c
--- a/monetdb5/mal/mal_dataflow.c
+++ b/monetdb5/mal/mal_dataflow.c
@@ -126,7 +126,6 @@ q_create(int sz, const char *name)
        }
        q->exitcount = 0;
 
-       (void) name; /* in case MT_LOCK_TRACE is not enabled in gdk_system.h */
        MT_lock_init(&q->l, name);
        MT_sema_init(&q->s, 0, name);
        return q;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to