mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-23 09:43:32 +08:00
Use C11 atomics instead of atomic_decrement(_val)
Replace atomic_decrement and atomic_decrement_val with atomic_fetch_add_relaxed. Reviewed-by: DJ Delorie <dj@redhat.com>
This commit is contained in:
parent
53b251c9ff
commit
a364a3a709
@ -262,7 +262,7 @@ failed_starting:
|
||||
}
|
||||
|
||||
__pthread_setid (pthread->thread, NULL);
|
||||
atomic_decrement (&__pthread_total);
|
||||
atomic_fetch_add_relaxed (&__pthread_total, -1);
|
||||
failed_sigstate:
|
||||
__pthread_sigstate_destroy (pthread);
|
||||
failed_setup:
|
||||
|
@ -3033,7 +3033,7 @@ munmap_chunk (mchunkptr p)
|
||||
|| __glibc_unlikely (!powerof2 (mem & (pagesize - 1))))
|
||||
malloc_printerr ("munmap_chunk(): invalid pointer");
|
||||
|
||||
atomic_decrement (&mp_.n_mmaps);
|
||||
atomic_fetch_add_relaxed (&mp_.n_mmaps, -1);
|
||||
atomic_fetch_add_relaxed (&mp_.mmapped_mem, -total_size);
|
||||
|
||||
/* If munmap failed the process virtual memory address space is in a
|
||||
|
@ -89,7 +89,7 @@ by @theglibc{}.
|
||||
@c
|
||||
@c Given the use atomic operations this function seems
|
||||
@c to be AS-safe. It is AC-unsafe because there is still
|
||||
@c a window between atomic_decrement and the pthread_push
|
||||
@c a window between atomic_fetch_add_relaxed and the pthread_push
|
||||
@c of the handler that undoes that operation. A cancellation
|
||||
@c at that point would fail to remove the process from the
|
||||
@c waiters count.
|
||||
|
@ -2569,7 +2569,7 @@ aiocb64}, since the LFS transparently replaces the old interface.
|
||||
@c lll_lock (pd->lock) @asulock @aculock
|
||||
@c atomic_increment ok
|
||||
@c clone ok
|
||||
@c atomic_decrement ok
|
||||
@c atomic_fetch_add_relaxed ok
|
||||
@c atomic_exchange_acq ok
|
||||
@c lll_futex_wake ok
|
||||
@c deallocate_stack dup
|
||||
|
@ -88,7 +88,7 @@ __nptl_setxid_sighandler (int sig, siginfo_t *si, void *ctx)
|
||||
self->setxid_futex = 1;
|
||||
futex_wake (&self->setxid_futex, 1, FUTEX_PRIVATE);
|
||||
|
||||
if (atomic_decrement_val (&xidcmd->cntr) == 0)
|
||||
if (atomic_fetch_add_relaxed (&xidcmd->cntr, -1) == 1)
|
||||
futex_wake ((unsigned int *) &xidcmd->cntr, 1, FUTEX_PRIVATE);
|
||||
}
|
||||
libc_hidden_def (__nptl_setxid_sighandler)
|
||||
|
@ -861,7 +861,7 @@ __pthread_create_2_1 (pthread_t *newthread, const pthread_attr_t *attr,
|
||||
NOTES above). */
|
||||
|
||||
/* Oops, we lied for a second. */
|
||||
atomic_decrement (&__nptl_nthreads);
|
||||
atomic_fetch_add_relaxed (&__nptl_nthreads, -1);
|
||||
|
||||
/* Free the resources. */
|
||||
__nptl_deallocate_stack (pd);
|
||||
|
@ -421,7 +421,7 @@ __nscd_drop_map_ref (struct mapped_database *map, int *gc_cycle)
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (atomic_decrement_val (&map->counter) == 0)
|
||||
if (atomic_fetch_add_relaxed (&map->counter, -1) == 1)
|
||||
__nscd_unmap (map);
|
||||
}
|
||||
|
||||
|
@ -198,7 +198,7 @@ __nscd_getai (const char *key, struct nscd_ai_result **result, int *h_errnop)
|
||||
if ((gc_cycle & 1) != 0 || ++nretries == 5 || retval == -1)
|
||||
{
|
||||
/* nscd is just running gc now. Disable using the mapping. */
|
||||
if (atomic_decrement_val (&mapped->counter) == 0)
|
||||
if (atomic_fetch_add_relaxed (&mapped->counter, -1) == 1)
|
||||
__nscd_unmap (mapped);
|
||||
mapped = NO_MAPPING;
|
||||
}
|
||||
|
@ -312,7 +312,7 @@ nscd_getgr_r (const char *key, size_t keylen, request_type type,
|
||||
if ((gc_cycle & 1) != 0 || ++nretries == 5 || retval == -1)
|
||||
{
|
||||
/* nscd is just running gc now. Disable using the mapping. */
|
||||
if (atomic_decrement_val (&mapped->counter) == 0)
|
||||
if (atomic_fetch_add_relaxed (&mapped->counter, -1) == 1)
|
||||
__nscd_unmap (mapped);
|
||||
mapped = NO_MAPPING;
|
||||
}
|
||||
|
@ -440,7 +440,7 @@ nscd_gethst_r (const char *key, size_t keylen, request_type type,
|
||||
if ((gc_cycle & 1) != 0 || ++nretries == 5 || retval == -1)
|
||||
{
|
||||
/* nscd is just running gc now. Disable using the mapping. */
|
||||
if (atomic_decrement_val (&mapped->counter) == 0)
|
||||
if (atomic_fetch_add_relaxed (&mapped->counter, -1) == 1)
|
||||
__nscd_unmap (mapped);
|
||||
mapped = NO_MAPPING;
|
||||
}
|
||||
|
@ -225,7 +225,7 @@ nscd_getpw_r (const char *key, size_t keylen, request_type type,
|
||||
if ((gc_cycle & 1) != 0 || ++nretries == 5 || retval == -1)
|
||||
{
|
||||
/* nscd is just running gc now. Disable using the mapping. */
|
||||
if (atomic_decrement_val (&mapped->counter) == 0)
|
||||
if (atomic_fetch_add_relaxed (&mapped->counter, -1) == 1)
|
||||
__nscd_unmap (mapped);
|
||||
mapped = NO_MAPPING;
|
||||
}
|
||||
|
@ -365,7 +365,7 @@ nscd_getserv_r (const char *crit, size_t critlen, const char *proto,
|
||||
if ((gc_cycle & 1) != 0 || ++nretries == 5 || retval == -1)
|
||||
{
|
||||
/* nscd is just running gc now. Disable using the mapping. */
|
||||
if (atomic_decrement_val (&mapped->counter) == 0)
|
||||
if (atomic_fetch_add_relaxed (&mapped->counter, -1) == 1)
|
||||
__nscd_unmap (mapped);
|
||||
mapped = NO_MAPPING;
|
||||
}
|
||||
|
@ -390,7 +390,7 @@ __nscd_get_mapping (request_type type, const char *key,
|
||||
struct mapped_database *oldval = *mappedp;
|
||||
*mappedp = result;
|
||||
|
||||
if (oldval != NULL && atomic_decrement_val (&oldval->counter) == 0)
|
||||
if (oldval != NULL && atomic_fetch_add_relaxed (&oldval->counter, -1) == 1)
|
||||
__nscd_unmap (oldval);
|
||||
|
||||
return result;
|
||||
|
@ -166,7 +166,7 @@ __nscd_getgrouplist (const char *user, gid_t group, long int *size,
|
||||
if ((gc_cycle & 1) != 0 || ++nretries == 5 || retval == -1)
|
||||
{
|
||||
/* nscd is just running gc now. Disable using the mapping. */
|
||||
if (atomic_decrement_val (&mapped->counter) == 0)
|
||||
if (atomic_fetch_add_relaxed (&mapped->counter, -1) == 1)
|
||||
__nscd_unmap (mapped);
|
||||
mapped = NO_MAPPING;
|
||||
}
|
||||
|
@ -148,7 +148,7 @@ __nscd_setnetgrent (const char *group, struct __netgrent *datap)
|
||||
if ((gc_cycle & 1) != 0 || ++nretries == 5 || retval == -1)
|
||||
{
|
||||
/* nscd is just running gc now. Disable using the mapping. */
|
||||
if (atomic_decrement_val (&mapped->counter) == 0)
|
||||
if (atomic_fetch_add_relaxed (&mapped->counter, -1) == 1)
|
||||
__nscd_unmap (mapped);
|
||||
mapped = NO_MAPPING;
|
||||
}
|
||||
@ -272,7 +272,7 @@ __nscd_innetgr (const char *netgroup, const char *host, const char *user,
|
||||
if ((gc_cycle & 1) != 0 || ++nretries == 5 || retval == -1)
|
||||
{
|
||||
/* nscd is just running gc now. Disable using the mapping. */
|
||||
if (atomic_decrement_val (&mapped->counter) == 0)
|
||||
if (atomic_fetch_add_relaxed (&mapped->counter, -1) == 1)
|
||||
__nscd_unmap (mapped);
|
||||
mapped = NO_MAPPING;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user