diff options
author | David Xu <davidxu@FreeBSD.org> | 2012-01-16 06:15:14 +0000 |
---|---|---|
committer | David Xu <davidxu@FreeBSD.org> | 2012-01-16 06:15:14 +0000 |
commit | d22d46ce273f1110138cdae5dc0da054792e2bdd (patch) | |
tree | 70dfbacc2a1965484fe6fbb8737bb28f2446c999 | |
parent | b8349441059329ab4682c37bc48d67a0c96fe63f (diff) |
Notes
-rw-r--r-- | lib/libc/gen/sem.c | 2 | ||||
-rw-r--r-- | lib/libc/gen/sem_new.c | 1 |
2 files changed, 2 insertions, 1 deletions
diff --git a/lib/libc/gen/sem.c b/lib/libc/gen/sem.c index e9ae6691090d..842298f4d2a3 100644 --- a/lib/libc/gen/sem.c +++ b/lib/libc/gen/sem.c @@ -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); diff --git a/lib/libc/gen/sem_new.c b/lib/libc/gen/sem_new.c index 2698b4056536..1480afb3a6c2 100644 --- a/lib/libc/gen/sem_new.c +++ b/lib/libc/gen/sem_new.c @@ -332,6 +332,7 @@ _sem_getvalue(sem_t * __restrict sem, int * __restrict sval) 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); |