Use atomic.h instead of atomicity.h. Adjust use of macros from
authordrepper <drepper>
Thu, 20 Mar 2003 07:07:22 +0000 (07:07 +0000)
committerdrepper <drepper>
Thu, 20 Mar 2003 07:07:22 +0000 (07:07 +0000)
atomicity.h to new names and semantics.

elf/dl-profile.c
gmon/mcount.c
malloc/set-freeres.c
nscd/cache.c
stdlib/cxa_finalize.c
sysdeps/unix/sysv/linux/getsysstats.c

index 3a18881..be706ce 100644 (file)
@@ -1,5 +1,5 @@
 /* Profiling of shared libraries.
-   Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
+   Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
    Based on the BSD mcount implementation.
@@ -34,7 +34,7 @@
 #include <sys/mman.h>
 #include <sys/param.h>
 #include <sys/stat.h>
-#include <atomicity.h>
+#include <atomic.h>
 
 /* The LD_PROFILE feature has to be implemented different to the
    normal profiling using the gmon/ functions.  The problem is that an
@@ -516,24 +516,24 @@ _dl_mcount (ElfW(Addr) frompc, ElfW(Addr) selfpc)
              size_t newfromidx;
              to_index = (data[narcs].self_pc
                          / (hashfraction * sizeof (*tos)));
-             newfromidx = exchange_and_add (&fromidx, 1) + 1;
+             newfromidx = atomic_exchange_and_add (&fromidx, 1) + 1;
              froms[newfromidx].here = &data[narcs];
              froms[newfromidx].link = tos[to_index];
              tos[to_index] = newfromidx;
-             atomic_add (&narcs, 1);
+             atomic_increment (&narcs);
            }
 
          /* If we still have no entry stop searching and insert.  */
          if (*topcindex == 0)
            {
-             uint_fast32_t newarc = exchange_and_add (narcsp, 1);
+             uint_fast32_t newarc = atomic_exchange_and_add (narcsp, 1);
 
              /* In rare cases it could happen that all entries in FROMS are
                 occupied.  So we cannot count this anymore.  */
              if (newarc >= fromlimit)
                goto done;
 
-             *topcindex = exchange_and_add (&fromidx, 1) + 1;
+             *topcindex = atomic_exchange_and_add (&fromidx, 1) + 1;
              fromp = &froms[*topcindex];
 
              fromp->here = &data[newarc];
@@ -541,7 +541,7 @@ _dl_mcount (ElfW(Addr) frompc, ElfW(Addr) selfpc)
              data[newarc].self_pc = selfpc;
              data[newarc].count = 0;
              fromp->link = 0;
-             atomic_add (&narcs, 1);
+             atomic_increment (&narcs);
 
              break;
            }
@@ -554,7 +554,7 @@ _dl_mcount (ElfW(Addr) frompc, ElfW(Addr) selfpc)
     }
 
   /* Increment the counter.  */
-  atomic_add (&fromp->here->count, 1);
+  atomic_increment (&fromp->here->count);
 
  done:
   ;
index 8e54812..c146650 100644 (file)
@@ -39,7 +39,7 @@ static char sccsid[] = "@(#)mcount.c  8.1 (Berkeley) 6/4/93";
    and MCOUNT macros.  */
 #include "machine-gmon.h"
 
-#include <atomicity.h>
+#include <atomic.h>
 
 /*
  * mcount is called on entry to each function compiled with the profiling
@@ -69,7 +69,8 @@ _MCOUNT_DECL(frompc, selfpc)  /* _mcount; may be static, inline, etc */
         * check that we are profiling
         * and that we aren't recursively invoked.
         */
-       if (! compare_and_swap (&p->state, GMON_PROF_ON, GMON_PROF_BUSY))
+       if (atomic_compare_and_exchange_acq (&p->state, GMON_PROF_BUSY,
+                                            GMON_PROF_ON))
          return;
 
        /*
index 67488a8..1c0733e 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1997,1999,2000,2001,2002,2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -16,7 +16,7 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
-#include <atomicity.h>
+#include <atomic.h>
 #include <stdlib.h>
 #include <set-hooks.h>
 #include <libc-internal.h>
@@ -36,7 +36,7 @@ __libc_freeres (void)
      protect for multiple executions since these are fatal.  */
   static long int already_called;
 
-  if (compare_and_swap (&already_called, 0, 1))
+  if (! atomic_compare_and_exchange_acq (&already_called, 1, 0))
     {
       void * const *p;
 
index d8339e9..788d47b 100644 (file)
@@ -17,7 +17,7 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
-#include <atomicity.h>
+#include <atomic.h>
 #include <errno.h>
 #include <error.h>
 #include <limits.h>
@@ -101,8 +101,8 @@ cache_add (int type, void *key, size_t len, const void *packet, size_t total,
   /* Put the new entry in the first position.  */
   do
     newp->next = table->array[hash];
-  while (! compare_and_swap ((volatile long int *) &table->array[hash],
-                            (long int) newp->next, (long int) newp));
+  while (atomic_compare_and_exchange_acq (&table->array[hash], newp,
+                                         newp->next));
 
   /* Update the statistics.  */
   if (data == (void *) -1)
index 16f5028..19d6567 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -18,7 +18,7 @@
 
 #include <assert.h>
 #include <stdlib.h>
-#include <atomicity.h>
+#include <atomic.h>
 #include "exit.h"
 #include <fork.h>
 
@@ -36,7 +36,8 @@ __cxa_finalize (void *d)
       for (f = &funcs->fns[funcs->idx - 1]; f >= &funcs->fns[0]; --f)
        if ((d == NULL || d == f->func.cxa.dso_handle)
            /* We don't want to run this cleanup more than once.  */
-           && compare_and_swap (&f->flavor, ef_cxa, ef_free))
+           && (atomic_compare_and_exchange_acq (&f->flavor, ef_free, ef_cxa)
+               == 0))
          (*f->func.cxa.fn) (f->func.cxa.arg, 0);
     }
 
index 55ef5b6..c44e45c 100644 (file)
@@ -1,5 +1,5 @@
 /* Determine various system internal values, Linux version.
-   Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
+   Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
 
@@ -31,7 +31,7 @@
 #include <unistd.h>
 #include <sys/sysinfo.h>
 
-#include <atomicity.h>
+#include <atomic.h>
 
 
 /* The default value for the /proc filesystem mount point.  */
@@ -85,8 +85,7 @@ get_proc_path (char *buffer, size_t bufsize)
 
   /* Now store the copied value.  But do it atomically.  */
   assert (sizeof (long int) == sizeof (void *__unbounded));
-  if (compare_and_swap ((long int *) &mount_proc, (long int) 0,
-                       (long int) copy_result) == 0)
+  if (atomic_compare_and_exchange_acq (&mount_proc, copy_result, NULL) == 0)
     /* Replacing the value failed.  This means another thread was
        faster and we don't need the copy anymore.  */
     free (copy_result);