Changed: use padding option instead of alignment one
authorkhizmax <libcds.dev@gmail.com>
Tue, 23 Jun 2015 18:58:53 +0000 (21:58 +0300)
committerkhizmax <libcds.dev@gmail.com>
Tue, 23 Jun 2015 18:58:53 +0000 (21:58 +0300)
21 files changed:
cds/container/basket_queue.h
cds/container/msqueue.h
cds/intrusive/basket_queue.h
cds/intrusive/details/single_link_struct.h
cds/intrusive/moir_queue.h
cds/intrusive/msqueue.h
cds/intrusive/optimistic_queue.h
cds/opt/options.h
tests/test-hdr/queue/hdr_basketqueue_dhp.cpp
tests/test-hdr/queue/hdr_basketqueue_hp.cpp
tests/test-hdr/queue/hdr_intrusive_basketqueue_dhp.cpp
tests/test-hdr/queue/hdr_intrusive_basketqueue_hp.cpp
tests/test-hdr/queue/hdr_intrusive_moirqueue_dhp.cpp
tests/test-hdr/queue/hdr_intrusive_moirqueue_hp.cpp
tests/test-hdr/queue/hdr_intrusive_msqueue_dhp.cpp
tests/test-hdr/queue/hdr_intrusive_msqueue_hp.cpp
tests/test-hdr/queue/hdr_moirqueue_dhp.cpp
tests/test-hdr/queue/hdr_moirqueue_hp.cpp
tests/test-hdr/queue/hdr_msqueue_dhp.cpp
tests/test-hdr/queue/hdr_msqueue_hp.cpp
tools/tsan-suppression

index a379a546a10c5dc7db8d68a308dbe96412c17d69..d9f9d96553ffd233ef4f4b7e7e83e153f7f13518 100644 (file)
@@ -48,22 +48,22 @@ namespace cds { namespace container {
             */
             typedef opt::v::relaxed_ordering    memory_model;
 
             */
             typedef opt::v::relaxed_ordering    memory_model;
 
-            /// Alignment of internal queue data. Default is \p opt::cache_line_alignment
-            enum { alignment = opt::cache_line_alignment };
+            /// Padding for internal critical atomic data. Default is \p opt::cache_line_padding
+            enum { padding = opt::cache_line_padding };
         };
 
         /// Metafunction converting option list to \p basket_queue::traits
         /**
             Supported \p Options are:
         };
 
         /// Metafunction converting option list to \p basket_queue::traits
         /**
             Supported \p Options are:
-            - opt::allocator - allocator (like \p std::allocator) used for allocating queue nodes. Default is \ref CDS_DEFAULT_ALLOCATOR
-            - opt::back_off - back-off strategy used, default is \p cds::backoff::empty.
-            - opt::item_counter - the type of item counting feature. Default is \p cds::atomicity::empty_item_counter (item counting disabled)
+            - \p opt::allocator - allocator (like \p std::allocator) used for allocating queue nodes. Default is \ref CDS_DEFAULT_ALLOCATOR
+            - \p opt::back_off - back-off strategy used, default is \p cds::backoff::empty.
+            - \p opt::item_counter - the type of item counting feature. Default is \p cds::atomicity::empty_item_counter (item counting disabled)
                 To enable item counting use \p cds::atomicity::item_counter
                 To enable item counting use \p cds::atomicity::item_counter
-            - opt::stat - the type to gather internal statistics.
+            - opt::stat - the type to gather internal statistics.
                 Possible statistics types are: \p basket_queue::stat, \p basket_queue::empty_stat, user-provided class that supports \p %basket_queue::stat interface.
                 Default is \p %basket_queue::empty_stat.
                 Possible statistics types are: \p basket_queue::stat, \p basket_queue::empty_stat, user-provided class that supports \p %basket_queue::stat interface.
                 Default is \p %basket_queue::empty_stat.
-            - opt::alignment - the alignment for internal queue data. Default is \p opt::cache_line_alignment
-            - opt::memory_model - C++ memory ordering model. Can be \p opt::v::relaxed_ordering (relaxed memory model, the default)
+            - \p opt::padding - padding for internal critical atomic data. Default is \p opt::cache_line_padding
+            - \p opt::memory_model - C++ memory ordering model. Can be \p opt::v::relaxed_ordering (relaxed memory model, the default)
                 or \p opt::v::sequential_consistent (sequentially consisnent memory model).
 
             Example: declare \p %BasketQueue with item counting and internal statistics
                 or \p opt::v::sequential_consistent (sequentially consisnent memory model).
 
             Example: declare \p %BasketQueue with item counting and internal statistics
index 1d355e97fc218f8d619a26beaf380fc8f04cf67b..0c021445580a1f0c978307b3f78944e0102afb80 100644 (file)
@@ -46,8 +46,8 @@ namespace cds { namespace container {
             */
             typedef opt::v::relaxed_ordering    memory_model;
 
             */
             typedef opt::v::relaxed_ordering    memory_model;
 
-            /// Alignment of internal queue data. Default is \p opt::cache_line_alignment
-            enum { alignment = opt::cache_line_alignment };
+            /// Padding for internal critical atomic data. Default is \p opt::cache_line_padding
+            enum { padding = opt::cache_line_padding };
         };
 
         /// Metafunction converting option list to \p msqueue::traits
         };
 
         /// Metafunction converting option list to \p msqueue::traits
@@ -60,7 +60,7 @@ namespace cds { namespace container {
             - \p opt::stat - the type to gather internal statistics.
                 Possible statistics types are: \p msqueue::stat, \p msqueue::empty_stat, user-provided class that supports \p %msqueue::stat interface.
                 Default is \p %msqueue::empty_stat.
             - \p opt::stat - the type to gather internal statistics.
                 Possible statistics types are: \p msqueue::stat, \p msqueue::empty_stat, user-provided class that supports \p %msqueue::stat interface.
                 Default is \p %msqueue::empty_stat.
-            - \p opt::alignment - the alignment for internal queue data. Default is \p opt::cache_line_alignment
+            - \p opt::padding - padding for internal critical atomic data. Default is \p opt::cache_line_padding
             - \p opt::memory_model - C++ memory ordering model. Can be \p opt::v::relaxed_ordering (relaxed memory model, the default)
                 or \p opt::v::sequential_consistent (sequentially consisnent memory model).
 
             - \p opt::memory_model - C++ memory ordering model. Can be \p opt::v::relaxed_ordering (relaxed memory model, the default)
                 or \p opt::v::sequential_consistent (sequentially consisnent memory model).
 
index 46796dc8fa1bb743cde56b4512eecc69ad0bc60c..6fc8b81bb9015a0781a2e7de800d98410efbf14e 100644 (file)
@@ -228,8 +228,8 @@ namespace cds { namespace intrusive {
             /// Link checking, see \p cds::opt::link_checker
             static CDS_CONSTEXPR const opt::link_check_type link_checker = opt::debug_check_link;
 
             /// Link checking, see \p cds::opt::link_checker
             static CDS_CONSTEXPR const opt::link_check_type link_checker = opt::debug_check_link;
 
-            /// Alignment for internal queue data. Default is \p opt::cache_line_alignment
-            enum { alignment = opt::cache_line_alignment };
+            /// Padding for internal critical atomic data. Default is \p opt::cache_line_padding
+            enum { padding = opt::cache_line_padding };
         };
 
 
         };
 
 
@@ -248,7 +248,7 @@ namespace cds { namespace intrusive {
             - opt::stat - the type to gather internal statistics.
                 Possible statistics types are: \p basket_queue::stat, \p basket_queue::empty_stat, user-provided class that supports \p %basket_queue::stat interface.
                 Default is \p %basket_queue::empty_stat (internal statistics disabled).
             - opt::stat - the type to gather internal statistics.
                 Possible statistics types are: \p basket_queue::stat, \p basket_queue::empty_stat, user-provided class that supports \p %basket_queue::stat interface.
                 Default is \p %basket_queue::empty_stat (internal statistics disabled).
-            - opt::alignment - the alignment for internal queue data. Default is \p opt::cache_line_alignment
+            - \p opt::padding - padding for internal critical atomic data. Default is \p opt::cache_line_padding
             - opt::memory_model - C++ memory ordering model. Can be \p opt::v::relaxed_ordering (relaxed memory model, the default)
                 or \p opt::v::sequential_consistent (sequentially consisnent memory model).
 
             - opt::memory_model - C++ memory ordering model. Can be \p opt::v::relaxed_ordering (relaxed memory model, the default)
                 or \p opt::v::sequential_consistent (sequentially consisnent memory model).
 
@@ -379,7 +379,7 @@ namespace cds { namespace intrusive {
 
         // BasketQueue with Hazard Pointer garbage collector,
         // member hook + item disposer + item counter,
 
         // BasketQueue with Hazard Pointer garbage collector,
         // member hook + item disposer + item counter,
-        // without alignment of internal queue data:
+        // without padding of internal queue data:
         struct Bar
         {
             // Your data
         struct Bar
         {
             // Your data
@@ -397,7 +397,7 @@ namespace cds { namespace intrusive {
                 >
                 ,ci::opt::disposer< fooDisposer >
                 ,cds::opt::item_counter< cds::atomicity::item_counter >
                 >
                 ,ci::opt::disposer< fooDisposer >
                 ,cds::opt::item_counter< cds::atomicity::item_counter >
-                ,cds::opt::alignment< cds::opt::no_special_alignment >
+                ,cds::opt::padding< cds::opt::no_special_padding >
             >::type
         {};
         typedef ci::BasketQueue< hp_gc, Bar, barTraits > barQueue;
             >::type
         {};
         typedef ci::BasketQueue< hp_gc, Bar, barTraits > barQueue;
@@ -434,16 +434,16 @@ namespace cds { namespace intrusive {
         typedef typename node_type::marked_ptr   marked_ptr;
         typedef typename node_type::atomic_marked_ptr atomic_marked_ptr;
 
         typedef typename node_type::marked_ptr   marked_ptr;
         typedef typename node_type::atomic_marked_ptr atomic_marked_ptr;
 
-        typedef typename opt::details::alignment_setter< atomic_marked_ptr, traits::alignment >::type aligned_node_ptr;
-        typedef typename opt::details::alignment_setter< node_type, traits::alignment >::type dummy_node_type;
-
         // GC and node_type::gc must be the same
         static_assert( std::is_same<gc, typename node_type::gc>::value, "GC and node_type::gc must be the same");
         //@endcond
 
         // GC and node_type::gc must be the same
         static_assert( std::is_same<gc, typename node_type::gc>::value, "GC and node_type::gc must be the same");
         //@endcond
 
-        aligned_node_ptr    m_pHead ;           ///< Queue's head pointer (aligned)
-        aligned_node_ptr    m_pTail ;           ///< Queue's tail pointer (aligned)
-        dummy_node_type     m_Dummy ;           ///< dummy node
+        atomic_marked_ptr    m_pHead ;           ///< Queue's head pointer (aligned)
+        typename opt::details::apply_padding< atomic_marked_ptr, traits::padding >::padding_type pad1_;
+        atomic_marked_ptr    m_pTail ;           ///< Queue's tail pointer (aligned)
+        typename opt::details::apply_padding< atomic_marked_ptr, traits::padding >::padding_type pad2_;
+        node_type           m_Dummy ;           ///< dummy node
+        typename opt::details::apply_padding< node_type, traits::padding >::padding_type pad3_;
         item_counter        m_ItemCounter   ;   ///< Item counter
         stat                m_Stat  ;           ///< Internal statistics
         //@cond
         item_counter        m_ItemCounter   ;   ///< Item counter
         stat                m_Stat  ;           ///< Internal statistics
         //@cond
index d8365998fdaa780fe9fddcb45962bc72ca8ac8be..b235b593e7775c798ec6cda434c20aa1f9d1cdd9 100644 (file)
@@ -36,9 +36,10 @@ namespace cds { namespace intrusive {
 
             atomic_node_ptr m_pNext ; ///< pointer to the next node in the container
 
 
             atomic_node_ptr m_pNext ; ///< pointer to the next node in the container
 
-            node()
-                : m_pNext( nullptr )
-            {}
+            node() CDS_NOEXCEPT
+            {
+                m_pNext.store( nullptr, atomics::memory_order_release );
+            }
         };
 
         //@cond
         };
 
         //@cond
index 0928dd220302d30c9eb4f332e0e10685c969691f..ecd76bd9b0351dc947c735a019224849dbd9182a 100644 (file)
@@ -61,7 +61,7 @@ namespace cds { namespace intrusive {
 
         // MoirQueue with Hazard Pointer garbage collector,
         // member hook + item disposer + item counter,
 
         // MoirQueue with Hazard Pointer garbage collector,
         // member hook + item disposer + item counter,
-        // without alignment of internal queue data:
+        // without padding of internal queue data:
         struct Bar
         {
             // Your data
         struct Bar
         {
             // Your data
@@ -74,7 +74,7 @@ namespace cds { namespace intrusive {
             typedef ci::msqueue::member_hook< offsetof(Bar, hMember), ,ci::opt::gc<hp_gc> > hook;
             typedef fooDisposer disposer;
             typedef cds::atomicity::item_counter item_counter;
             typedef ci::msqueue::member_hook< offsetof(Bar, hMember), ,ci::opt::gc<hp_gc> > hook;
             typedef fooDisposer disposer;
             typedef cds::atomicity::item_counter item_counter;
-            enum { aligment = cds::opt::no_special_alignment alignment };
+            enum { padding = cds::opt::no_special_padding };
         };
         typedef ci::MoirQueue< hp_gc, Bar, barQueueTraits > barQueue;
         \endcode
         };
         typedef ci::MoirQueue< hp_gc, Bar, barQueueTraits > barQueue;
         \endcode
index e9b30f7546668f91c78327bb1dfc564de85b5dc4..9bd71f5d1bd06578059473bc00dd54a3c4d3a68b 100644 (file)
@@ -171,8 +171,8 @@ namespace cds { namespace intrusive {
             /// Link checking, see \p cds::opt::link_checker
             static CDS_CONSTEXPR const opt::link_check_type link_checker = opt::debug_check_link;
 
             /// Link checking, see \p cds::opt::link_checker
             static CDS_CONSTEXPR const opt::link_check_type link_checker = opt::debug_check_link;
 
-            /// Alignment for internal queue data. Default is \p opt::cache_line_alignment
-            enum { alignment = opt::cache_line_alignment };
+            /// Padding for internal critical atomic data. Default is \p opt::cache_line_padding
+            enum { padding = opt::cache_line_padding };
         };
 
         /// Metafunction converting option list to \p msqueue::traits
         };
 
         /// Metafunction converting option list to \p msqueue::traits
@@ -190,7 +190,7 @@ namespace cds { namespace intrusive {
             - \p opt::stat - the type to gather internal statistics.
                 Possible statistics types are: \p msqueue::stat, \p msqueue::empty_stat, user-provided class that supports \p %msqueue::stat interface.
                 Default is \p %msqueue::empty_stat (internal statistics disabled).
             - \p opt::stat - the type to gather internal statistics.
                 Possible statistics types are: \p msqueue::stat, \p msqueue::empty_stat, user-provided class that supports \p %msqueue::stat interface.
                 Default is \p %msqueue::empty_stat (internal statistics disabled).
-            - \p opt::alignment - the alignment for internal queue data. Default is \p opt::cache_line_alignment
+            - \p opt::padding - padding for internal critical atomic data. Default is \p opt::cache_line_padding
             - \p opt::memory_model - C++ memory ordering model. Can be \p opt::v::relaxed_ordering (relaxed memory model, the default)
                 or \p opt::v::sequential_consistent (sequentially consisnent memory model).
 
             - \p opt::memory_model - C++ memory ordering model. Can be \p opt::v::relaxed_ordering (relaxed memory model, the default)
                 or \p opt::v::sequential_consistent (sequentially consisnent memory model).
 
@@ -287,7 +287,7 @@ namespace cds { namespace intrusive {
         // Example 2:
         //  MSQueue with Hazard Pointer garbage collector,
         //  member hook + item disposer + item counter,
         // Example 2:
         //  MSQueue with Hazard Pointer garbage collector,
         //  member hook + item disposer + item counter,
-        //  without alignment of internal queue data
+        //  without padding of internal queue data
         //  Use msqueue::make_traits
         struct Bar
         {
         //  Use msqueue::make_traits
         struct Bar
         {
@@ -307,7 +307,7 @@ namespace cds { namespace intrusive {
                 >
                 ,ci::opt::disposer< fooDisposer >
                 ,cds::opt::item_counter< cds::atomicity::item_counter >
                 >
                 ,ci::opt::disposer< fooDisposer >
                 ,cds::opt::item_counter< cds::atomicity::item_counter >
-                ,cds::opt::alignment< cds::opt::no_special_alignment >
+                ,cds::opt::padding< cds::opt::no_special_padding >
             >::type
         > barQueue;
         \endcode
             >::type
         > barQueue;
         \endcode
@@ -345,14 +345,16 @@ namespace cds { namespace intrusive {
         // GC and node_type::gc must be the same
         static_assert((std::is_same<gc, typename node_type::gc>::value), "GC and node_type::gc must be the same");
 
         // GC and node_type::gc must be the same
         static_assert((std::is_same<gc, typename node_type::gc>::value), "GC and node_type::gc must be the same");
 
-        typedef typename opt::details::alignment_setter< typename node_type::atomic_node_ptr, traits::alignment >::type aligned_node_ptr;
-        typedef typename opt::details::alignment_setter< node_type, traits::alignment >::type dummy_node_type;
+        typedef typename node_type::atomic_node_ptr atomic_node_ptr;
 
 
-        aligned_node_ptr    m_pHead ;           ///< Queue's head pointer
-        aligned_node_ptr    m_pTail ;           ///< Queue's tail pointer
-        dummy_node_type     m_Dummy ;           ///< dummy node
-        item_counter        m_ItemCounter   ;   ///< Item counter
-        stat                m_Stat  ;           ///< Internal statistics
+        atomic_node_ptr    m_pHead;        ///< Queue's head pointer
+        typename opt::details::apply_padding< atomic_node_ptr, traits::padding >::padding_type pad1_;
+        atomic_node_ptr    m_pTail;        ///< Queue's tail pointer
+        typename opt::details::apply_padding< atomic_node_ptr, traits::padding >::padding_type pad2_;
+        node_type          m_Dummy;        ///< dummy node
+        typename opt::details::apply_padding< node_type, traits::padding >::padding_type pad3_;
+        item_counter        m_ItemCounter; ///< Item counter
+        stat                m_Stat;        ///< Internal statistics
         //@endcond
 
         //@cond
         //@endcond
 
         //@cond
@@ -554,8 +556,8 @@ namespace cds { namespace intrusive {
         bool empty() const
         {
             typename gc::Guard guard;
         bool empty() const
         {
             typename gc::Guard guard;
-            return guard.protect( m_pHead, []( node_type * p ) -> value_type * { return node_traits::to_value_ptr( p );})
-                ->m_pNext.load( memory_model::memory_order_relaxed ) == nullptr;
+            node_type * p = guard.protect( m_pHead, []( node_type * p ) -> value_type * { return node_traits::to_value_ptr( p );});
+            return p->m_pNext.load( memory_model::memory_order_relaxed ) == nullptr;
         }
 
         /// Clear the queue
         }
 
         /// Clear the queue
index 65d883c3ab3a5a36338c513fc3c1b45992d14806..a7684849df9e47565529f02569c72b93bfdf9461 100644 (file)
@@ -32,10 +32,11 @@ namespace cds { namespace intrusive {
             atomic_node_ptr m_pPrev ;   ///< Pointer to previous node
             atomic_node_ptr m_pNext ;   ///< Pointer to next node
 
             atomic_node_ptr m_pPrev ;   ///< Pointer to previous node
             atomic_node_ptr m_pNext ;   ///< Pointer to next node
 
-            CDS_CONSTEXPR node() CDS_NOEXCEPT
-                : m_pPrev( nullptr )
-                , m_pNext( nullptr )
-            {}
+            node() CDS_NOEXCEPT
+            {
+                m_pPrev.store( nullptr, atomics::memory_order_release );
+                m_pNext.store( nullptr, atomics::memory_order_release );
+            }
         };
 
         //@cond
         };
 
         //@cond
@@ -464,10 +465,10 @@ namespace cds { namespace intrusive {
                 assert( pHead != nullptr );
                 pFirstNodePrev = res.guards.protect( 2, pHead->m_pPrev, [](node_type * p) -> value_type * {return node_traits::to_value_ptr(p);});
 
                 assert( pHead != nullptr );
                 pFirstNodePrev = res.guards.protect( 2, pHead->m_pPrev, [](node_type * p) -> value_type * {return node_traits::to_value_ptr(p);});
 
-                if ( pHead == m_pHead.load(memory_model::memory_order_relaxed)) {
+                if ( pHead == m_pHead.load(memory_model::memory_order_acquire)) {
                     if ( pTail != pHead ) {
                         if ( pFirstNodePrev == nullptr
                     if ( pTail != pHead ) {
                         if ( pFirstNodePrev == nullptr
-                          || pFirstNodePrev->m_pNext.load(memory_model::memory_order_relaxed) != pHead )
+                          || pFirstNodePrev->m_pNext.load(memory_model::memory_order_acquire) != pHead )
                         {
                             fix_list( pTail, pHead );
                             continue;
                         {
                             fix_list( pTail, pHead );
                             continue;
@@ -509,8 +510,8 @@ namespace cds { namespace intrusive {
 
             pCurNode = pTail;
             while ( pCurNode != pHead ) { // While not at head
 
             pCurNode = pTail;
             while ( pCurNode != pHead ) { // While not at head
-                pCurNodeNext = guards.protect(0, pCurNode->m_pNext, [](node_type * p) -> value_type * {return node_traits::to_value_ptr(p);} );
-                if ( pHead != m_pHead.load(memory_model::memory_order_relaxed) )
+                pCurNodeNext = guards.protect(0, pCurNode->m_pNext, [](node_type * p) -> value_type * { return node_traits::to_value_ptr(p);});
+                if ( pHead != m_pHead.load(memory_model::memory_order_acquire))
                     break;
                 pCurNodeNext->m_pPrev.store( pCurNode, memory_model::memory_order_release );
                 guards.assign( 1, node_traits::to_value_ptr( pCurNode = pCurNodeNext ));
                     break;
                 pCurNodeNext->m_pPrev.store( pCurNode, memory_model::memory_order_release );
                 guards.assign( 1, node_traits::to_value_ptr( pCurNode = pCurNodeNext ));
index a14c7054ccd562c4d48c0871465e591c4583c9e6..11e01a0a072dfb9590d6435bcc3f63cff01e8cba 100644 (file)
@@ -408,7 +408,6 @@ namespace opt {
         struct alignment_setter<Type, cache_line_alignment> {
             typedef typename cds::details::aligned_type< Type, c_nCacheLineSize >::type  type;
         };
         struct alignment_setter<Type, cache_line_alignment> {
             typedef typename cds::details::aligned_type< Type, c_nCacheLineSize >::type  type;
         };
-
     } // namespace details
     //@endcond
 
     } // namespace details
     //@endcond
 
@@ -468,6 +467,7 @@ namespace opt {
             struct type {
                 T   data;
             };
             struct type {
                 T   data;
             };
+            typedef void padding_type;
         };
 
         template <typename T, unsigned int Padding, bool TinyOnly >
         };
 
         template <typename T, unsigned int Padding, bool TinyOnly >
@@ -476,23 +476,27 @@ namespace opt {
             struct type {
                 T   data;
             };
             struct type {
                 T   data;
             };
+            typedef void padding_type;
         };
 
         template <typename T, unsigned int Padding, bool TinyOnly >
         struct apply_padding_helper < T, Padding, false, padding_datasize_less, TinyOnly >
         {
         };
 
         template <typename T, unsigned int Padding, bool TinyOnly >
         struct apply_padding_helper < T, Padding, false, padding_datasize_less, TinyOnly >
         {
+            typedef uint8_t padding_type[Padding - sizeof( T )];
             struct type {
                 T data;
             struct type {
                 T data;
-                uint8_t pad_[Padding - sizeof( T )];
+                padding_type pad_;
             };
             };
+
         };
 
         template <typename T, unsigned int Padding >
         struct apply_padding_helper < T, Padding, false, padding_datasize_greater, false >
         {
         };
 
         template <typename T, unsigned int Padding >
         struct apply_padding_helper < T, Padding, false, padding_datasize_greater, false >
         {
+            typedef uint8_t padding_type[Padding - sizeof( T ) % Padding];
             struct type {
                 T data;
             struct type {
                 T data;
-                uint8_t pad_[Padding - sizeof( T ) % Padding];
+                padding_type pad_;
             };
         };
 
             };
         };
 
@@ -502,6 +506,7 @@ namespace opt {
             struct type {
                 T data;
             };
             struct type {
                 T data;
             };
+            typedef void padding_type;
         };
 
         template <typename T, unsigned int Padding >
         };
 
         template <typename T, unsigned int Padding >
@@ -517,12 +522,20 @@ namespace opt {
 
             static_assert( (c_nPadding & (c_nPadding - 1)) == 0, "Padding must be a power-of-two number" );
 
 
             static_assert( (c_nPadding & (c_nPadding - 1)) == 0, "Padding must be a power-of-two number" );
 
-            typedef typename apply_padding_helper< T,
+            typedef apply_padding_helper< T,
                 c_nPadding,
                 c_nPadding == 0,
                 sizeof( T ) < c_nPadding ? padding_datasize_less : sizeof( T ) == c_nPadding ? padding_datasize_equal : padding_datasize_greater,
                 (Padding & padding_tiny_data_only) != 0
                 c_nPadding,
                 c_nPadding == 0,
                 sizeof( T ) < c_nPadding ? padding_datasize_less : sizeof( T ) == c_nPadding ? padding_datasize_equal : padding_datasize_greater,
                 (Padding & padding_tiny_data_only) != 0
-            >::type type;
+            > result;
+
+            typedef typename result::type type;
+
+            typedef typename std::conditional<
+                std::is_same< typename result::padding_type, void >::value,
+                unsigned int,
+                typename result::padding_type
+            >::type padding_type;
         };
 
     } // namespace details
         };
 
     } // namespace details
index c0accb30b6a9c95bc8f757fb61a3684dade79c15..c48ef031e27f64f2e6d5f82f3b19ffa2312d9b14 100644 (file)
@@ -71,7 +71,7 @@ namespace queue {
         typedef cds::container::BasketQueue < cds::gc::DHP, int,
             typename cds::container::basket_queue::make_traits <
                 cds::opt::memory_model< cds::opt::v::relaxed_ordering>
         typedef cds::container::BasketQueue < cds::gc::DHP, int,
             typename cds::container::basket_queue::make_traits <
                 cds::opt::memory_model< cds::opt::v::relaxed_ordering>
-                ,cds::opt::alignment< 16 >
+                ,cds::opt::padding< 16 >
             >::type
         > queue_type;
         test_no_ic< queue_type >();
             >::type
         > queue_type;
         test_no_ic< queue_type >();
@@ -83,7 +83,7 @@ namespace queue {
         {
             typedef cds::atomicity::item_counter item_counter;
             typedef cds::opt::v::relaxed_ordering memory_model;
         {
             typedef cds::atomicity::item_counter item_counter;
             typedef cds::opt::v::relaxed_ordering memory_model;
-            enum { alignment = 32 };
+            enum { padding = 32 };
         };
         typedef cds::container::BasketQueue < cds::gc::DHP, int, traits > queue_type;
         test_ic< queue_type >();
         };
         typedef cds::container::BasketQueue < cds::gc::DHP, int, traits > queue_type;
         test_ic< queue_type >();
@@ -94,7 +94,7 @@ namespace queue {
         typedef cds::container::BasketQueue < cds::gc::DHP, int,
             typename cds::container::basket_queue::make_traits <
                 cds::opt::memory_model< cds::opt::v::sequential_consistent>
         typedef cds::container::BasketQueue < cds::gc::DHP, int,
             typename cds::container::basket_queue::make_traits <
                 cds::opt::memory_model< cds::opt::v::sequential_consistent>
-                , cds::opt::alignment< cds::opt::no_special_alignment >
+                , cds::opt::padding< cds::opt::no_special_padding >
             > ::type
         > queue_type;
         test_no_ic< queue_type >();
             > ::type
         > queue_type;
         test_no_ic< queue_type >();
@@ -106,7 +106,7 @@ namespace queue {
             typename cds::container::basket_queue::make_traits <
                 cds::opt::item_counter< cds::atomicity::item_counter >
                 ,cds::opt::memory_model< cds::opt::v::sequential_consistent>
             typename cds::container::basket_queue::make_traits <
                 cds::opt::item_counter< cds::atomicity::item_counter >
                 ,cds::opt::memory_model< cds::opt::v::sequential_consistent>
-                ,cds::opt::alignment< cds::opt::cache_line_alignment >
+                ,cds::opt::padding< cds::opt::cache_line_padding >
             > ::type
         > queue_type;
         test_ic< queue_type >();
             > ::type
         > queue_type;
         test_ic< queue_type >();
index fcc0e2c79361d418dd3c8387ec148e5e9d3baef2..2e608d3acfe53ad1092bdb8c6255d9b5d30c1953 100644 (file)
@@ -71,7 +71,7 @@ namespace queue {
         typedef cds::container::BasketQueue < cds::gc::HP, int,
             typename cds::container::basket_queue::make_traits <
                 cds::opt::memory_model< cds::opt::v::relaxed_ordering>
         typedef cds::container::BasketQueue < cds::gc::HP, int,
             typename cds::container::basket_queue::make_traits <
                 cds::opt::memory_model< cds::opt::v::relaxed_ordering>
-                ,cds::opt::alignment< 16 >
+                ,cds::opt::padding< 16 >
             >::type
         > queue_type;
         test_no_ic< queue_type >();
             >::type
         > queue_type;
         test_no_ic< queue_type >();
@@ -83,7 +83,7 @@ namespace queue {
         {
             typedef cds::atomicity::item_counter item_counter;
             typedef cds::opt::v::relaxed_ordering memory_model;
         {
             typedef cds::atomicity::item_counter item_counter;
             typedef cds::opt::v::relaxed_ordering memory_model;
-            enum { alignment = 32 };
+            enum { padding = 32 };
         };
         typedef cds::container::BasketQueue < cds::gc::HP, int, traits > queue_type;
         test_ic< queue_type >();
         };
         typedef cds::container::BasketQueue < cds::gc::HP, int, traits > queue_type;
         test_ic< queue_type >();
@@ -94,7 +94,7 @@ namespace queue {
         typedef cds::container::BasketQueue < cds::gc::HP, int,
             typename cds::container::basket_queue::make_traits <
                 cds::opt::memory_model< cds::opt::v::sequential_consistent>
         typedef cds::container::BasketQueue < cds::gc::HP, int,
             typename cds::container::basket_queue::make_traits <
                 cds::opt::memory_model< cds::opt::v::sequential_consistent>
-                , cds::opt::alignment< cds::opt::no_special_alignment >
+                , cds::opt::padding< cds::opt::no_special_padding >
             > ::type
         > queue_type;
         test_no_ic< queue_type >();
             > ::type
         > queue_type;
         test_no_ic< queue_type >();
@@ -106,7 +106,7 @@ namespace queue {
             typename cds::container::basket_queue::make_traits <
                 cds::opt::item_counter< cds::atomicity::item_counter >
                 ,cds::opt::memory_model< cds::opt::v::sequential_consistent>
             typename cds::container::basket_queue::make_traits <
                 cds::opt::item_counter< cds::atomicity::item_counter >
                 ,cds::opt::memory_model< cds::opt::v::sequential_consistent>
-                ,cds::opt::alignment< cds::opt::cache_line_alignment >
+                ,cds::opt::padding< cds::opt::cache_line_padding >
             > ::type
         > queue_type;
         test_ic< queue_type >();
             > ::type
         > queue_type;
         test_ic< queue_type >();
index a7c45e501828fa6762c15753ee74181834ba973c..b10d18b275699a78dc0b29d088027c57f75bbb83 100644 (file)
@@ -78,18 +78,18 @@ namespace queue {
             >::type
         > BasketQueue_DHP_member_stat;
 
             >::type
         > BasketQueue_DHP_member_stat;
 
-        // DHP base hook + alignment
+        // DHP base hook + padding
         typedef ci::BasketQueue< cds::gc::DHP, base_hook_item,
             typename ci::basket_queue::make_traits<
                 ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
                 ,ci::opt::hook<
                     ci::basket_queue::base_hook< ci::opt::gc<cds::gc::DHP> >
                 >
         typedef ci::BasketQueue< cds::gc::DHP, base_hook_item,
             typename ci::basket_queue::make_traits<
                 ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
                 ,ci::opt::hook<
                     ci::basket_queue::base_hook< ci::opt::gc<cds::gc::DHP> >
                 >
-                ,co::alignment< 32 >
+                ,co::padding< 32 >
             >::type
         > BasketQueue_DHP_base_align;
 
             >::type
         > BasketQueue_DHP_base_align;
 
-        // DHP member hook + alignment
+        // DHP member hook + padding
         typedef ci::BasketQueue< cds::gc::DHP, member_hook_item,
             typename ci::basket_queue::make_traits<
                 ci::opt::hook<
         typedef ci::BasketQueue< cds::gc::DHP, member_hook_item,
             typename ci::basket_queue::make_traits<
                 ci::opt::hook<
@@ -98,23 +98,23 @@ namespace queue {
                         ci::opt::gc<cds::gc::DHP>
                     >
                 >
                         ci::opt::gc<cds::gc::DHP>
                     >
                 >
-                ,co::alignment< 32 >
+                ,co::padding< 32 >
                 ,ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
             >::type
         > BasketQueue_DHP_member_align;
 
                 ,ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
             >::type
         > BasketQueue_DHP_member_align;
 
-        // DHP base hook + no alignment
+        // DHP base hook + no padding
         typedef ci::BasketQueue< cds::gc::DHP, base_hook_item,
             typename ci::basket_queue::make_traits<
                 ci::opt::hook<
                     ci::basket_queue::base_hook< ci::opt::gc<cds::gc::DHP> >
                 >
                 ,ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
         typedef ci::BasketQueue< cds::gc::DHP, base_hook_item,
             typename ci::basket_queue::make_traits<
                 ci::opt::hook<
                     ci::basket_queue::base_hook< ci::opt::gc<cds::gc::DHP> >
                 >
                 ,ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
-                ,co::alignment< co::no_special_alignment >
+                ,co::padding< co::no_special_padding >
             >::type
         > BasketQueue_DHP_base_noalign;
 
             >::type
         > BasketQueue_DHP_base_noalign;
 
-        // DHP member hook + no alignment
+        // DHP member hook + no padding
         typedef ci::BasketQueue< cds::gc::DHP, member_hook_item,
             typename ci::basket_queue::make_traits<
                 ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
         typedef ci::BasketQueue< cds::gc::DHP, member_hook_item,
             typename ci::basket_queue::make_traits<
                 ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
@@ -124,23 +124,23 @@ namespace queue {
                         ci::opt::gc<cds::gc::DHP>
                     >
                 >
                         ci::opt::gc<cds::gc::DHP>
                     >
                 >
-                ,co::alignment< co::no_special_alignment >
+                ,co::padding< co::no_special_padding >
             >::type
         > BasketQueue_DHP_member_noalign;
 
 
             >::type
         > BasketQueue_DHP_member_noalign;
 
 
-        // DHP base hook + cache alignment
+        // DHP base hook + cache padding
         typedef ci::BasketQueue< cds::gc::DHP, base_hook_item,
             typename ci::basket_queue::make_traits<
                 ci::opt::hook<
                     ci::basket_queue::base_hook< ci::opt::gc<cds::gc::DHP> >
                 >
         typedef ci::BasketQueue< cds::gc::DHP, base_hook_item,
             typename ci::basket_queue::make_traits<
                 ci::opt::hook<
                     ci::basket_queue::base_hook< ci::opt::gc<cds::gc::DHP> >
                 >
-                ,co::alignment< co::cache_line_alignment >
+                ,co::padding< co::cache_line_padding >
                 ,ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
             >::type
         > BasketQueue_DHP_base_cachealign;
 
                 ,ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
             >::type
         > BasketQueue_DHP_base_cachealign;
 
-        // DHP member hook + cache alignment
+        // DHP member hook + cache padding
         typedef ci::BasketQueue< cds::gc::DHP, member_hook_item,
             typename ci::basket_queue::make_traits<
                 ci::opt::hook<
         typedef ci::BasketQueue< cds::gc::DHP, member_hook_item,
             typename ci::basket_queue::make_traits<
                 ci::opt::hook<
@@ -149,7 +149,7 @@ namespace queue {
                         ci::opt::gc<cds::gc::DHP>
                     >
                 >
                         ci::opt::gc<cds::gc::DHP>
                     >
                 >
-                ,co::alignment< co::cache_line_alignment >
+                ,co::padding< co::cache_line_padding >
                 ,ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
             >::type
         > BasketQueue_DHP_member_cachealign;
                 ,ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
             >::type
         > BasketQueue_DHP_member_cachealign;
index 983a9927f6b940a5699e7ce21738063c9268ee98..82964ee2aab2f8f58699607eff85dd6acb6b0934 100644 (file)
@@ -104,18 +104,18 @@ namespace queue {
             >::type
         > BasketQueue_HP_member_stat;
 
             >::type
         > BasketQueue_HP_member_stat;
 
-        // HP base hook + alignment
+        // HP base hook + padding
         typedef ci::BasketQueue< cds::gc::HP, base_hook_item,
             typename ci::basket_queue::make_traits<
                 ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
                 ,ci::opt::hook<
                     ci::basket_queue::base_hook< ci::opt::gc<cds::gc::HP> >
                 >
         typedef ci::BasketQueue< cds::gc::HP, base_hook_item,
             typename ci::basket_queue::make_traits<
                 ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
                 ,ci::opt::hook<
                     ci::basket_queue::base_hook< ci::opt::gc<cds::gc::HP> >
                 >
-                ,co::alignment< 32 >
+                ,co::padding< 32 >
             >::type
         > BasketQueue_HP_base_align;
 
             >::type
         > BasketQueue_HP_base_align;
 
-        // HP member hook + alignment
+        // HP member hook + padding
         typedef ci::BasketQueue< cds::gc::HP, member_hook_item,
             typename ci::basket_queue::make_traits<
                 ci::opt::hook<
         typedef ci::BasketQueue< cds::gc::HP, member_hook_item,
             typename ci::basket_queue::make_traits<
                 ci::opt::hook<
@@ -124,23 +124,23 @@ namespace queue {
                         ci::opt::gc<cds::gc::HP>
                     >
                 >
                         ci::opt::gc<cds::gc::HP>
                     >
                 >
-                ,co::alignment< 32 >
+                ,co::padding< 32 >
                 ,ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
             >::type
         > BasketQueue_HP_member_align;
 
                 ,ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
             >::type
         > BasketQueue_HP_member_align;
 
-        // HP base hook + no alignment
+        // HP base hook + no padding
         typedef ci::BasketQueue< cds::gc::HP, base_hook_item,
             typename ci::basket_queue::make_traits<
                 ci::opt::hook<
                     ci::basket_queue::base_hook< ci::opt::gc<cds::gc::HP> >
                 >
                 ,ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
         typedef ci::BasketQueue< cds::gc::HP, base_hook_item,
             typename ci::basket_queue::make_traits<
                 ci::opt::hook<
                     ci::basket_queue::base_hook< ci::opt::gc<cds::gc::HP> >
                 >
                 ,ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
-                ,co::alignment< co::no_special_alignment >
+                ,co::padding< co::no_special_padding >
             >::type
         > BasketQueue_HP_base_noalign;
 
             >::type
         > BasketQueue_HP_base_noalign;
 
-        // HP member hook + no alignment
+        // HP member hook + no padding
         typedef ci::BasketQueue< cds::gc::HP, member_hook_item,
             typename ci::basket_queue::make_traits<
                 ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
         typedef ci::BasketQueue< cds::gc::HP, member_hook_item,
             typename ci::basket_queue::make_traits<
                 ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
@@ -150,23 +150,23 @@ namespace queue {
                         ci::opt::gc<cds::gc::HP>
                     >
                 >
                         ci::opt::gc<cds::gc::HP>
                     >
                 >
-                ,co::alignment< co::no_special_alignment >
+                ,co::padding< co::no_special_padding >
             >::type
         > BasketQueue_HP_member_noalign;
 
 
             >::type
         > BasketQueue_HP_member_noalign;
 
 
-        // HP base hook + cache alignment
+        // HP base hook + cache padding
         typedef ci::BasketQueue< cds::gc::HP, base_hook_item,
             typename ci::basket_queue::make_traits<
                 ci::opt::hook<
                     ci::basket_queue::base_hook< ci::opt::gc<cds::gc::HP> >
                 >
         typedef ci::BasketQueue< cds::gc::HP, base_hook_item,
             typename ci::basket_queue::make_traits<
                 ci::opt::hook<
                     ci::basket_queue::base_hook< ci::opt::gc<cds::gc::HP> >
                 >
-                ,co::alignment< co::cache_line_alignment >
+                ,co::padding< co::cache_line_padding >
                 ,ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
             >::type
         > BasketQueue_HP_base_cachealign;
 
                 ,ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
             >::type
         > BasketQueue_HP_base_cachealign;
 
-        // HP member hook + cache alignment
+        // HP member hook + cache padding
         typedef ci::BasketQueue< cds::gc::HP, member_hook_item,
             typename ci::basket_queue::make_traits<
                 ci::opt::hook<
         typedef ci::BasketQueue< cds::gc::HP, member_hook_item,
             typename ci::basket_queue::make_traits<
                 ci::opt::hook<
@@ -175,7 +175,7 @@ namespace queue {
                         ci::opt::gc<cds::gc::HP>
                     >
                 >
                         ci::opt::gc<cds::gc::HP>
                     >
                 >
-                ,co::alignment< co::cache_line_alignment >
+                ,co::padding< co::cache_line_padding >
                 ,ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
             >::type
         > BasketQueue_HP_member_cachealign;
                 ,ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
             >::type
         > BasketQueue_HP_member_cachealign;
index a447573b2bf5d0c3a7ccd9517f60dda3f2c7f01b..64602fe2687a63fb0cbb51f7dfa36ed8ceb5acf0 100644 (file)
@@ -86,18 +86,18 @@ namespace queue {
             >::type
         > MoirQueue_DHP_member_stat;
 
             >::type
         > MoirQueue_DHP_member_stat;
 
-        // DHP base hook + alignment
+        // DHP base hook + padding
         typedef ci::MoirQueue< cds::gc::DHP, base_item_type,
             typename ci::msqueue::make_traits<
             ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
             , ci::opt::hook<
             ci::msqueue::base_hook< ci::opt::gc<cds::gc::DHP> >
             >
         typedef ci::MoirQueue< cds::gc::DHP, base_item_type,
             typename ci::msqueue::make_traits<
             ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
             , ci::opt::hook<
             ci::msqueue::base_hook< ci::opt::gc<cds::gc::DHP> >
             >
-            , co::alignment< 32 >
+            , co::padding< 32 >
             >::type
         > MoirQueue_DHP_base_align;
 
             >::type
         > MoirQueue_DHP_base_align;
 
-        // DHP member hook + alignment
+        // DHP member hook + padding
         typedef ci::MoirQueue< cds::gc::DHP, member_item_type,
             typename ci::msqueue::make_traits<
             ci::opt::hook<
         typedef ci::MoirQueue< cds::gc::DHP, member_item_type,
             typename ci::msqueue::make_traits<
             ci::opt::hook<
@@ -106,42 +106,42 @@ namespace queue {
             ci::opt::gc<cds::gc::DHP>
             >
             >
             ci::opt::gc<cds::gc::DHP>
             >
             >
-            , co::alignment< 32 >
+            , co::padding< 32 >
             , ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
             >::type
         > MoirQueue_DHP_member_align;
 
             , ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
             >::type
         > MoirQueue_DHP_member_align;
 
-        // DHP base hook + no alignment
+        // DHP base hook + no padding
         struct traits_MoirQueue_DHP_base_noalign : public ci::msqueue::traits {
             typedef ci::msqueue::base_hook< ci::opt::gc<cds::gc::DHP> > hook;
             typedef IntrusiveQueueHeaderTest::faked_disposer disposer;
         struct traits_MoirQueue_DHP_base_noalign : public ci::msqueue::traits {
             typedef ci::msqueue::base_hook< ci::opt::gc<cds::gc::DHP> > hook;
             typedef IntrusiveQueueHeaderTest::faked_disposer disposer;
-            enum { alignment = co::no_special_alignment };
+            enum { padding = co::no_special_padding };
         };
         typedef ci::MoirQueue< cds::gc::DHP, base_item_type, traits_MoirQueue_DHP_base_noalign > MoirQueue_DHP_base_noalign;
 
         };
         typedef ci::MoirQueue< cds::gc::DHP, base_item_type, traits_MoirQueue_DHP_base_noalign > MoirQueue_DHP_base_noalign;
 
-        // DHP member hook + no alignment
+        // DHP member hook + no padding
         struct traits_MoirQueue_DHP_member_noalign : public ci::msqueue::traits {
             typedef ci::msqueue::member_hook <
                 offsetof( member_item_type, hMember ),
                 ci::opt::gc < cds::gc::DHP >
             > hook;
             typedef IntrusiveQueueHeaderTest::faked_disposer disposer;
         struct traits_MoirQueue_DHP_member_noalign : public ci::msqueue::traits {
             typedef ci::msqueue::member_hook <
                 offsetof( member_item_type, hMember ),
                 ci::opt::gc < cds::gc::DHP >
             > hook;
             typedef IntrusiveQueueHeaderTest::faked_disposer disposer;
-            enum { alignment = co::no_special_alignment };
+            enum { padding = co::no_special_padding };
         };
         typedef ci::MoirQueue< cds::gc::DHP, member_item_type, traits_MoirQueue_DHP_member_noalign > MoirQueue_DHP_member_noalign;
 
 
         };
         typedef ci::MoirQueue< cds::gc::DHP, member_item_type, traits_MoirQueue_DHP_member_noalign > MoirQueue_DHP_member_noalign;
 
 
-        // DHP base hook + cache alignment
+        // DHP base hook + cache padding
         struct traits_MoirQueue_DHP_base_cachealign : public traits_MoirQueue_DHP_base_noalign
         {
         struct traits_MoirQueue_DHP_base_cachealign : public traits_MoirQueue_DHP_base_noalign
         {
-            enum { alignment = co::cache_line_alignment };
+            enum { padding = co::cache_line_padding };
         };
         typedef ci::MoirQueue< cds::gc::DHP, base_item_type, traits_MoirQueue_DHP_base_cachealign > MoirQueue_DHP_base_cachealign;
 
         };
         typedef ci::MoirQueue< cds::gc::DHP, base_item_type, traits_MoirQueue_DHP_base_cachealign > MoirQueue_DHP_base_cachealign;
 
-        // DHP member hook + cache alignment
+        // DHP member hook + cache padding
         struct traits_MoirQueue_DHP_member_cachealign : public traits_MoirQueue_DHP_member_noalign
         {
         struct traits_MoirQueue_DHP_member_cachealign : public traits_MoirQueue_DHP_member_noalign
         {
-            enum { alignment = co::cache_line_alignment };
+            enum { padding = co::cache_line_padding };
         };
         typedef ci::MoirQueue< cds::gc::DHP, member_item_type, traits_MoirQueue_DHP_member_cachealign > MoirQueue_DHP_member_cachealign;
     }   // namespace
         };
         typedef ci::MoirQueue< cds::gc::DHP, member_item_type, traits_MoirQueue_DHP_member_cachealign > MoirQueue_DHP_member_cachealign;
     }   // namespace
index 7573c28e1ab691b5e8bfacabc4b08b0e0af893bc..8eaa2afd4548a2824ae5701ffb78a8bd47abf492 100644 (file)
@@ -109,18 +109,18 @@ namespace queue {
             >::type
         > MoirQueue_HP_member_stat;
 
             >::type
         > MoirQueue_HP_member_stat;
 
-        // HP base hook + alignment
+        // HP base hook + padding
         typedef ci::MoirQueue< cds::gc::HP, base_item_type,
             typename ci::msqueue::make_traits<
                 ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
                 ,ci::opt::hook<
                     ci::msqueue::base_hook< ci::opt::gc<cds::gc::HP> >
                 >
         typedef ci::MoirQueue< cds::gc::HP, base_item_type,
             typename ci::msqueue::make_traits<
                 ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
                 ,ci::opt::hook<
                     ci::msqueue::base_hook< ci::opt::gc<cds::gc::HP> >
                 >
-                ,co::alignment< 32 >
+                ,co::padding< 32 >
             >::type
         > MoirQueue_HP_base_align;
 
             >::type
         > MoirQueue_HP_base_align;
 
-        // HP member hook + alignment
+        // HP member hook + padding
         typedef ci::MoirQueue< cds::gc::HP, member_item_type,
             typename ci::msqueue::make_traits<
                 ci::opt::hook<
         typedef ci::MoirQueue< cds::gc::HP, member_item_type,
             typename ci::msqueue::make_traits<
                 ci::opt::hook<
@@ -129,42 +129,42 @@ namespace queue {
                         ci::opt::gc<cds::gc::HP>
                     >
                 >
                         ci::opt::gc<cds::gc::HP>
                     >
                 >
-                ,co::alignment< 32 >
+                ,co::padding< 32 >
                 ,ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
             >::type
         > MoirQueue_HP_member_align;
 
                 ,ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
             >::type
         > MoirQueue_HP_member_align;
 
-        // HP base hook + no alignment
+        // HP base hook + no padding
         struct traits_MoirQueue_HP_base_noalign : public ci::msqueue::traits {
             typedef ci::msqueue::base_hook< ci::opt::gc<cds::gc::HP> > hook;
             typedef IntrusiveQueueHeaderTest::faked_disposer disposer;
         struct traits_MoirQueue_HP_base_noalign : public ci::msqueue::traits {
             typedef ci::msqueue::base_hook< ci::opt::gc<cds::gc::HP> > hook;
             typedef IntrusiveQueueHeaderTest::faked_disposer disposer;
-            enum { alignment = co::no_special_alignment };
+            enum { padding = co::no_special_padding };
         };
         typedef ci::MoirQueue< cds::gc::HP, base_item_type, traits_MoirQueue_HP_base_noalign > MoirQueue_HP_base_noalign;
 
         };
         typedef ci::MoirQueue< cds::gc::HP, base_item_type, traits_MoirQueue_HP_base_noalign > MoirQueue_HP_base_noalign;
 
-        // HP member hook + no alignment
+        // HP member hook + no padding
         struct traits_MoirQueue_HP_member_noalign : public ci::msqueue::traits {
             typedef ci::msqueue::member_hook <
                 offsetof( member_item_type, hMember ),
                 ci::opt::gc < cds::gc::HP >
             > hook;
             typedef IntrusiveQueueHeaderTest::faked_disposer disposer;
         struct traits_MoirQueue_HP_member_noalign : public ci::msqueue::traits {
             typedef ci::msqueue::member_hook <
                 offsetof( member_item_type, hMember ),
                 ci::opt::gc < cds::gc::HP >
             > hook;
             typedef IntrusiveQueueHeaderTest::faked_disposer disposer;
-            enum { alignment = co::no_special_alignment };
+            enum { padding = co::no_special_padding };
         };
         typedef ci::MoirQueue< cds::gc::HP, member_item_type, traits_MoirQueue_HP_member_noalign > MoirQueue_HP_member_noalign;
 
 
         };
         typedef ci::MoirQueue< cds::gc::HP, member_item_type, traits_MoirQueue_HP_member_noalign > MoirQueue_HP_member_noalign;
 
 
-        // HP base hook + cache alignment
+        // HP base hook + cache padding
         struct traits_MoirQueue_HP_base_cachealign : public traits_MoirQueue_HP_base_noalign
         {
         struct traits_MoirQueue_HP_base_cachealign : public traits_MoirQueue_HP_base_noalign
         {
-            enum { alignment = co::cache_line_alignment };
+            enum { padding = co::cache_line_padding };
         };
         typedef ci::MoirQueue< cds::gc::HP, base_item_type, traits_MoirQueue_HP_base_cachealign > MoirQueue_HP_base_cachealign;
 
         };
         typedef ci::MoirQueue< cds::gc::HP, base_item_type, traits_MoirQueue_HP_base_cachealign > MoirQueue_HP_base_cachealign;
 
-        // HP member hook + cache alignment
+        // HP member hook + cache padding
         struct traits_MoirQueue_HP_member_cachealign : public traits_MoirQueue_HP_member_noalign
         {
         struct traits_MoirQueue_HP_member_cachealign : public traits_MoirQueue_HP_member_noalign
         {
-            enum { alignment = co::cache_line_alignment };
+            enum { padding = co::cache_line_padding };
         };
         typedef ci::MoirQueue< cds::gc::HP, member_item_type, traits_MoirQueue_HP_member_cachealign > MoirQueue_HP_member_cachealign;
     }
         };
         typedef ci::MoirQueue< cds::gc::HP, member_item_type, traits_MoirQueue_HP_member_cachealign > MoirQueue_HP_member_cachealign;
     }
index 16f8da06f914d896bf458156e53e8855464b7060..ecf94aa316a511fe7b255bed596397a575deedb1 100644 (file)
@@ -86,18 +86,18 @@ namespace queue {
             >::type
         > MSQueue_DHP_member_stat;
 
             >::type
         > MSQueue_DHP_member_stat;
 
-        // DHP base hook + alignment
+        // DHP base hook + padding
         typedef ci::MSQueue< cds::gc::DHP, base_item_type,
             typename ci::msqueue::make_traits<
             ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
             , ci::opt::hook<
             ci::msqueue::base_hook< ci::opt::gc<cds::gc::DHP> >
             >
         typedef ci::MSQueue< cds::gc::DHP, base_item_type,
             typename ci::msqueue::make_traits<
             ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
             , ci::opt::hook<
             ci::msqueue::base_hook< ci::opt::gc<cds::gc::DHP> >
             >
-            , co::alignment< 32 >
+            , co::padding< 32 >
             >::type
         > MSQueue_DHP_base_align;
 
             >::type
         > MSQueue_DHP_base_align;
 
-        // DHP member hook + alignment
+        // DHP member hook + padding
         typedef ci::MSQueue< cds::gc::DHP, member_item_type,
             typename ci::msqueue::make_traits<
             ci::opt::hook<
         typedef ci::MSQueue< cds::gc::DHP, member_item_type,
             typename ci::msqueue::make_traits<
             ci::opt::hook<
@@ -106,42 +106,42 @@ namespace queue {
             ci::opt::gc<cds::gc::DHP>
             >
             >
             ci::opt::gc<cds::gc::DHP>
             >
             >
-            , co::alignment< 32 >
+            , co::padding< 32 >
             , ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
             >::type
         > MSQueue_DHP_member_align;
 
             , ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
             >::type
         > MSQueue_DHP_member_align;
 
-        // DHP base hook + no alignment
+        // DHP base hook + no padding
         struct traits_MSQueue_DHP_base_noalign : public ci::msqueue::traits {
             typedef ci::msqueue::base_hook< ci::opt::gc<cds::gc::DHP> > hook;
             typedef IntrusiveQueueHeaderTest::faked_disposer disposer;
         struct traits_MSQueue_DHP_base_noalign : public ci::msqueue::traits {
             typedef ci::msqueue::base_hook< ci::opt::gc<cds::gc::DHP> > hook;
             typedef IntrusiveQueueHeaderTest::faked_disposer disposer;
-            enum { alignment = co::no_special_alignment };
+            enum { padding = co::no_special_padding };
         };
         typedef ci::MSQueue< cds::gc::DHP, base_item_type, traits_MSQueue_DHP_base_noalign > MSQueue_DHP_base_noalign;
 
         };
         typedef ci::MSQueue< cds::gc::DHP, base_item_type, traits_MSQueue_DHP_base_noalign > MSQueue_DHP_base_noalign;
 
-        // DHP member hook + no alignment
+        // DHP member hook + no padding
         struct traits_MSQueue_DHP_member_noalign : public ci::msqueue::traits {
             typedef ci::msqueue::member_hook <
                 offsetof( member_item_type, hMember ),
                 ci::opt::gc < cds::gc::DHP >
             > hook;
             typedef IntrusiveQueueHeaderTest::faked_disposer disposer;
         struct traits_MSQueue_DHP_member_noalign : public ci::msqueue::traits {
             typedef ci::msqueue::member_hook <
                 offsetof( member_item_type, hMember ),
                 ci::opt::gc < cds::gc::DHP >
             > hook;
             typedef IntrusiveQueueHeaderTest::faked_disposer disposer;
-            enum { alignment = co::no_special_alignment };
+            enum { padding = co::no_special_padding };
         };
         typedef ci::MSQueue< cds::gc::DHP, member_item_type, traits_MSQueue_DHP_member_noalign > MSQueue_DHP_member_noalign;
 
 
         };
         typedef ci::MSQueue< cds::gc::DHP, member_item_type, traits_MSQueue_DHP_member_noalign > MSQueue_DHP_member_noalign;
 
 
-        // DHP base hook + cache alignment
+        // DHP base hook + cache padding
         struct traits_MSQueue_DHP_base_cachealign : public traits_MSQueue_DHP_base_noalign
         {
         struct traits_MSQueue_DHP_base_cachealign : public traits_MSQueue_DHP_base_noalign
         {
-            enum { alignment = co::cache_line_alignment };
+            enum { padding = co::cache_line_padding };
         };
         typedef ci::MSQueue< cds::gc::DHP, base_item_type, traits_MSQueue_DHP_base_cachealign > MSQueue_DHP_base_cachealign;
 
         };
         typedef ci::MSQueue< cds::gc::DHP, base_item_type, traits_MSQueue_DHP_base_cachealign > MSQueue_DHP_base_cachealign;
 
-        // DHP member hook + cache alignment
+        // DHP member hook + cache padding
         struct traits_MSQueue_DHP_member_cachealign : public traits_MSQueue_DHP_member_noalign
         {
         struct traits_MSQueue_DHP_member_cachealign : public traits_MSQueue_DHP_member_noalign
         {
-            enum { alignment = co::cache_line_alignment };
+            enum { padding = co::cache_line_padding };
         };
         typedef ci::MSQueue< cds::gc::DHP, member_item_type, traits_MSQueue_DHP_member_cachealign > MSQueue_DHP_member_cachealign;
     }   // namespace
         };
         typedef ci::MSQueue< cds::gc::DHP, member_item_type, traits_MSQueue_DHP_member_cachealign > MSQueue_DHP_member_cachealign;
     }   // namespace
index 579efdd02a59025b9edabfbf048bddae329a44c3..4c47070c19b6181600b0f5da100243c97f8e4e8b 100644 (file)
@@ -110,18 +110,18 @@ namespace queue {
             >::type
         > MSQueue_HP_member_stat;
 
             >::type
         > MSQueue_HP_member_stat;
 
-        // HP base hook + alignment
+        // HP base hook + padding
         typedef ci::MSQueue< cds::gc::HP, base_item_type,
             typename ci::msqueue::make_traits<
                 ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
                 ,ci::opt::hook<
                     ci::msqueue::base_hook< ci::opt::gc<cds::gc::HP> >
                 >
         typedef ci::MSQueue< cds::gc::HP, base_item_type,
             typename ci::msqueue::make_traits<
                 ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
                 ,ci::opt::hook<
                     ci::msqueue::base_hook< ci::opt::gc<cds::gc::HP> >
                 >
-                ,co::alignment< 32 >
+                ,co::padding< 32 >
             >::type
         > MSQueue_HP_base_align;
 
             >::type
         > MSQueue_HP_base_align;
 
-        // HP member hook + alignment
+        // HP member hook + padding
         typedef ci::MSQueue< cds::gc::HP, member_item_type,
             typename ci::msqueue::make_traits<
                 ci::opt::hook<
         typedef ci::MSQueue< cds::gc::HP, member_item_type,
             typename ci::msqueue::make_traits<
                 ci::opt::hook<
@@ -130,42 +130,42 @@ namespace queue {
                         ci::opt::gc<cds::gc::HP>
                     >
                 >
                         ci::opt::gc<cds::gc::HP>
                     >
                 >
-                ,co::alignment< 32 >
+                ,co::padding< 32 >
                 ,ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
             >::type
         > MSQueue_HP_member_align;
 
                 ,ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
             >::type
         > MSQueue_HP_member_align;
 
-        // HP base hook + no alignment
+        // HP base hook + no padding
         struct traits_MSQueue_HP_base_noalign : public ci::msqueue::traits {
             typedef ci::msqueue::base_hook< ci::opt::gc<cds::gc::HP> > hook;
             typedef IntrusiveQueueHeaderTest::faked_disposer disposer;
         struct traits_MSQueue_HP_base_noalign : public ci::msqueue::traits {
             typedef ci::msqueue::base_hook< ci::opt::gc<cds::gc::HP> > hook;
             typedef IntrusiveQueueHeaderTest::faked_disposer disposer;
-            enum { alignment = co::no_special_alignment };
+            enum { padding = co::no_special_padding };
         };
         typedef ci::MSQueue< cds::gc::HP, base_item_type, traits_MSQueue_HP_base_noalign > MSQueue_HP_base_noalign;
 
         };
         typedef ci::MSQueue< cds::gc::HP, base_item_type, traits_MSQueue_HP_base_noalign > MSQueue_HP_base_noalign;
 
-        // HP member hook + no alignment
+        // HP member hook + no padding
         struct traits_MSQueue_HP_member_noalign : public ci::msqueue::traits {
             typedef ci::msqueue::member_hook <
                 offsetof( member_item_type, hMember ),
                 ci::opt::gc < cds::gc::HP >
             > hook;
             typedef IntrusiveQueueHeaderTest::faked_disposer disposer;
         struct traits_MSQueue_HP_member_noalign : public ci::msqueue::traits {
             typedef ci::msqueue::member_hook <
                 offsetof( member_item_type, hMember ),
                 ci::opt::gc < cds::gc::HP >
             > hook;
             typedef IntrusiveQueueHeaderTest::faked_disposer disposer;
-            enum { alignment = co::no_special_alignment };
+            enum { padding = co::no_special_padding };
         };
         typedef ci::MSQueue< cds::gc::HP, member_item_type, traits_MSQueue_HP_member_noalign > MSQueue_HP_member_noalign;
 
 
         };
         typedef ci::MSQueue< cds::gc::HP, member_item_type, traits_MSQueue_HP_member_noalign > MSQueue_HP_member_noalign;
 
 
-        // HP base hook + cache alignment
+        // HP base hook + cache padding
         struct traits_MSQueue_HP_base_cachealign : public traits_MSQueue_HP_base_noalign
         {
         struct traits_MSQueue_HP_base_cachealign : public traits_MSQueue_HP_base_noalign
         {
-            enum { alignment = co::cache_line_alignment };
+            enum { padding = co::cache_line_padding };
         };
         typedef ci::MSQueue< cds::gc::HP, base_item_type, traits_MSQueue_HP_base_cachealign > MSQueue_HP_base_cachealign;
 
         };
         typedef ci::MSQueue< cds::gc::HP, base_item_type, traits_MSQueue_HP_base_cachealign > MSQueue_HP_base_cachealign;
 
-        // HP member hook + cache alignment
+        // HP member hook + cache padding
         struct traits_MSQueue_HP_member_cachealign : public traits_MSQueue_HP_member_noalign
         {
         struct traits_MSQueue_HP_member_cachealign : public traits_MSQueue_HP_member_noalign
         {
-            enum { alignment = co::cache_line_alignment };
+            enum { padding = co::cache_line_padding };
         };
         typedef ci::MSQueue< cds::gc::HP, member_item_type, traits_MSQueue_HP_member_cachealign > MSQueue_HP_member_cachealign;
 
         };
         typedef ci::MSQueue< cds::gc::HP, member_item_type, traits_MSQueue_HP_member_cachealign > MSQueue_HP_member_cachealign;
 
index fec72a120732e37ba59899a0fdc37a126bd3fb70..2cbd0128f1d4e34f2ab5add90a90b64e7c2f657b 100644 (file)
@@ -74,7 +74,7 @@ namespace queue {
         typedef cds::container::MoirQueue < cds::gc::DHP, int,
             typename cds::container::msqueue::make_traits <
                 cds::opt::memory_model< cds::opt::v::relaxed_ordering>
         typedef cds::container::MoirQueue < cds::gc::DHP, int,
             typename cds::container::msqueue::make_traits <
                 cds::opt::memory_model< cds::opt::v::relaxed_ordering>
-                , cds::opt::alignment < 16 >
+                , cds::opt::padding < 16 >
             > ::type
         > test_queue;
 
             > ::type
         > test_queue;
 
@@ -87,7 +87,7 @@ namespace queue {
             typename cds::container::msqueue::make_traits <
                 cds::opt::item_counter< cds::atomicity::item_counter >
                 , cds::opt::memory_model< cds::opt::v::relaxed_ordering>
             typename cds::container::msqueue::make_traits <
                 cds::opt::item_counter< cds::atomicity::item_counter >
                 , cds::opt::memory_model< cds::opt::v::relaxed_ordering>
-                , cds::opt::alignment < 32 >
+                , cds::opt::padding < 32 >
             >::type
         > test_queue;
 
             >::type
         > test_queue;
 
@@ -99,7 +99,7 @@ namespace queue {
         typedef cds::container::MoirQueue < cds::gc::DHP, int,
             typename cds::container::msqueue::make_traits <
                 cds::opt::memory_model< cds::opt::v::sequential_consistent>
         typedef cds::container::MoirQueue < cds::gc::DHP, int,
             typename cds::container::msqueue::make_traits <
                 cds::opt::memory_model< cds::opt::v::sequential_consistent>
-                ,cds::opt::alignment < cds::opt::no_special_alignment >
+                ,cds::opt::padding < cds::opt::no_special_padding >
             > ::type
         > test_queue;
 
             > ::type
         > test_queue;
 
@@ -112,7 +112,7 @@ namespace queue {
             typename cds::container::msqueue::make_traits <
                 cds::opt::item_counter< cds::atomicity::item_counter >
                 , cds::opt::memory_model< cds::opt::v::sequential_consistent>
             typename cds::container::msqueue::make_traits <
                 cds::opt::item_counter< cds::atomicity::item_counter >
                 , cds::opt::memory_model< cds::opt::v::sequential_consistent>
-                , cds::opt::alignment < cds::opt::cache_line_alignment >
+                , cds::opt::padding < cds::opt::cache_line_padding >
             > ::type
         > test_queue;
         test_ic< test_queue >();
             > ::type
         > test_queue;
         test_ic< test_queue >();
index c97b31c3130af838e1aadfb31a89ddc96d4011e7..19b456c63004e89a011c385379728a5e1c554569 100644 (file)
@@ -75,7 +75,7 @@ namespace queue {
         typedef cds::container::MoirQueue < cds::gc::HP, int,
             typename cds::container::msqueue::make_traits <
                 cds::opt::memory_model< cds::opt::v::relaxed_ordering>
         typedef cds::container::MoirQueue < cds::gc::HP, int,
             typename cds::container::msqueue::make_traits <
                 cds::opt::memory_model< cds::opt::v::relaxed_ordering>
-                , cds::opt::alignment < 16 >
+                , cds::opt::padding < 16 >
             > ::type
         > test_queue;
 
             > ::type
         > test_queue;
 
@@ -88,7 +88,7 @@ namespace queue {
             typename cds::container::msqueue::make_traits <
                 cds::opt::item_counter< cds::atomicity::item_counter >
                 , cds::opt::memory_model< cds::opt::v::relaxed_ordering>
             typename cds::container::msqueue::make_traits <
                 cds::opt::item_counter< cds::atomicity::item_counter >
                 , cds::opt::memory_model< cds::opt::v::relaxed_ordering>
-                , cds::opt::alignment < 32 >
+                , cds::opt::padding < 32 >
             >::type
         > test_queue;
 
             >::type
         > test_queue;
 
@@ -100,7 +100,7 @@ namespace queue {
         typedef cds::container::MoirQueue < cds::gc::HP, int,
             typename cds::container::msqueue::make_traits <
                 cds::opt::memory_model< cds::opt::v::sequential_consistent>
         typedef cds::container::MoirQueue < cds::gc::HP, int,
             typename cds::container::msqueue::make_traits <
                 cds::opt::memory_model< cds::opt::v::sequential_consistent>
-                ,cds::opt::alignment < cds::opt::no_special_alignment >
+                ,cds::opt::padding < cds::opt::no_special_padding >
             > ::type
         > test_queue;
 
             > ::type
         > test_queue;
 
@@ -113,7 +113,7 @@ namespace queue {
             typename cds::container::msqueue::make_traits <
                 cds::opt::item_counter< cds::atomicity::item_counter >
                 , cds::opt::memory_model< cds::opt::v::sequential_consistent>
             typename cds::container::msqueue::make_traits <
                 cds::opt::item_counter< cds::atomicity::item_counter >
                 , cds::opt::memory_model< cds::opt::v::sequential_consistent>
-                , cds::opt::alignment < cds::opt::cache_line_alignment >
+                , cds::opt::padding < cds::opt::cache_line_padding >
             > ::type
         > test_queue;
         test_ic< test_queue >();
             > ::type
         > test_queue;
         test_ic< test_queue >();
index e0a91df3b47649528a2b32a5797fe992700e3bc9..1e915b25f84869f26e1f43dd0c34c4e2a862fcd7 100644 (file)
@@ -75,7 +75,7 @@ namespace queue {
         typedef cds::container::MSQueue < cds::gc::DHP, int,
             typename cds::container::msqueue::make_traits <
                 cds::opt::memory_model< cds::opt::v::relaxed_ordering>
         typedef cds::container::MSQueue < cds::gc::DHP, int,
             typename cds::container::msqueue::make_traits <
                 cds::opt::memory_model< cds::opt::v::relaxed_ordering>
-                , cds::opt::alignment < 16 >
+                , cds::opt::padding < 16 >
             > ::type
         > test_queue;
 
             > ::type
         > test_queue;
 
@@ -88,7 +88,7 @@ namespace queue {
             typename cds::container::msqueue::make_traits <
                 cds::opt::item_counter< cds::atomicity::item_counter >
                 , cds::opt::memory_model< cds::opt::v::relaxed_ordering>
             typename cds::container::msqueue::make_traits <
                 cds::opt::item_counter< cds::atomicity::item_counter >
                 , cds::opt::memory_model< cds::opt::v::relaxed_ordering>
-                , cds::opt::alignment < 32 >
+                , cds::opt::padding < 32 >
             >::type
         > test_queue;
 
             >::type
         > test_queue;
 
@@ -100,7 +100,7 @@ namespace queue {
         typedef cds::container::MSQueue < cds::gc::DHP, int,
             typename cds::container::msqueue::make_traits <
                 cds::opt::memory_model< cds::opt::v::sequential_consistent>
         typedef cds::container::MSQueue < cds::gc::DHP, int,
             typename cds::container::msqueue::make_traits <
                 cds::opt::memory_model< cds::opt::v::sequential_consistent>
-                ,cds::opt::alignment < cds::opt::no_special_alignment >
+                ,cds::opt::padding < cds::opt::no_special_padding >
             > ::type
         > test_queue;
 
             > ::type
         > test_queue;
 
@@ -113,7 +113,7 @@ namespace queue {
             typename cds::container::msqueue::make_traits <
                 cds::opt::item_counter< cds::atomicity::item_counter >
                 , cds::opt::memory_model< cds::opt::v::sequential_consistent>
             typename cds::container::msqueue::make_traits <
                 cds::opt::item_counter< cds::atomicity::item_counter >
                 , cds::opt::memory_model< cds::opt::v::sequential_consistent>
-                , cds::opt::alignment < cds::opt::cache_line_alignment >
+                , cds::opt::padding < cds::opt::cache_line_padding >
             > ::type
         > test_queue;
         test_ic< test_queue >();
             > ::type
         > test_queue;
         test_ic< test_queue >();
index 0a9dda4d58aae64cb4e9a4e39d9712f83baa2af2..5fe4fa68f8ea2a6c86ef981f8e2be9119ddaf347 100644 (file)
@@ -75,7 +75,7 @@ namespace queue {
         typedef cds::container::MSQueue < cds::gc::HP, int,
             typename cds::container::msqueue::make_traits <
                 cds::opt::memory_model< cds::opt::v::relaxed_ordering>
         typedef cds::container::MSQueue < cds::gc::HP, int,
             typename cds::container::msqueue::make_traits <
                 cds::opt::memory_model< cds::opt::v::relaxed_ordering>
-                , cds::opt::alignment < 16 >
+                , cds::opt::padding < 16 >
             > ::type
         > test_queue;
 
             > ::type
         > test_queue;
 
@@ -88,7 +88,7 @@ namespace queue {
             typename cds::container::msqueue::make_traits <
                 cds::opt::item_counter< cds::atomicity::item_counter >
                 , cds::opt::memory_model< cds::opt::v::relaxed_ordering>
             typename cds::container::msqueue::make_traits <
                 cds::opt::item_counter< cds::atomicity::item_counter >
                 , cds::opt::memory_model< cds::opt::v::relaxed_ordering>
-                , cds::opt::alignment < 32 >
+                , cds::opt::padding < 32 >
             >::type
         > test_queue;
 
             >::type
         > test_queue;
 
@@ -100,7 +100,7 @@ namespace queue {
         typedef cds::container::MSQueue < cds::gc::HP, int,
             typename cds::container::msqueue::make_traits <
                 cds::opt::memory_model< cds::opt::v::sequential_consistent>
         typedef cds::container::MSQueue < cds::gc::HP, int,
             typename cds::container::msqueue::make_traits <
                 cds::opt::memory_model< cds::opt::v::sequential_consistent>
-                ,cds::opt::alignment < cds::opt::no_special_alignment >
+                ,cds::opt::padding < cds::opt::no_special_padding >
             > ::type
         > test_queue;
 
             > ::type
         > test_queue;
 
@@ -113,7 +113,7 @@ namespace queue {
             typename cds::container::msqueue::make_traits <
                 cds::opt::item_counter< cds::atomicity::item_counter >
                 , cds::opt::memory_model< cds::opt::v::sequential_consistent>
             typename cds::container::msqueue::make_traits <
                 cds::opt::item_counter< cds::atomicity::item_counter >
                 , cds::opt::memory_model< cds::opt::v::sequential_consistent>
-                , cds::opt::alignment < cds::opt::cache_line_alignment >
+                , cds::opt::padding < cds::opt::cache_line_padding >
             > ::type
         > test_queue;
         test_ic< test_queue >();
             > ::type
         > test_queue;
         test_ic< test_queue >();
index ba02f0cd10d087bde89c7e6a7bca355069970e9f..9f5e15653e6c8fac6e1e7643630efbc0d987fcad 100644 (file)
@@ -1,4 +1,8 @@
-
-
 # Boost race [?] in test framework. Do not affect to libcds
 race:CppUnitMini::ThreadPool::~ThreadPool
 # Boost race [?] in test framework. Do not affect to libcds
 race:CppUnitMini::ThreadPool::~ThreadPool
+
+# DHP 
+race:cds::gc::details::retired_ptr::free
+
+# uRCU false positive
+race:cds::urcu::gc*::batch_retire*