zebra: temporary workaround for a clang issue with atomics

Current clang has an issue with the pointer/target argument
to at least one atomic/intrinsic. A variable with '_Atomic'
generates a compile-time error. Use a cast as a workaround
here to allow use of clang for now.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
This commit is contained in:
Mark Stapp 2018-10-30 14:05:47 -04:00
parent cac967ca3b
commit e07e954966

View File

@ -651,8 +651,16 @@ static int dplane_route_enqueue(struct zebra_dplane_ctx *ctx)
}
DPLANE_UNLOCK();
curr = atomic_add_fetch_explicit(&zdplane_info.dg_routes_queued,
1, memory_order_seq_cst);
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
&(zdplane_info.dg_routes_queued),
#endif
1, memory_order_seq_cst);
/* Maybe update high-water counter also */
high = atomic_load_explicit(&zdplane_info.dg_routes_queued_max,