Author: ed
Date: Sun Jun 30 08:59:33 2013
New Revision: 252412
URL: http://svnweb.freebsd.org/changeset/base/252412

Log:
  Convert this piece of code to use C11 atomics.
  
  As mentioned before, we should at least aim to have one piece of code in
  both user space and kernel space that uses C11 atomics, to get some
  coverage. This piece of code can be migrated trivially, so it's a good
  candidate.

Modified:
  head/lib/librt/sigev_thread.c

Modified: head/lib/librt/sigev_thread.c
==============================================================================
--- head/lib/librt/sigev_thread.c       Sun Jun 30 08:54:41 2013        
(r252411)
+++ head/lib/librt/sigev_thread.c       Sun Jun 30 08:59:33 2013        
(r252412)
@@ -28,13 +28,13 @@
  */
 
 #include <sys/types.h>
-#include <machine/atomic.h>
 
 #include "namespace.h"
 #include <err.h>
 #include <errno.h>
 #include <ucontext.h>
 #include <sys/thr.h>
+#include <stdatomic.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -51,7 +51,7 @@ LIST_HEAD(sigev_list_head, sigev_node);
 static struct sigev_list_head  sigev_hash[HASH_QUEUES];
 static struct sigev_list_head  sigev_all;
 static LIST_HEAD(,sigev_thread)        sigev_threads;
-static unsigned int            sigev_generation;
+static atomic_int              sigev_generation;
 static pthread_mutex_t         *sigev_list_mtx;
 static pthread_once_t          sigev_once = PTHREAD_ONCE_INIT;
 static pthread_once_t          sigev_once_default = PTHREAD_ONCE_INIT;
@@ -196,7 +196,8 @@ __sigev_alloc(int type, const struct sig
        if (sn != NULL) {
                sn->sn_value = evp->sigev_value;
                sn->sn_func  = evp->sigev_notify_function;
-               sn->sn_gen   = atomic_fetchadd_int(&sigev_generation, 1);
+               sn->sn_gen   = atomic_fetch_add_explicit(&sigev_generation, 1,
+                   memory_order_relaxed);
                sn->sn_type  = type;
                _pthread_attr_init(&sn->sn_attr);
                _pthread_attr_setdetachstate(&sn->sn_attr, 
PTHREAD_CREATE_DETACHED);
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to