gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r5164 - GNUnet/src/util/threads


From: gnunet
Subject: [GNUnet-SVN] r5164 - GNUnet/src/util/threads
Date: Thu, 28 Jun 2007 18:16:52 -0600 (MDT)

Author: grothoff
Date: 2007-06-28 18:16:49 -0600 (Thu, 28 Jun 2007)
New Revision: 5164

Modified:
   GNUnet/src/util/threads/mutex.c
Log:
log who locked for too long

Modified: GNUnet/src/util/threads/mutex.c
===================================================================
--- GNUnet/src/util/threads/mutex.c     2007-06-29 00:09:23 UTC (rev 5163)
+++ GNUnet/src/util/threads/mutex.c     2007-06-29 00:16:49 UTC (rev 5164)
@@ -64,6 +64,9 @@
 
 typedef struct MUTEX {
   pthread_mutex_t pt;
+  const char * locked_file;
+  cron_t       locked_time;
+  unsigned int locked_line;
 } Mutex;
 
 Mutex * MUTEX_CREATE(int isRecursive) {
@@ -152,12 +155,25 @@
              "pthread_mutex_lock");
     GE_ASSERT(NULL, 0);
   }
+  mutex->locked_file = file;
+  mutex->locked_line = line;
+  mutex->locked_time = end;
 }
 
 void MUTEX_UNLOCK(Mutex * mutex) {
   int ret;
+  cron_t now;
 
   GE_ASSERT(NULL, mutex != NULL);
+  now = get_time();
+  if ( (now - mutex->locked_time > REALTIME_LIMIT) &&
+       (REALTIME_LIMIT != 0) )
+    GE_LOG(NULL,
+          GE_DEVELOPER | GE_WARNING | GE_IMMEDIATE,
+          _("Lock aquired for too long (%llu ms) at %s:%u\n"),
+          now - mutex->locked_time,
+          mutex->locked_file,
+          mutex->locked_line);
   ret = pthread_mutex_unlock(&mutex->pt);
   if (ret != 0) {
     if (ret == EINVAL)





reply via email to

[Prev in Thread] Current Thread [Next in Thread]