Remove useless atomic_write_barrier's
authorDavid Bartley <dtbartle@csclub.uwaterloo.ca>
Fri, 15 Aug 2008 10:25:37 +0000 (06:25 -0400)
committerDavid Bartley <dtbartle@csclub.uwaterloo.ca>
Fri, 15 Aug 2008 10:26:00 +0000 (06:26 -0400)
nptl/sysdeps/unix/sysv/solaris2/opensolaris-gnu/fastlock.c
nptl/sysdeps/unix/sysv/solaris2/opensolaris-gnu/pthread_barrier_wait.c
nptl/sysdeps/unix/sysv/solaris2/opensolaris-gnu/pthread_cond_timedwait.c
nptl/sysdeps/unix/sysv/solaris2/opensolaris-gnu/pthread_mutex_timedlock.c
nptl/sysdeps/unix/sysv/solaris2/opensolaris-gnu/pthread_mutex_trylock.c
nptl/sysdeps/unix/sysv/solaris2/opensolaris-gnu/pthread_mutex_unlock.c
nptl/sysdeps/unix/sysv/solaris2/opensolaris-gnu/pthread_rwlock_timedrdlock.c
nptl/sysdeps/unix/sysv/solaris2/opensolaris-gnu/pthread_rwlock_timedwrlock.c
nptl/sysdeps/unix/sysv/solaris2/opensolaris-gnu/pthread_rwlock_tryrdlock.c
nptl/sysdeps/unix/sysv/solaris2/opensolaris-gnu/pthread_rwlock_trywrlock.c
nptl/sysdeps/unix/sysv/solaris2/opensolaris-gnu/pthread_rwlock_unlock.c

index 8c2b59b..b3c5e54 100644 (file)
@@ -68,7 +68,6 @@ int __mutex_lock_fast (pthread_mutex_t *mutex, bool try)
           return EAGAIN;
         }
       mutex->mutex_rcount++;
-      atomic_write_barrier ();
       return 0;
     }
   else if ((mutex->mutex_type & LOCK_ERRORCHECK) &&
@@ -102,7 +101,6 @@ int __mutex_unlock_fast (pthread_mutex_t *mutex)
     {
       /* Recursively held lock.  */
       mutex->mutex_rcount--;
-      atomic_write_barrier ();
       return 0;
     }
   else if ((mutex->mutex_type & LOCK_ERRORCHECK) &&
index db29d12..b1ec699 100644 (file)
@@ -50,7 +50,6 @@ write (2, buf, strlen (buf));
          current waiters that it is their turn. Also reset the barrier.  */
       ++ibarrier->curr_event;
       ibarrier->left = ibarrier->init_count;
-      atomic_write_barrier ();
 
       /* Wake other threads.  */
       errval = pthread_cond_broadcast (&ibarrier->cond);
@@ -64,8 +63,6 @@ write (2, buf, strlen (buf));
       return PTHREAD_BARRIER_SERIAL_THREAD;
     }
 
-  atomic_write_barrier ();
-
   /* Wait until the current barrier event is done.  */
   int curr_event = ibarrier->curr_event;
   do
index 1351395..51b9617 100644 (file)
@@ -55,8 +55,8 @@ __condvar_cleanup (void *arg)
 
   /* The condition variable is no longer using the mutex.  */
   mutex->mutex_cond_waiters = cbuffer->old_cond_waiters;
-  atomic_write_barrier ();
 
+  int errval = 0;
   while (1)
     {
       if (mutex->mutex_lockbyte == LOCKBYTE_SET &&
@@ -70,19 +70,14 @@ __condvar_cleanup (void *arg)
       else if (mutex->mutex_lockbyte == 0)
         {
           /* The mutex is unlocked.  */
-          pthread_mutex_lock (mutex);
+          errval = pthread_mutex_lock (mutex);
           break;
         }
     }
 
   /* Restore the mutex_rcount.  */
-  if (mutex->mutex_lockbyte == LOCKBYTE_SET &&
-     (mutex->mutex_type & LOCK_RECURSIVE) &&
-      mutex->mutex_rcount == 0 && cbuffer->old_mutex_rcount > 0)
-    {
-      mutex->mutex_rcount = cbuffer->old_mutex_rcount;
-      atomic_write_barrier ();
-    }
+  if (errval == 0)
+    mutex->mutex_rcount = cbuffer->old_mutex_rcount;
 }
 
 
@@ -121,16 +116,12 @@ __pthread_cond_timedwait_internal (cond, mutex, abstime, cancel)
           release the lock.  */
       cbuffer.old_mutex_rcount = mutex->mutex_rcount;
       mutex->mutex_rcount = 0;
-      atomic_write_barrier ();
     }
 
   /* Mark the mutex as still in use.  */
   cbuffer.old_cond_waiters = mutex->mutex_cond_waiters;
   if (cbuffer.old_cond_waiters == 0)
-    {
-      mutex->mutex_cond_waiters = 1;
-      atomic_write_barrier ();
-    }
+    mutex->mutex_cond_waiters = 1;
 
   /* Prepare structure passed to cancellation handler.  */
   cbuffer.cond = cond;
@@ -177,17 +168,11 @@ __pthread_cond_timedwait_internal (cond, mutex, abstime, cancel)
 
   /* Restore the mutex_rcount.  */
   if (mutex->mutex_type & LOCK_RECURSIVE)
-    {
-      mutex->mutex_rcount = cbuffer.old_mutex_rcount;
-      atomic_write_barrier ();
-    }
+    mutex->mutex_rcount = cbuffer.old_mutex_rcount;
 
   /* The condition variable is no longer using the mutex.  */
   if (cbuffer.old_cond_waiters == 0)
-    {
-      mutex->mutex_cond_waiters = 0;
-      atomic_write_barrier ();
-    }
+    mutex->mutex_cond_waiters = 0;
 
   return errval;
 }
index 9d6c313..640a89e 100644 (file)
@@ -78,10 +78,7 @@ write (2, buf, strlen(buf));
 
   /* The kernel does not set mutex_owner so we set it here.  */
   if ((mutex->mutex_type & (LOCK_RECURSIVE | LOCK_ERRORCHECK)) && errval == 0)
-    {
-      mutex->mutex_owner = (uintptr_t)THREAD_SELF;
-      atomic_write_barrier ();
-    }
+    mutex->mutex_owner = (uintptr_t)THREAD_SELF;
 
 #if 0
 sprintf (buf, "%d (%p): pthread_mutex_timedlock (post): mutex_type = %d, mutex_lockbyte = %d, "
index d04d683..9037a8b 100644 (file)
@@ -50,10 +50,7 @@ __pthread_mutex_trylock (mutex)
 
   /* The kernel does not set mutex_owner so we set it here.  */
   if ((mutex->mutex_type & (LOCK_RECURSIVE | LOCK_ERRORCHECK)) && errval == 0)
-    {
-      mutex->mutex_owner = (uintptr_t)THREAD_SELF;
-      atomic_write_barrier ();
-    }
+    mutex->mutex_owner = (uintptr_t)THREAD_SELF;
 
   return errval;
 }
index 23a50e7..9a4f01d 100644 (file)
@@ -61,10 +61,7 @@ write (2, buf, strlen(buf));
 
   /* The kernel does not clear mutex_owner so we clear it here.  */
   if ((mutex->mutex_type & (LOCK_RECURSIVE | LOCK_ERRORCHECK)) && errval == 0)
-    {
-      mutex->mutex_owner = 0;
-      atomic_write_barrier ();
-    }
+    mutex->mutex_owner = 0;
 
 #if 0
 sprintf (buf, "%d (%p): pthread_mutex_unlock (post): mutex_type = %d, mutex_lockbyte = %d, "
index 1305f98..eaeab57 100644 (file)
@@ -72,7 +72,6 @@ write (1, buf, strlen(buf));
   if (rwlock->readers == _RWLOCK_RD_MAX)
     return pthread_mutex_unlock (&rwlock->mutex) ?: EAGAIN;
   rwlock->readers++;
-  atomic_write_barrier ();
 
 #if 0
 sprintf (buf, "%d:%d (%p): pthread_rwlock_timedrdlock (post): readers = %d\n",
index 8d63030..1bd63ff 100644 (file)
@@ -68,7 +68,6 @@ write (1, buf, strlen(buf));
   rwlock->owner = (uintptr_t)THREAD_SELF;
   if (rwlock->type & LOCK_SHARED)
     rwlock->ownerpid = THREAD_GETMEM (THREAD_SELF, pid);
-  atomic_write_barrier ();
 
 #if 0
 sprintf (buf, "%d:%d (%p): pthread_rwlock_timedwrlock (post): readers = %d\n",
index 5fec852..0c90eef 100644 (file)
@@ -41,7 +41,6 @@ __pthread_rwlock_tryrdlock (rwlock)
   if (rwlock->readers == _RWLOCK_RD_MAX)
     return pthread_mutex_unlock (&rwlock->mutex) ?: EAGAIN;
   rwlock->readers++;
-  atomic_write_barrier ();
 
   return pthread_mutex_unlock (&rwlock->mutex);
 }
index 26462c8..7f57e50 100644 (file)
@@ -42,7 +42,6 @@ __pthread_rwlock_trywrlock (rwlock)
   rwlock->owner = (uintptr_t)THREAD_SELF;
   if (rwlock->type & LOCK_SHARED)
     rwlock->ownerpid = THREAD_GETMEM (THREAD_SELF, pid);
-  atomic_write_barrier ();
 
   return pthread_mutex_unlock (&rwlock->mutex);
 }
index c932cbd..3a12132 100644 (file)
@@ -61,7 +61,6 @@ write (1, buf, strlen(buf));
       rwlock->readers = (rwlock->readers & _RWLOCK_WR_LOCK) |
           ((rwlock->readers & _RWLOCK_RD_MASK) - 1);
     }
-  atomic_write_barrier ();
 
 #if 0
 sprintf (buf, "%d:%d (%p): pthread_rwlock_unlock (post): readers = %d\n",