1// 2// detail/fenced_block.hpp 3// ~~~~~~~~~~~~~~~~~~~~~~~ 4// 5// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com) 6// 7// Distributed under the Boost Software License, Version 1.0. (See accompanying 8// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9// 10 11#ifndef ASIO_DETAIL_FENCED_BLOCK_HPP 12#define ASIO_DETAIL_FENCED_BLOCK_HPP 13 14 15#include "asio/detail/config.hpp" 16 17#if !defined(ASIO_HAS_THREADS) || defined(ASIO_DISABLE_FENCED_BLOCK) 18# include "asio/detail/null_fenced_block.hpp" 19#elif defined(__MACH__) && defined(__APPLE__) 20# include "asio/detail/macos_fenced_block.hpp" 21#elif defined(__sun) 22# include "asio/detail/solaris_fenced_block.hpp" 23#elif defined(__GNUC__) && defined(__arm__) && !defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) 24# include "asio/detail/gcc_arm_fenced_block.hpp" 25#elif defined(__GNUC__) && (defined(__hppa) || defined(__hppa__)) 26# include "asio/detail/gcc_hppa_fenced_block.hpp" 27#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) 28# include "asio/detail/gcc_x86_fenced_block.hpp" 29#elif defined(__GNUC__) && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)) && !defined(__INTEL_COMPILER) && !defined(__ICL) && !defined(__ICC) && !defined(__ECC) && !defined(__PATHSCALE__) 30# include "asio/detail/gcc_sync_fenced_block.hpp" 31#else 32# include "asio/detail/null_fenced_block.hpp" 33#endif 34 35namespace asio { 36namespace detail { 37 38#if !defined(ASIO_HAS_THREADS) || defined(ASIO_DISABLE_FENCED_BLOCK) 39typedef null_fenced_block fenced_block; 40#elif defined(__MACH__) && defined(__APPLE__) 41typedef macos_fenced_block fenced_block; 42#elif defined(__sun) 43typedef solaris_fenced_block fenced_block; 44#elif defined(__GNUC__) && defined(__arm__) && !defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) 45typedef gcc_arm_fenced_block fenced_block; 46#elif defined(__GNUC__) && (defined(__hppa) || defined(__hppa__)) 47typedef gcc_hppa_fenced_block fenced_block; 48#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) 49typedef gcc_x86_fenced_block fenced_block; 50#elif defined(__GNUC__) && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)) && !defined(__INTEL_COMPILER) && !defined(__ICL) && !defined(__ICC) && !defined(__ECC) && !defined(__PATHSCALE__) 51typedef gcc_sync_fenced_block fenced_block; 52#else 53typedef null_fenced_block fenced_block; 54#endif 55 56} // namespace detail 57} // namespace asio 58 59#endif // ASIO_DETAIL_FENCED_BLOCK_HPP 60