Author: davidxu
Date: Mon Jan 16 06:15:14 2012
New Revision: 230201
URL: http://svn.freebsd.org/changeset/base/230201

Log:
  Insert read memory barriers.

Modified:
  head/lib/libc/gen/sem.c
  head/lib/libc/gen/sem_new.c

Modified: head/lib/libc/gen/sem.c
==============================================================================
--- head/lib/libc/gen/sem.c     Mon Jan 16 06:00:44 2012        (r230200)
+++ head/lib/libc/gen/sem.c     Mon Jan 16 06:15:14 2012        (r230201)
@@ -434,7 +434,7 @@ _libc_sem_post_compat(sem_t *sem)
                return ksem_post((*sem)->semid);
 
        atomic_add_rel_int(&(*sem)->count, 1);
-
+       rmb();
        if ((*sem)->nwaiters)
                return _umtx_wake(&(*sem)->count);
        return (0);

Modified: head/lib/libc/gen/sem_new.c
==============================================================================
--- head/lib/libc/gen/sem_new.c Mon Jan 16 06:00:44 2012        (r230200)
+++ head/lib/libc/gen/sem_new.c Mon Jan 16 06:15:14 2012        (r230201)
@@ -332,6 +332,7 @@ _sem_getvalue(sem_t * __restrict sem, in
 static __inline int
 usem_wake(struct _usem *sem)
 {
+       rmb();
        if (!sem->_has_waiters)
                return (0);
        return _umtx_op(sem, UMTX_OP_SEM_WAKE, 0, NULL, NULL);
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to