diff options
Diffstat (limited to 'boost/lockfree/detail/prefix.hpp')
-rw-r--r-- | boost/lockfree/detail/prefix.hpp | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/boost/lockfree/detail/prefix.hpp b/boost/lockfree/detail/prefix.hpp new file mode 100644 index 0000000000..6ed9446cb0 --- /dev/null +++ b/boost/lockfree/detail/prefix.hpp @@ -0,0 +1,56 @@ +// Copyright (C) 2009 Tim Blechmann +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_LOCKFREE_PREFIX_HPP_INCLUDED +#define BOOST_LOCKFREE_PREFIX_HPP_INCLUDED + +/* this file defines the following macros: + BOOST_LOCKFREE_CACHELINE_BYTES: size of a cache line + BOOST_LOCKFREE_PTR_COMPRESSION: use tag/pointer compression to utilize parts + of the virtual address space as tag (at least 16bit) + BOOST_LOCKFREE_DCAS_ALIGNMENT: symbol used for aligning structs at cache line + boundaries +*/ + +#define BOOST_LOCKFREE_CACHELINE_BYTES 64 + +#ifdef _MSC_VER + +#define BOOST_LOCKFREE_CACHELINE_ALIGNMENT __declspec(align(BOOST_LOCKFREE_CACHELINE_BYTES)) + +#if defined(_M_IX86) + #define BOOST_LOCKFREE_DCAS_ALIGNMENT +#elif defined(_M_X64) || defined(_M_IA64) + #define BOOST_LOCKFREE_PTR_COMPRESSION 1 + #define BOOST_LOCKFREE_DCAS_ALIGNMENT __declspec(align(16)) +#endif + +#endif /* _MSC_VER */ + +#ifdef __GNUC__ + +#define BOOST_LOCKFREE_CACHELINE_ALIGNMENT __attribute__((aligned(BOOST_LOCKFREE_CACHELINE_BYTES))) + +#if defined(__i386__) || defined(__ppc__) + #define BOOST_LOCKFREE_DCAS_ALIGNMENT +#elif defined(__x86_64__) + #define BOOST_LOCKFREE_PTR_COMPRESSION 1 + #define BOOST_LOCKFREE_DCAS_ALIGNMENT __attribute__((aligned(16))) +#elif defined(__alpha__) + // LATER: alpha may benefit from pointer compression. but what is the maximum size of the address space? + #define BOOST_LOCKFREE_DCAS_ALIGNMENT +#endif +#endif /* __GNUC__ */ + +#ifndef BOOST_LOCKFREE_DCAS_ALIGNMENT +#define BOOST_LOCKFREE_DCAS_ALIGNMENT /*BOOST_LOCKFREE_DCAS_ALIGNMENT*/ +#endif + +#ifndef BOOST_LOCKFREE_CACHELINE_ALIGNMENT +#define BOOST_LOCKFREE_CACHELINE_ALIGNMENT /*BOOST_LOCKFREE_CACHELINE_ALIGNMENT*/ +#endif + +#endif /* BOOST_LOCKFREE_PREFIX_HPP_INCLUDED */ |