1cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar/*===-- atomic_flag_clear_explicit.c ----------------------------------------=== 2cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar * 3cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar * The LLVM Compiler Infrastructure 4cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar * 5cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar * This file is dual licensed under the MIT and the University of Illinois Open 6cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar * Source Licenses. See LICENSE.TXT for details. 7cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar * 8cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar *===------------------------------------------------------------------------=== 9cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar * 10cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar * This file implements atomic_flag_clear_explicit from C11's stdatomic.h. 11cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar * 12cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar *===------------------------------------------------------------------------=== 13cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar */ 14cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar 15799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar#ifndef __has_include 16799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar#define __has_include(inc) 0 17799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar#endif 18799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar 19799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar#if __has_include(<stdatomic.h>) 20799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar 21cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar#include <stdatomic.h> 22cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar#undef atomic_flag_clear_explicit 23cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainarvoid atomic_flag_clear_explicit(volatile atomic_flag *object, 24cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar memory_order order) { 25799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar __c11_atomic_store(&(object)->_Value, 0, order); 26cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar} 27799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar 28799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar#endif 29