From: Mark Stapp Date: Fri, 12 Jun 2020 20:31:22 +0000 (-0400) Subject: zebra: avoid an atomic builtin that clang doesn't like X-Git-Tag: base_7.5~273^2 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=refs%2Fpull%2F6575%2Fhead;p=mirror%2Ffrr.git zebra: avoid an atomic builtin that clang doesn't like We had special-cased use of atomic_add_fetch, because clang just does not like that builtin. Just use atomic_fetch_add instead. Signed-off-by: Mark Stapp --- diff --git a/zebra/zebra_dplane.c b/zebra/zebra_dplane.c index eb3d48d784..b9163cfaab 100644 --- a/zebra/zebra_dplane.c +++ b/zebra/zebra_dplane.c @@ -2158,17 +2158,12 @@ static int dplane_update_enqueue(struct zebra_dplane_ctx *ctx) } DPLANE_UNLOCK(); - curr = atomic_add_fetch_explicit( -#ifdef __clang__ - /* TODO -- issue with the clang atomic/intrinsics currently; - * casting away the 'Atomic'-ness of the variable works. - */ - (uint32_t *)&(zdplane_info.dg_routes_queued), -#else + curr = atomic_fetch_add_explicit( &(zdplane_info.dg_routes_queued), -#endif 1, memory_order_seq_cst); + curr++; /* We got the pre-incremented value */ + /* Maybe update high-water counter also */ high = atomic_load_explicit(&zdplane_info.dg_routes_queued_max, memory_order_seq_cst);