From f744d09b7f253de16a7d8010418757cf05a7f458 Mon Sep 17 00:00:00 2001 From: khizmax Date: Wed, 12 Nov 2014 12:22:18 +0300 Subject: [PATCH] Add back-off strategy to EllenBinTree --- cds/container/details/ellen_bintree_base.h | 5 ++ cds/container/ellen_bintree_map_rcu.h | 2 + cds/container/ellen_bintree_set_rcu.h | 2 + cds/container/impl/ellen_bintree_map.h | 1 + cds/container/impl/ellen_bintree_set.h | 1 + cds/intrusive/details/ellen_bintree_base.h | 5 ++ cds/intrusive/ellen_bintree_rcu.h | 15 +++++ cds/intrusive/impl/ellen_bintree.h | 48 ++++++++++------ tests/test-hdr/tree/hdr_ellenbintree_map.h | 48 ++++++++++------ .../tree/hdr_ellenbintree_map_dhp.cpp | 14 +++++ .../test-hdr/tree/hdr_ellenbintree_map_hp.cpp | 14 +++++ .../tree/hdr_ellenbintree_map_rcu_gpb.cpp | 14 +++++ .../tree/hdr_ellenbintree_map_rcu_gpi.cpp | 14 +++++ .../tree/hdr_ellenbintree_map_rcu_gpt.cpp | 14 +++++ .../tree/hdr_ellenbintree_map_rcu_shb.cpp | 16 ++++++ .../tree/hdr_ellenbintree_map_rcu_sht.cpp | 16 ++++++ tests/test-hdr/tree/hdr_ellenbintree_set.h | 28 +++++++--- .../tree/hdr_ellenbintree_set_dhp.cpp | 15 +++++ .../test-hdr/tree/hdr_ellenbintree_set_hp.cpp | 15 +++++ .../tree/hdr_ellenbintree_set_rcu_gpb.cpp | 15 +++++ .../tree/hdr_ellenbintree_set_rcu_gpi.cpp | 15 +++++ .../tree/hdr_ellenbintree_set_rcu_gpt.cpp | 15 +++++ .../tree/hdr_ellenbintree_set_rcu_shb.cpp | 17 ++++++ .../tree/hdr_ellenbintree_set_rcu_sht.cpp | 17 ++++++ tests/test-hdr/tree/hdr_intrusive_bintree.h | 56 ++++++++++++++----- .../tree/hdr_intrusive_ellen_bintree_dhp.cpp | 19 ++++++- ...hdr_intrusive_ellen_bintree_dhp_member.cpp | 19 ++++++- .../tree/hdr_intrusive_ellen_bintree_hp.cpp | 19 ++++++- .../hdr_intrusive_ellen_bintree_hp_member.cpp | 19 ++++++- .../hdr_intrusive_ellen_bintree_rcu_gpb.cpp | 19 ++++++- ...intrusive_ellen_bintree_rcu_gpb_member.cpp | 19 ++++++- .../hdr_intrusive_ellen_bintree_rcu_gpi.cpp | 19 ++++++- ...intrusive_ellen_bintree_rcu_gpi_member.cpp | 19 ++++++- .../hdr_intrusive_ellen_bintree_rcu_gpt.cpp | 19 ++++++- ...intrusive_ellen_bintree_rcu_gpt_member.cpp | 19 ++++++- .../hdr_intrusive_ellen_bintree_rcu_shb.cpp | 19 +++++++ ...intrusive_ellen_bintree_rcu_shb_member.cpp | 19 +++++++ .../hdr_intrusive_ellen_bintree_rcu_sht.cpp | 19 +++++++ ...intrusive_ellen_bintree_rcu_sht_member.cpp | 19 +++++++ tests/unit/map2/map_defs.h | 6 ++ tests/unit/map2/map_types.h | 20 +++++++ tests/unit/set2/set_defs.h | 6 ++ tests/unit/set2/set_types.h | 26 +++++++++ 43 files changed, 680 insertions(+), 66 deletions(-) diff --git a/cds/container/details/ellen_bintree_base.h b/cds/container/details/ellen_bintree_base.h index f8e11fd6..1439b823 100644 --- a/cds/container/details/ellen_bintree_base.h +++ b/cds/container/details/ellen_bintree_base.h @@ -180,6 +180,9 @@ namespace cds { namespace container { */ typedef empty_stat stat; + /// Back-off strategy + typedef cds::backoff::empty back_off; + /// RCU deadlock checking policy (only for RCU-based EllenBinTreeXXX classes) /** List of available options see \p opt::rcu_check_deadlock @@ -234,6 +237,7 @@ namespace cds { namespace container { stored in the tree so single free-list object can be used for several EllenBinTree-based object. - \p opt::stat - internal statistics, by default disabled (\p ellen_bintree::empty_stat). To enable it use \p ellen_bintree::stat. + - \p opt::backoff - back-off strategy, by default no strategy is used (\p cds::backoff::empty) - \p opt::rcu_check_deadlock - a deadlock checking policy, only for RCU-based tree. Default is \p opt::v::rcu_throw_deadlock. */ @@ -274,6 +278,7 @@ namespace cds { namespace container { stored in the tree so single free-list object can be used for several EllenBinTree-based object. - \p opt::stat - internal statistics, by default disabled (\p ellen_bintree::empty_stat). To enable it use \p ellen_bintree::stat. + - \p opt::backoff - back-off strategy, by default no strategy is used (\p cds::backoff::empty) - \p opt::rcu_check_deadlock - a deadlock checking policy, only for RCU-based tree. Default is \p opt::v::rcu_throw_deadlock - opt::copy_policy - key copying policy defines a functor to copy leaf node's key to internal node. By default, assignment operator is used. diff --git a/cds/container/ellen_bintree_map_rcu.h b/cds/container/ellen_bintree_map_rcu.h index e3ad6135..d5852f66 100644 --- a/cds/container/ellen_bintree_map_rcu.h +++ b/cds/container/ellen_bintree_map_rcu.h @@ -86,6 +86,8 @@ namespace cds { namespace container { typedef typename base_class::stat stat; ///< internal statistics typedef typename base_class::rcu_check_deadlock rcu_check_deadlock; ///< Deadlock checking policy typedef typename traits::copy_policy copy_policy; ///< key copy policy + typedef typename traits::back_off back_off; ///< Back-off strategy + typedef typename traits::allocator allocator_type; ///< Allocator for leaf nodes typedef typename base_class::node_allocator node_allocator; ///< Internal node allocator diff --git a/cds/container/ellen_bintree_set_rcu.h b/cds/container/ellen_bintree_set_rcu.h index f0a0049e..4c802c93 100644 --- a/cds/container/ellen_bintree_set_rcu.h +++ b/cds/container/ellen_bintree_set_rcu.h @@ -124,6 +124,8 @@ namespace cds { namespace container { typedef typename base_class::stat stat; ///< internal statistics type typedef typename base_class::rcu_check_deadlock rcu_check_deadlock; ///< Deadlock checking policy typedef typename traits::key_extractor key_extractor; ///< key extracting functor + typedef typename traits::back_off back_off; ///< Back-off strategy + typedef typename traits::allocator allocator_type; ///< Allocator for leaf nodes typedef typename base_class::node_allocator node_allocator; ///< Internal node allocator diff --git a/cds/container/impl/ellen_bintree_map.h b/cds/container/impl/ellen_bintree_map.h index c8dab925..3ca0dbf2 100644 --- a/cds/container/impl/ellen_bintree_map.h +++ b/cds/container/impl/ellen_bintree_map.h @@ -92,6 +92,7 @@ namespace cds { namespace container { typedef typename base_class::node_allocator node_allocator_type; ///< allocator for maintaining internal node typedef typename base_class::stat stat; ///< internal statistics type typedef typename traits::copy_policy copy_policy; ///< key copy policy + typedef typename traits::back_off back_off; ///< Back-off strategy typedef typename traits::allocator allocator_type; ///< Allocator for leaf nodes typedef typename base_class::node_allocator node_allocator; ///< Internal node allocator diff --git a/cds/container/impl/ellen_bintree_set.h b/cds/container/impl/ellen_bintree_set.h index 13f75fb5..432947ed 100644 --- a/cds/container/impl/ellen_bintree_set.h +++ b/cds/container/impl/ellen_bintree_set.h @@ -129,6 +129,7 @@ namespace cds { namespace container { typedef typename base_class::memory_model memory_model; ///< Memory ordering. See cds::opt::memory_model option typedef typename base_class::stat stat; ///< internal statistics type typedef typename traits::key_extractor key_extractor; ///< key extracting functor + typedef typename traits::back_off back_off; ///< Back-off strategy typedef typename traits::allocator allocator_type; ///< Allocator for leaf nodes typedef typename base_class::node_allocator node_allocator; ///< Internal node allocator diff --git a/cds/intrusive/details/ellen_bintree_base.h b/cds/intrusive/details/ellen_bintree_base.h index f0d9ffc3..20497819 100644 --- a/cds/intrusive/details/ellen_bintree_base.h +++ b/cds/intrusive/details/ellen_bintree_base.h @@ -9,6 +9,7 @@ #include #include #include +#include namespace cds { namespace intrusive { @@ -518,6 +519,9 @@ namespace cds { namespace intrusive { */ typedef empty_stat stat; + /// Back-off strategy + typedef cds::backoff::empty back_off; + /// RCU deadlock checking policy (only for \ref cds_intrusive_EllenBinTree_rcu "RCU-based EllenBinTree") /** List of available options see \p opt::rcu_check_deadlock @@ -558,6 +562,7 @@ namespace cds { namespace intrusive { - \p opt::node_allocator - the allocator for internal nodes. Default is \ref CDS_DEFAULT_ALLOCATOR. - \p opt::stat - internal statistics, by default it is disabled (\p ellen_bintree::empty_stat) To enable statistics use \p \p ellen_bintree::stat + - \p opt::backoff - back-off strategy, by default no strategy is used (\p cds::backoff::empty) - \p opt::rcu_check_deadlock - a deadlock checking policy for RCU-based tree, default is \p opt::v::rcu_throw_deadlock */ template diff --git a/cds/intrusive/ellen_bintree_rcu.h b/cds/intrusive/ellen_bintree_rcu.h index 79b9e751..55e80511 100644 --- a/cds/intrusive/ellen_bintree_rcu.h +++ b/cds/intrusive/ellen_bintree_rcu.h @@ -436,6 +436,7 @@ namespace cds { namespace intrusive { typedef typename hook::node_type node_type; ///< node type typedef typename traits::disposer disposer; ///< leaf node disposer + typedef typename traits::back_off back_off; ///< back-off strategy protected: //@cond @@ -734,6 +735,7 @@ namespace cds { namespace intrusive { unique_internal_node_ptr pNewInternal; retired_list updRetire; + back_off bkoff; { rcu_lock l; @@ -760,6 +762,7 @@ namespace cds { namespace intrusive { } } + bkoff(); m_Stat.onInsertRetry(); } } @@ -805,6 +808,7 @@ namespace cds { namespace intrusive { unique_internal_node_ptr pNewInternal; retired_list updRetire; + back_off bkoff; { rcu_lock l; @@ -831,6 +835,8 @@ namespace cds { namespace intrusive { break; } } + + bkoff(); m_Stat.onEnsureRetry(); } } @@ -1577,6 +1583,7 @@ namespace cds { namespace intrusive { retired_list updRetire; update_desc * pOp = nullptr; search_result res; + back_off bkoff; { rcu_lock l; @@ -1622,6 +1629,7 @@ namespace cds { namespace intrusive { } } + bkoff(); m_Stat.onEraseRetry(); } } @@ -1652,6 +1660,7 @@ namespace cds { namespace intrusive { retired_list updRetire; update_desc * pOp = nullptr; search_result res; + back_off bkoff; { rcu_lock l; @@ -1696,6 +1705,7 @@ namespace cds { namespace intrusive { } } + bkoff(); m_Stat.onEraseRetry(); } } @@ -1714,6 +1724,7 @@ namespace cds { namespace intrusive { retired_list updRetire; update_desc * pOp = nullptr; search_result res; + back_off bkoff; { rcu_lock l; @@ -1758,6 +1769,8 @@ namespace cds { namespace intrusive { } } } + + bkoff(); m_Stat.onExtractMaxRetry(); } } @@ -1775,6 +1788,7 @@ namespace cds { namespace intrusive { retired_list updRetire; update_desc * pOp = nullptr; search_result res; + back_off bkoff; { rcu_lock l; @@ -1820,6 +1834,7 @@ namespace cds { namespace intrusive { } } + bkoff(); m_Stat.onExtractMinRetry(); } } diff --git a/cds/intrusive/impl/ellen_bintree.h b/cds/intrusive/impl/ellen_bintree.h index 06baed3b..ca9fa2d3 100644 --- a/cds/intrusive/impl/ellen_bintree.h +++ b/cds/intrusive/impl/ellen_bintree.h @@ -117,6 +117,7 @@ namespace cds { namespace intrusive { typedef typename traits::hook hook; ///< hook type typedef typename hook::node_type node_type; ///< node type typedef typename traits::disposer disposer; ///< leaf node disposer + typedef typename traits::back_off back_off; ///< back-off strategy typedef cds::gc::guarded_ptr< gc, value_type > guarded_ptr; ///< Guarded pointer @@ -339,8 +340,9 @@ namespace cds { namespace intrusive { guardInsert.assign( &val ); unique_internal_node_ptr pNewInternal; - search_result res; + back_off bkoff; + for ( ;; ) { if ( search( res, val, node_compare() )) { if ( pNewInternal.get() ) @@ -361,6 +363,7 @@ namespace cds { namespace intrusive { } } + bkoff(); m_Stat.onInsertRetry(); } @@ -402,8 +405,9 @@ namespace cds { namespace intrusive { guardInsert.assign( &val ); unique_internal_node_ptr pNewInternal; - search_result res; + back_off bkoff; + for ( ;; ) { if ( search( res, val, node_compare() )) { func( false, *node_traits::to_value_ptr( res.pLeaf ), val ); @@ -424,6 +428,8 @@ namespace cds { namespace intrusive { break; } } + + bkoff(); m_Stat.onEnsureRetry(); } @@ -1058,6 +1064,7 @@ namespace cds { namespace intrusive { return true; } + /* void help( update_ptr pUpdate ) { // pUpdate must be guarded! @@ -1076,6 +1083,7 @@ namespace cds { namespace intrusive { break; } } + */ void help_insert( update_desc * pOp ) { @@ -1198,18 +1206,17 @@ namespace cds { namespace intrusive { assert( res.pLeaf->is_leaf() ); // check search result - if ( ( res.bRightLeaf + if ( (res.bRightLeaf ? res.pParent->m_pRight.load( memory_model::memory_order_acquire ) - : res.pParent->m_pLeft.load( memory_model::memory_order_acquire ) ) == res.pLeaf ) - { + : res.pParent->m_pLeft.load( memory_model::memory_order_acquire )) == res.pLeaf ) { leaf_node * pNewLeaf = node_traits::to_node_ptr( val ); - int nCmp = node_compare()( val, *res.pLeaf ); + int nCmp = node_compare()(val, *res.pLeaf); if ( nCmp < 0 ) { if ( res.pGrandParent ) { assert( !res.pLeaf->infinite_key() ); pNewInternal->infinite_key( 0 ); - key_extractor()( pNewInternal->m_Key, *node_traits::to_value_ptr( res.pLeaf ) ); + key_extractor()(pNewInternal->m_Key, *node_traits::to_value_ptr( res.pLeaf )); } else { assert( res.pLeaf->infinite_key() == tree_node::key_infinite1 ); @@ -1222,10 +1229,10 @@ namespace cds { namespace intrusive { assert( !res.pLeaf->is_internal() ); pNewInternal->infinite_key( 0 ); - key_extractor()( pNewInternal->m_Key, val ); + key_extractor()(pNewInternal->m_Key, val); pNewInternal->m_pLeft.store( static_cast(res.pLeaf), memory_model::memory_order_relaxed ); pNewInternal->m_pRight.store( static_cast(pNewLeaf), memory_model::memory_order_release ); - assert( !res.pLeaf->infinite_key()); + assert( !res.pLeaf->infinite_key() ); } typename gc::Guard guard; @@ -1239,8 +1246,7 @@ namespace cds { namespace intrusive { update_ptr updCur( res.updParent.ptr() ); if ( res.pParent->m_pUpdate.compare_exchange_strong( updCur, update_ptr( pOp, update_desc::IFlag ), - memory_model::memory_order_acquire, atomics::memory_order_relaxed )) - { + memory_model::memory_order_acquire, atomics::memory_order_relaxed ) ) { // do insert help_insert( pOp ); retire_update_desc( pOp ); @@ -1251,6 +1257,7 @@ namespace cds { namespace intrusive { free_update_desc( pOp ); } } + return false; } @@ -1259,6 +1266,7 @@ namespace cds { namespace intrusive { { update_desc * pOp = nullptr; search_result res; + back_off bkoff; for ( ;; ) { if ( !search( res, val, cmp ) || !eq( val, *res.pLeaf ) ) { @@ -1284,11 +1292,10 @@ namespace cds { namespace intrusive { update_ptr updGP( res.updGrandParent.ptr() ); if ( res.pGrandParent->m_pUpdate.compare_exchange_strong( updGP, update_ptr( pOp, update_desc::DFlag ), - memory_model::memory_order_acquire, atomics::memory_order_relaxed )) - { - if ( help_delete( pOp )) { + memory_model::memory_order_acquire, atomics::memory_order_relaxed ) ) { + if ( help_delete( pOp ) ) { // res.pLeaf is not deleted yet since it is guarded - f( *node_traits::to_value_ptr( res.pLeaf )); + f( *node_traits::to_value_ptr( res.pLeaf ) ); break; } pOp = nullptr; @@ -1296,6 +1303,7 @@ namespace cds { namespace intrusive { } } + bkoff(); m_Stat.onEraseRetry(); } @@ -1331,6 +1339,7 @@ namespace cds { namespace intrusive { { update_desc * pOp = nullptr; search_result res; + back_off bkoff; for ( ;; ) { if ( !search_max( res )) { @@ -1341,7 +1350,7 @@ namespace cds { namespace intrusive { return false; } - if ( res.updGrandParent.bits() == update_desc::Clean && res.updParent.bits() == update_desc::Clean ) { + if ( res.updGrandParent.bits() == update_desc::Clean && res.updParent.bits() == update_desc::Clean ) { if ( !pOp ) pOp = alloc_update_desc(); if ( check_delete_precondition( res ) ) { @@ -1357,15 +1366,16 @@ namespace cds { namespace intrusive { update_ptr updGP( res.updGrandParent.ptr() ); if ( res.pGrandParent->m_pUpdate.compare_exchange_strong( updGP, update_ptr( pOp, update_desc::DFlag ), - memory_model::memory_order_acquire, atomics::memory_order_relaxed )) + memory_model::memory_order_acquire, atomics::memory_order_relaxed ) ) { - if ( help_delete( pOp )) + if ( help_delete( pOp ) ) break; pOp = nullptr; } } } + bkoff(); m_Stat.onExtractMaxRetry(); } @@ -1379,6 +1389,7 @@ namespace cds { namespace intrusive { { update_desc * pOp = nullptr; search_result res; + back_off bkoff; for ( ;; ) { if ( !search_min( res )) { @@ -1414,6 +1425,7 @@ namespace cds { namespace intrusive { } } + bkoff(); m_Stat.onExtractMinRetry(); } diff --git a/tests/test-hdr/tree/hdr_ellenbintree_map.h b/tests/test-hdr/tree/hdr_ellenbintree_map.h index d917bc8a..033db4e3 100644 --- a/tests/test-hdr/tree/hdr_ellenbintree_map.h +++ b/tests/test-hdr/tree/hdr_ellenbintree_map.h @@ -553,16 +553,6 @@ namespace tree { PrintStat()( m ); } - void EllenBinTree_rcu_gpi_less(); - void EllenBinTree_rcu_gpi_cmp(); - void EllenBinTree_rcu_gpi_cmpless(); - void EllenBinTree_rcu_gpi_less_ic(); - void EllenBinTree_rcu_gpi_cmp_ic(); - void EllenBinTree_rcu_gpi_less_stat(); - void EllenBinTree_rcu_gpi_cmp_ic_stat(); - void EllenBinTree_rcu_gpi_less_pool(); - void EllenBinTree_rcu_gpi_less_pool_ic_stat(); - void EllenBinTree_hp_less(); void EllenBinTree_hp_cmp(); void EllenBinTree_hp_cmpless(); @@ -570,6 +560,7 @@ namespace tree { void EllenBinTree_hp_cmp_ic(); void EllenBinTree_hp_less_stat(); void EllenBinTree_hp_cmp_ic_stat(); + void EllenBinTree_hp_cmp_ic_stat_yield(); void EllenBinTree_hp_less_pool(); void EllenBinTree_hp_less_pool_ic_stat(); @@ -580,9 +571,21 @@ namespace tree { void EllenBinTree_dhp_cmp_ic(); void EllenBinTree_dhp_less_stat(); void EllenBinTree_dhp_cmp_ic_stat(); + void EllenBinTree_dhp_cmp_ic_stat_yield(); void EllenBinTree_dhp_less_pool(); void EllenBinTree_dhp_less_pool_ic_stat(); + void EllenBinTree_rcu_gpi_less(); + void EllenBinTree_rcu_gpi_cmp(); + void EllenBinTree_rcu_gpi_cmpless(); + void EllenBinTree_rcu_gpi_less_ic(); + void EllenBinTree_rcu_gpi_cmp_ic(); + void EllenBinTree_rcu_gpi_less_stat(); + void EllenBinTree_rcu_gpi_cmp_ic_stat(); + void EllenBinTree_rcu_gpi_cmp_ic_stat_yield(); + void EllenBinTree_rcu_gpi_less_pool(); + void EllenBinTree_rcu_gpi_less_pool_ic_stat(); + void EllenBinTree_rcu_gpb_less(); void EllenBinTree_rcu_gpb_cmp(); void EllenBinTree_rcu_gpb_cmpless(); @@ -590,6 +593,7 @@ namespace tree { void EllenBinTree_rcu_gpb_cmp_ic(); void EllenBinTree_rcu_gpb_less_stat(); void EllenBinTree_rcu_gpb_cmp_ic_stat(); + void EllenBinTree_rcu_gpb_cmp_ic_stat_yield(); void EllenBinTree_rcu_gpb_less_pool(); void EllenBinTree_rcu_gpb_less_pool_ic_stat(); @@ -600,6 +604,7 @@ namespace tree { void EllenBinTree_rcu_gpt_cmp_ic(); void EllenBinTree_rcu_gpt_less_stat(); void EllenBinTree_rcu_gpt_cmp_ic_stat(); + void EllenBinTree_rcu_gpt_cmp_ic_stat_yield(); void EllenBinTree_rcu_gpt_less_pool(); void EllenBinTree_rcu_gpt_less_pool_ic_stat(); @@ -610,6 +615,7 @@ namespace tree { void EllenBinTree_rcu_shb_cmp_ic(); void EllenBinTree_rcu_shb_less_stat(); void EllenBinTree_rcu_shb_cmp_ic_stat(); + void EllenBinTree_rcu_shb_cmp_ic_stat_yield(); void EllenBinTree_rcu_shb_less_pool(); void EllenBinTree_rcu_shb_less_pool_ic_stat(); @@ -620,6 +626,7 @@ namespace tree { void EllenBinTree_rcu_sht_cmp_ic(); void EllenBinTree_rcu_sht_less_stat(); void EllenBinTree_rcu_sht_cmp_ic_stat(); + void EllenBinTree_rcu_sht_cmp_ic_stat_yield(); void EllenBinTree_rcu_sht_less_pool(); void EllenBinTree_rcu_sht_less_pool_ic_stat(); @@ -631,7 +638,8 @@ namespace tree { CPPUNIT_TEST(EllenBinTree_hp_less_ic) CPPUNIT_TEST(EllenBinTree_hp_cmp_ic) CPPUNIT_TEST(EllenBinTree_hp_cmp_ic_stat) - CPPUNIT_TEST(EllenBinTree_hp_less_pool) + CPPUNIT_TEST( EllenBinTree_hp_cmp_ic_stat_yield ) + CPPUNIT_TEST( EllenBinTree_hp_less_pool ) CPPUNIT_TEST(EllenBinTree_hp_less_pool_ic_stat) CPPUNIT_TEST(EllenBinTree_dhp_less) @@ -641,7 +649,8 @@ namespace tree { CPPUNIT_TEST(EllenBinTree_dhp_less_ic) CPPUNIT_TEST(EllenBinTree_dhp_cmp_ic) CPPUNIT_TEST(EllenBinTree_dhp_cmp_ic_stat) - CPPUNIT_TEST(EllenBinTree_dhp_less_pool) + CPPUNIT_TEST( EllenBinTree_dhp_cmp_ic_stat_yield ) + CPPUNIT_TEST( EllenBinTree_dhp_less_pool ) CPPUNIT_TEST(EllenBinTree_dhp_less_pool_ic_stat) CPPUNIT_TEST(EllenBinTree_rcu_gpi_less) @@ -651,7 +660,8 @@ namespace tree { CPPUNIT_TEST(EllenBinTree_rcu_gpi_less_ic) CPPUNIT_TEST(EllenBinTree_rcu_gpi_cmp_ic) CPPUNIT_TEST(EllenBinTree_rcu_gpi_cmp_ic_stat) - CPPUNIT_TEST(EllenBinTree_rcu_gpi_less_pool) + CPPUNIT_TEST( EllenBinTree_rcu_gpi_cmp_ic_stat_yield ) + CPPUNIT_TEST( EllenBinTree_rcu_gpi_less_pool ) CPPUNIT_TEST(EllenBinTree_rcu_gpi_less_pool_ic_stat) CPPUNIT_TEST(EllenBinTree_rcu_gpb_less) @@ -661,7 +671,8 @@ namespace tree { CPPUNIT_TEST(EllenBinTree_rcu_gpb_less_ic) CPPUNIT_TEST(EllenBinTree_rcu_gpb_cmp_ic) CPPUNIT_TEST(EllenBinTree_rcu_gpb_cmp_ic_stat) - CPPUNIT_TEST(EllenBinTree_rcu_gpb_less_pool) + CPPUNIT_TEST( EllenBinTree_rcu_gpb_cmp_ic_stat_yield ) + CPPUNIT_TEST( EllenBinTree_rcu_gpb_less_pool ) CPPUNIT_TEST(EllenBinTree_rcu_gpb_less_pool_ic_stat) CPPUNIT_TEST(EllenBinTree_rcu_gpt_less) @@ -671,7 +682,8 @@ namespace tree { CPPUNIT_TEST(EllenBinTree_rcu_gpt_less_ic) CPPUNIT_TEST(EllenBinTree_rcu_gpt_cmp_ic) CPPUNIT_TEST(EllenBinTree_rcu_gpt_cmp_ic_stat) - CPPUNIT_TEST(EllenBinTree_rcu_gpt_less_pool) + CPPUNIT_TEST( EllenBinTree_rcu_gpt_cmp_ic_stat_yield ) + CPPUNIT_TEST( EllenBinTree_rcu_gpt_less_pool ) CPPUNIT_TEST(EllenBinTree_rcu_gpt_less_pool_ic_stat) CPPUNIT_TEST(EllenBinTree_rcu_shb_less) @@ -681,7 +693,8 @@ namespace tree { CPPUNIT_TEST(EllenBinTree_rcu_shb_less_ic) CPPUNIT_TEST(EllenBinTree_rcu_shb_cmp_ic) CPPUNIT_TEST(EllenBinTree_rcu_shb_cmp_ic_stat) - CPPUNIT_TEST(EllenBinTree_rcu_shb_less_pool) + CPPUNIT_TEST( EllenBinTree_rcu_shb_cmp_ic_stat_yield ) + CPPUNIT_TEST( EllenBinTree_rcu_shb_less_pool ) CPPUNIT_TEST(EllenBinTree_rcu_shb_less_pool_ic_stat) CPPUNIT_TEST(EllenBinTree_rcu_sht_less) @@ -691,7 +704,8 @@ namespace tree { CPPUNIT_TEST(EllenBinTree_rcu_sht_less_ic) CPPUNIT_TEST(EllenBinTree_rcu_sht_cmp_ic) CPPUNIT_TEST(EllenBinTree_rcu_sht_cmp_ic_stat) - CPPUNIT_TEST(EllenBinTree_rcu_sht_less_pool) + CPPUNIT_TEST( EllenBinTree_rcu_sht_cmp_ic_stat_yield ) + CPPUNIT_TEST( EllenBinTree_rcu_sht_less_pool ) CPPUNIT_TEST(EllenBinTree_rcu_sht_less_pool_ic_stat) CPPUNIT_TEST_SUITE_END() diff --git a/tests/test-hdr/tree/hdr_ellenbintree_map_dhp.cpp b/tests/test-hdr/tree/hdr_ellenbintree_map_dhp.cpp index 3145e085..31e58db1 100644 --- a/tests/test-hdr/tree/hdr_ellenbintree_map_dhp.cpp +++ b/tests/test-hdr/tree/hdr_ellenbintree_map_dhp.cpp @@ -109,6 +109,20 @@ namespace tree { test(); } + void EllenBinTreeMapHdrTest::EllenBinTree_dhp_cmp_ic_stat_yield() + { + typedef cc::EllenBinTreeMap< gc_type, key_type, value_type, + cc::ellen_bintree::make_map_traits< + co::item_counter< cds::atomicity::item_counter > + ,co::stat< cc::ellen_bintree::stat<> > + ,co::compare< compare > + , co::back_off< cds::backoff::yield > + >::type + > set_type; + + test(); + } + void EllenBinTreeMapHdrTest::EllenBinTree_dhp_less_pool() { typedef cc::EllenBinTreeMap< gc_type, key_type, value_type, diff --git a/tests/test-hdr/tree/hdr_ellenbintree_map_hp.cpp b/tests/test-hdr/tree/hdr_ellenbintree_map_hp.cpp index 81201123..bd6d57fd 100644 --- a/tests/test-hdr/tree/hdr_ellenbintree_map_hp.cpp +++ b/tests/test-hdr/tree/hdr_ellenbintree_map_hp.cpp @@ -109,6 +109,20 @@ namespace tree { test(); } + void EllenBinTreeMapHdrTest::EllenBinTree_hp_cmp_ic_stat_yield() + { + typedef cc::EllenBinTreeMap< gc_type, key_type, value_type, + cc::ellen_bintree::make_map_traits< + co::item_counter< cds::atomicity::item_counter > + ,co::stat< cc::ellen_bintree::stat<> > + ,co::compare< compare > + , co::back_off< cds::backoff::yield > + >::type + > set_type; + + test(); + } + void EllenBinTreeMapHdrTest::EllenBinTree_hp_less_pool() { typedef cc::EllenBinTreeMap< gc_type, key_type, value_type, diff --git a/tests/test-hdr/tree/hdr_ellenbintree_map_rcu_gpb.cpp b/tests/test-hdr/tree/hdr_ellenbintree_map_rcu_gpb.cpp index 6a7bdc53..babea28d 100644 --- a/tests/test-hdr/tree/hdr_ellenbintree_map_rcu_gpb.cpp +++ b/tests/test-hdr/tree/hdr_ellenbintree_map_rcu_gpb.cpp @@ -109,6 +109,20 @@ namespace tree { test_rcu(); } + void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpb_cmp_ic_stat_yield() + { + typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type, + cc::ellen_bintree::make_map_traits< + co::item_counter< cds::atomicity::item_counter > + ,co::stat< cc::ellen_bintree::stat<> > + ,co::compare< compare > + , co::back_off< cds::backoff::yield > + >::type + > map_type; + + test_rcu(); + } + void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpb_less_pool() { typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type, diff --git a/tests/test-hdr/tree/hdr_ellenbintree_map_rcu_gpi.cpp b/tests/test-hdr/tree/hdr_ellenbintree_map_rcu_gpi.cpp index 2f308aa7..2354449a 100644 --- a/tests/test-hdr/tree/hdr_ellenbintree_map_rcu_gpi.cpp +++ b/tests/test-hdr/tree/hdr_ellenbintree_map_rcu_gpi.cpp @@ -110,6 +110,20 @@ namespace tree { test_rcu(); } + void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpi_cmp_ic_stat_yield() + { + typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type, + cc::ellen_bintree::make_map_traits< + co::item_counter< cds::atomicity::item_counter > + ,co::stat< cc::ellen_bintree::stat<> > + ,co::compare< compare > + , co::back_off< cds::backoff::yield > + >::type + > set_type; + + test_rcu(); + } + void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpi_less_pool() { typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type, diff --git a/tests/test-hdr/tree/hdr_ellenbintree_map_rcu_gpt.cpp b/tests/test-hdr/tree/hdr_ellenbintree_map_rcu_gpt.cpp index 5b9b1f4e..e7d90830 100644 --- a/tests/test-hdr/tree/hdr_ellenbintree_map_rcu_gpt.cpp +++ b/tests/test-hdr/tree/hdr_ellenbintree_map_rcu_gpt.cpp @@ -110,6 +110,20 @@ namespace tree { test_rcu(); } + void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpt_cmp_ic_stat_yield() + { + typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type, + cc::ellen_bintree::make_map_traits< + co::item_counter< cds::atomicity::item_counter > + ,co::stat< cc::ellen_bintree::stat<> > + ,co::compare< compare > + , co::back_off< cds::backoff::yield > + >::type + > set_type; + + test_rcu(); + } + void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpt_less_pool() { typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type, diff --git a/tests/test-hdr/tree/hdr_ellenbintree_map_rcu_shb.cpp b/tests/test-hdr/tree/hdr_ellenbintree_map_rcu_shb.cpp index b10a47e5..0354c224 100644 --- a/tests/test-hdr/tree/hdr_ellenbintree_map_rcu_shb.cpp +++ b/tests/test-hdr/tree/hdr_ellenbintree_map_rcu_shb.cpp @@ -125,6 +125,22 @@ namespace tree { #endif } + void EllenBinTreeMapHdrTest::EllenBinTree_rcu_shb_cmp_ic_stat_yield() + { +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type, + cc::ellen_bintree::make_map_traits< + co::item_counter< cds::atomicity::item_counter > + ,co::stat< cc::ellen_bintree::stat<> > + ,co::compare< compare > + , co::back_off< cds::backoff::yield > + >::type + > set_type; + + test_rcu(); +#endif + } + void EllenBinTreeMapHdrTest::EllenBinTree_rcu_shb_less_pool() { #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED diff --git a/tests/test-hdr/tree/hdr_ellenbintree_map_rcu_sht.cpp b/tests/test-hdr/tree/hdr_ellenbintree_map_rcu_sht.cpp index fb3f21c5..c18fbef6 100644 --- a/tests/test-hdr/tree/hdr_ellenbintree_map_rcu_sht.cpp +++ b/tests/test-hdr/tree/hdr_ellenbintree_map_rcu_sht.cpp @@ -125,6 +125,22 @@ namespace tree { #endif } + void EllenBinTreeMapHdrTest::EllenBinTree_rcu_sht_cmp_ic_stat_yield() + { +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type, + cc::ellen_bintree::make_map_traits< + co::item_counter< cds::atomicity::item_counter > + ,co::stat< cc::ellen_bintree::stat<> > + ,co::compare< compare > + , co::back_off< cds::backoff::yield > + >::type + > set_type; + + test_rcu(); +#endif + } + void EllenBinTreeMapHdrTest::EllenBinTree_rcu_sht_less_pool() { #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED diff --git a/tests/test-hdr/tree/hdr_ellenbintree_set.h b/tests/test-hdr/tree/hdr_ellenbintree_set.h index 8d80b66d..91065a09 100644 --- a/tests/test-hdr/tree/hdr_ellenbintree_set.h +++ b/tests/test-hdr/tree/hdr_ellenbintree_set.h @@ -659,6 +659,7 @@ namespace tree { void EllenBinTree_hp_cmp_ic(); void EllenBinTree_hp_less_stat(); void EllenBinTree_hp_cmp_ic_stat(); + void EllenBinTree_hp_cmp_ic_stat_yield(); void EllenBinTree_hp_less_pool(); void EllenBinTree_hp_less_pool_ic_stat(); @@ -669,6 +670,7 @@ namespace tree { void EllenBinTree_dhp_cmp_ic(); void EllenBinTree_dhp_less_stat(); void EllenBinTree_dhp_cmp_ic_stat(); + void EllenBinTree_dhp_cmp_ic_stat_yield(); void EllenBinTree_dhp_less_pool(); void EllenBinTree_dhp_less_pool_ic_stat(); @@ -679,6 +681,7 @@ namespace tree { void EllenBinTree_rcu_gpi_cmp_ic(); void EllenBinTree_rcu_gpi_less_stat(); void EllenBinTree_rcu_gpi_cmp_ic_stat(); + void EllenBinTree_rcu_gpi_cmp_ic_stat_yield(); void EllenBinTree_rcu_gpi_less_pool(); void EllenBinTree_rcu_gpi_less_pool_ic_stat(); @@ -689,6 +692,7 @@ namespace tree { void EllenBinTree_rcu_gpb_cmp_ic(); void EllenBinTree_rcu_gpb_less_stat(); void EllenBinTree_rcu_gpb_cmp_ic_stat(); + void EllenBinTree_rcu_gpb_cmp_ic_stat_yield(); void EllenBinTree_rcu_gpb_less_pool(); void EllenBinTree_rcu_gpb_less_pool_ic_stat(); @@ -699,6 +703,7 @@ namespace tree { void EllenBinTree_rcu_gpt_cmp_ic(); void EllenBinTree_rcu_gpt_less_stat(); void EllenBinTree_rcu_gpt_cmp_ic_stat(); + void EllenBinTree_rcu_gpt_cmp_ic_stat_yield(); void EllenBinTree_rcu_gpt_less_pool(); void EllenBinTree_rcu_gpt_less_pool_ic_stat(); @@ -709,6 +714,7 @@ namespace tree { void EllenBinTree_rcu_shb_cmp_ic(); void EllenBinTree_rcu_shb_less_stat(); void EllenBinTree_rcu_shb_cmp_ic_stat(); + void EllenBinTree_rcu_shb_cmp_ic_stat_yield(); void EllenBinTree_rcu_shb_less_pool(); void EllenBinTree_rcu_shb_less_pool_ic_stat(); @@ -719,6 +725,7 @@ namespace tree { void EllenBinTree_rcu_sht_cmp_ic(); void EllenBinTree_rcu_sht_less_stat(); void EllenBinTree_rcu_sht_cmp_ic_stat(); + void EllenBinTree_rcu_sht_cmp_ic_stat_yield(); void EllenBinTree_rcu_sht_less_pool(); void EllenBinTree_rcu_sht_less_pool_ic_stat(); @@ -730,7 +737,8 @@ namespace tree { CPPUNIT_TEST(EllenBinTree_hp_less_ic) CPPUNIT_TEST(EllenBinTree_hp_cmp_ic) CPPUNIT_TEST(EllenBinTree_hp_cmp_ic_stat) - CPPUNIT_TEST(EllenBinTree_hp_less_pool) + CPPUNIT_TEST( EllenBinTree_hp_cmp_ic_stat_yield ) + CPPUNIT_TEST( EllenBinTree_hp_less_pool ) CPPUNIT_TEST(EllenBinTree_hp_less_pool_ic_stat) CPPUNIT_TEST(EllenBinTree_dhp_less) @@ -740,7 +748,8 @@ namespace tree { CPPUNIT_TEST(EllenBinTree_dhp_less_ic) CPPUNIT_TEST(EllenBinTree_dhp_cmp_ic) CPPUNIT_TEST(EllenBinTree_dhp_cmp_ic_stat) - CPPUNIT_TEST(EllenBinTree_dhp_less_pool) + CPPUNIT_TEST( EllenBinTree_dhp_cmp_ic_stat_yield ) + CPPUNIT_TEST( EllenBinTree_dhp_less_pool ) CPPUNIT_TEST(EllenBinTree_dhp_less_pool_ic_stat) CPPUNIT_TEST(EllenBinTree_rcu_gpi_less) @@ -750,7 +759,8 @@ namespace tree { CPPUNIT_TEST(EllenBinTree_rcu_gpi_less_ic) CPPUNIT_TEST(EllenBinTree_rcu_gpi_cmp_ic) CPPUNIT_TEST(EllenBinTree_rcu_gpi_cmp_ic_stat) - CPPUNIT_TEST(EllenBinTree_rcu_gpi_less_pool) + CPPUNIT_TEST( EllenBinTree_rcu_gpi_cmp_ic_stat_yield ) + CPPUNIT_TEST( EllenBinTree_rcu_gpi_less_pool ) CPPUNIT_TEST(EllenBinTree_rcu_gpi_less_pool_ic_stat) CPPUNIT_TEST(EllenBinTree_rcu_gpb_less) @@ -760,7 +770,8 @@ namespace tree { CPPUNIT_TEST(EllenBinTree_rcu_gpb_less_ic) CPPUNIT_TEST(EllenBinTree_rcu_gpb_cmp_ic) CPPUNIT_TEST(EllenBinTree_rcu_gpb_cmp_ic_stat) - CPPUNIT_TEST(EllenBinTree_rcu_gpb_less_pool) + CPPUNIT_TEST( EllenBinTree_rcu_gpb_cmp_ic_stat_yield ) + CPPUNIT_TEST( EllenBinTree_rcu_gpb_less_pool ) CPPUNIT_TEST(EllenBinTree_rcu_gpb_less_pool_ic_stat) CPPUNIT_TEST(EllenBinTree_rcu_gpt_less) @@ -770,7 +781,8 @@ namespace tree { CPPUNIT_TEST(EllenBinTree_rcu_gpt_less_ic) CPPUNIT_TEST(EllenBinTree_rcu_gpt_cmp_ic) CPPUNIT_TEST(EllenBinTree_rcu_gpt_cmp_ic_stat) - CPPUNIT_TEST(EllenBinTree_rcu_gpt_less_pool) + CPPUNIT_TEST( EllenBinTree_rcu_gpt_cmp_ic_stat_yield ) + CPPUNIT_TEST( EllenBinTree_rcu_gpt_less_pool ) CPPUNIT_TEST(EllenBinTree_rcu_gpt_less_pool_ic_stat) CPPUNIT_TEST(EllenBinTree_rcu_shb_less) @@ -780,7 +792,8 @@ namespace tree { CPPUNIT_TEST(EllenBinTree_rcu_shb_less_ic) CPPUNIT_TEST(EllenBinTree_rcu_shb_cmp_ic) CPPUNIT_TEST(EllenBinTree_rcu_shb_cmp_ic_stat) - CPPUNIT_TEST(EllenBinTree_rcu_shb_less_pool) + CPPUNIT_TEST( EllenBinTree_rcu_shb_cmp_ic_stat_yield ) + CPPUNIT_TEST( EllenBinTree_rcu_shb_less_pool ) CPPUNIT_TEST(EllenBinTree_rcu_shb_less_pool_ic_stat) CPPUNIT_TEST(EllenBinTree_rcu_sht_less) @@ -790,7 +803,8 @@ namespace tree { CPPUNIT_TEST(EllenBinTree_rcu_sht_less_ic) CPPUNIT_TEST(EllenBinTree_rcu_sht_cmp_ic) CPPUNIT_TEST(EllenBinTree_rcu_sht_cmp_ic_stat) - CPPUNIT_TEST(EllenBinTree_rcu_sht_less_pool) + CPPUNIT_TEST( EllenBinTree_rcu_sht_cmp_ic_stat_yield ) + CPPUNIT_TEST( EllenBinTree_rcu_sht_less_pool ) CPPUNIT_TEST(EllenBinTree_rcu_sht_less_pool_ic_stat) CPPUNIT_TEST_SUITE_END() diff --git a/tests/test-hdr/tree/hdr_ellenbintree_set_dhp.cpp b/tests/test-hdr/tree/hdr_ellenbintree_set_dhp.cpp index cdabe215..1d65ff9b 100644 --- a/tests/test-hdr/tree/hdr_ellenbintree_set_dhp.cpp +++ b/tests/test-hdr/tree/hdr_ellenbintree_set_dhp.cpp @@ -115,6 +115,21 @@ namespace tree { test(); } + void EllenBinTreeSetHdrTest::EllenBinTree_dhp_cmp_ic_stat_yield() + { + typedef cc::EllenBinTreeSet< gc_type, key_type, value_type, + cc::ellen_bintree::make_set_traits< + cc::ellen_bintree::key_extractor< key_extractor > + ,co::item_counter< cds::atomicity::item_counter > + ,co::stat< cc::ellen_bintree::stat<> > + ,co::compare< compare > + , co::back_off< cds::backoff::yield > + >::type + > set_type; + + test(); + } + void EllenBinTreeSetHdrTest::EllenBinTree_dhp_less_pool() { typedef cc::EllenBinTreeSet< gc_type, key_type, value_type, diff --git a/tests/test-hdr/tree/hdr_ellenbintree_set_hp.cpp b/tests/test-hdr/tree/hdr_ellenbintree_set_hp.cpp index 582ef7ee..814b6f0c 100644 --- a/tests/test-hdr/tree/hdr_ellenbintree_set_hp.cpp +++ b/tests/test-hdr/tree/hdr_ellenbintree_set_hp.cpp @@ -114,6 +114,21 @@ namespace tree { test(); } + void EllenBinTreeSetHdrTest::EllenBinTree_hp_cmp_ic_stat_yield() + { + typedef cc::EllenBinTreeSet< gc_type, key_type, value_type, + cc::ellen_bintree::make_set_traits< + cc::ellen_bintree::key_extractor< key_extractor > + ,co::item_counter< cds::atomicity::item_counter > + ,co::stat< cc::ellen_bintree::stat<> > + ,co::compare< compare > + , co::back_off< cds::backoff::yield > + >::type + > set_type; + + test(); + } + void EllenBinTreeSetHdrTest::EllenBinTree_hp_less_pool() { typedef cc::EllenBinTreeSet< gc_type, key_type, value_type, diff --git a/tests/test-hdr/tree/hdr_ellenbintree_set_rcu_gpb.cpp b/tests/test-hdr/tree/hdr_ellenbintree_set_rcu_gpb.cpp index 063dfb61..3d8443c2 100644 --- a/tests/test-hdr/tree/hdr_ellenbintree_set_rcu_gpb.cpp +++ b/tests/test-hdr/tree/hdr_ellenbintree_set_rcu_gpb.cpp @@ -115,6 +115,21 @@ namespace tree { test_rcu(); } + void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpb_cmp_ic_stat_yield() + { + typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type, + cc::ellen_bintree::make_set_traits< + cc::ellen_bintree::key_extractor< key_extractor > + ,co::item_counter< cds::atomicity::item_counter > + ,co::stat< cc::ellen_bintree::stat<> > + , co::back_off< cds::backoff::yield > + ,co::compare< compare > + >::type + > set_type; + + test_rcu(); + } + void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpb_less_pool() { typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type, diff --git a/tests/test-hdr/tree/hdr_ellenbintree_set_rcu_gpi.cpp b/tests/test-hdr/tree/hdr_ellenbintree_set_rcu_gpi.cpp index 1794d9ed..8ce0a672 100644 --- a/tests/test-hdr/tree/hdr_ellenbintree_set_rcu_gpi.cpp +++ b/tests/test-hdr/tree/hdr_ellenbintree_set_rcu_gpi.cpp @@ -117,6 +117,21 @@ namespace tree { test_rcu(); } + void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpi_cmp_ic_stat_yield() + { + typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type, + cc::ellen_bintree::make_set_traits< + cc::ellen_bintree::key_extractor< key_extractor > + ,co::item_counter< cds::atomicity::item_counter > + ,co::stat< cc::ellen_bintree::stat<> > + ,co::compare< compare > + , co::back_off< cds::backoff::yield > + >::type + > set_type; + + test_rcu(); + } + void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpi_less_pool() { typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type, diff --git a/tests/test-hdr/tree/hdr_ellenbintree_set_rcu_gpt.cpp b/tests/test-hdr/tree/hdr_ellenbintree_set_rcu_gpt.cpp index 49f35149..d3a26473 100644 --- a/tests/test-hdr/tree/hdr_ellenbintree_set_rcu_gpt.cpp +++ b/tests/test-hdr/tree/hdr_ellenbintree_set_rcu_gpt.cpp @@ -117,6 +117,21 @@ namespace tree { test_rcu(); } + void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpt_cmp_ic_stat_yield() + { + typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type, + cc::ellen_bintree::make_set_traits< + cc::ellen_bintree::key_extractor< key_extractor > + ,co::item_counter< cds::atomicity::item_counter > + ,co::stat< cc::ellen_bintree::stat<> > + ,co::compare< compare > + , co::back_off< cds::backoff::yield > + >::type + > set_type; + + test_rcu(); + } + void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpt_less_pool() { typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type, diff --git a/tests/test-hdr/tree/hdr_ellenbintree_set_rcu_shb.cpp b/tests/test-hdr/tree/hdr_ellenbintree_set_rcu_shb.cpp index f153f895..57f56d4c 100644 --- a/tests/test-hdr/tree/hdr_ellenbintree_set_rcu_shb.cpp +++ b/tests/test-hdr/tree/hdr_ellenbintree_set_rcu_shb.cpp @@ -132,6 +132,23 @@ namespace tree { #endif } + void EllenBinTreeSetHdrTest::EllenBinTree_rcu_shb_cmp_ic_stat_yield() + { +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type, + cc::ellen_bintree::make_set_traits< + cc::ellen_bintree::key_extractor< key_extractor > + ,co::item_counter< cds::atomicity::item_counter > + ,co::stat< cc::ellen_bintree::stat<> > + , co::back_off< cds::backoff::yield > + ,co::compare< compare > + >::type + > set_type; + + test_rcu(); +#endif + } + void EllenBinTreeSetHdrTest::EllenBinTree_rcu_shb_less_pool() { #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED diff --git a/tests/test-hdr/tree/hdr_ellenbintree_set_rcu_sht.cpp b/tests/test-hdr/tree/hdr_ellenbintree_set_rcu_sht.cpp index 1e4982a7..3073a5b3 100644 --- a/tests/test-hdr/tree/hdr_ellenbintree_set_rcu_sht.cpp +++ b/tests/test-hdr/tree/hdr_ellenbintree_set_rcu_sht.cpp @@ -132,6 +132,23 @@ namespace tree { #endif } + void EllenBinTreeSetHdrTest::EllenBinTree_rcu_sht_cmp_ic_stat_yield() + { +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type, + cc::ellen_bintree::make_set_traits< + cc::ellen_bintree::key_extractor< key_extractor > + ,co::item_counter< cds::atomicity::item_counter > + ,co::stat< cc::ellen_bintree::stat<> > + , co::back_off< cds::backoff::yield > + ,co::compare< compare > + >::type + > set_type; + + test_rcu(); +#endif + } + void EllenBinTreeSetHdrTest::EllenBinTree_rcu_sht_less_pool() { #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED diff --git a/tests/test-hdr/tree/hdr_intrusive_bintree.h b/tests/test-hdr/tree/hdr_intrusive_bintree.h index 3091d5c1..af3424ba 100644 --- a/tests/test-hdr/tree/hdr_intrusive_bintree.h +++ b/tests/test-hdr/tree/hdr_intrusive_bintree.h @@ -923,6 +923,7 @@ namespace tree { void EllenBinTree_hp_base_cmp_ic(); void EllenBinTree_hp_base_less_stat(); void EllenBinTree_hp_base_cmp_ic_stat(); + void EllenBinTree_hp_base_cmp_ic_stat_yield(); void EllenBinTree_hp_base_less_pool(); void EllenBinTree_hp_base_less_pool_ic_stat(); @@ -933,6 +934,7 @@ namespace tree { void EllenBinTree_hp_member_cmp_ic(); void EllenBinTree_hp_member_less_stat(); void EllenBinTree_hp_member_cmp_ic_stat(); + void EllenBinTree_hp_member_cmp_ic_stat_yield(); void EllenBinTree_hp_member_less_pool(); void EllenBinTree_hp_member_less_pool_ic_stat(); @@ -943,6 +945,7 @@ namespace tree { void EllenBinTree_dhp_base_cmp_ic(); void EllenBinTree_dhp_base_less_stat(); void EllenBinTree_dhp_base_cmp_ic_stat(); + void EllenBinTree_dhp_base_cmp_ic_stat_yield(); void EllenBinTree_dhp_base_less_pool(); void EllenBinTree_dhp_base_less_pool_ic_stat(); @@ -953,6 +956,7 @@ namespace tree { void EllenBinTree_dhp_member_cmp_ic(); void EllenBinTree_dhp_member_less_stat(); void EllenBinTree_dhp_member_cmp_ic_stat(); + void EllenBinTree_dhp_member_cmp_ic_stat_yield(); void EllenBinTree_dhp_member_less_pool(); void EllenBinTree_dhp_member_less_pool_ic_stat(); @@ -963,6 +967,7 @@ namespace tree { void EllenBinTree_rcu_gpi_base_cmp_ic(); void EllenBinTree_rcu_gpi_base_less_stat(); void EllenBinTree_rcu_gpi_base_cmp_ic_stat(); + void EllenBinTree_rcu_gpi_base_cmp_ic_stat_yield(); void EllenBinTree_rcu_gpi_base_less_pool(); void EllenBinTree_rcu_gpi_base_less_pool_ic_stat(); @@ -973,6 +978,7 @@ namespace tree { void EllenBinTree_rcu_gpi_member_cmp_ic(); void EllenBinTree_rcu_gpi_member_less_stat(); void EllenBinTree_rcu_gpi_member_cmp_ic_stat(); + void EllenBinTree_rcu_gpi_member_cmp_ic_stat_yield(); void EllenBinTree_rcu_gpi_member_less_pool(); void EllenBinTree_rcu_gpi_member_less_pool_ic_stat(); @@ -983,6 +989,7 @@ namespace tree { void EllenBinTree_rcu_gpb_base_cmp_ic(); void EllenBinTree_rcu_gpb_base_less_stat(); void EllenBinTree_rcu_gpb_base_cmp_ic_stat(); + void EllenBinTree_rcu_gpb_base_cmp_ic_stat_yield(); void EllenBinTree_rcu_gpb_base_less_pool(); void EllenBinTree_rcu_gpb_base_less_pool_ic_stat(); @@ -993,6 +1000,7 @@ namespace tree { void EllenBinTree_rcu_gpb_member_cmp_ic(); void EllenBinTree_rcu_gpb_member_less_stat(); void EllenBinTree_rcu_gpb_member_cmp_ic_stat(); + void EllenBinTree_rcu_gpb_member_cmp_ic_stat_yield(); void EllenBinTree_rcu_gpb_member_less_pool(); void EllenBinTree_rcu_gpb_member_less_pool_ic_stat(); @@ -1003,6 +1011,7 @@ namespace tree { void EllenBinTree_rcu_gpt_base_cmp_ic(); void EllenBinTree_rcu_gpt_base_less_stat(); void EllenBinTree_rcu_gpt_base_cmp_ic_stat(); + void EllenBinTree_rcu_gpt_base_cmp_ic_stat_yield(); void EllenBinTree_rcu_gpt_base_less_pool(); void EllenBinTree_rcu_gpt_base_less_pool_ic_stat(); @@ -1013,6 +1022,7 @@ namespace tree { void EllenBinTree_rcu_gpt_member_cmp_ic(); void EllenBinTree_rcu_gpt_member_less_stat(); void EllenBinTree_rcu_gpt_member_cmp_ic_stat(); + void EllenBinTree_rcu_gpt_member_cmp_ic_stat_yield(); void EllenBinTree_rcu_gpt_member_less_pool(); void EllenBinTree_rcu_gpt_member_less_pool_ic_stat(); @@ -1023,6 +1033,7 @@ namespace tree { void EllenBinTree_rcu_shb_base_cmp_ic(); void EllenBinTree_rcu_shb_base_less_stat(); void EllenBinTree_rcu_shb_base_cmp_ic_stat(); + void EllenBinTree_rcu_shb_base_cmp_ic_stat_yield(); void EllenBinTree_rcu_shb_base_less_pool(); void EllenBinTree_rcu_shb_base_less_pool_ic_stat(); @@ -1033,6 +1044,7 @@ namespace tree { void EllenBinTree_rcu_shb_member_cmp_ic(); void EllenBinTree_rcu_shb_member_less_stat(); void EllenBinTree_rcu_shb_member_cmp_ic_stat(); + void EllenBinTree_rcu_shb_member_cmp_ic_stat_yield(); void EllenBinTree_rcu_shb_member_less_pool(); void EllenBinTree_rcu_shb_member_less_pool_ic_stat(); @@ -1043,6 +1055,7 @@ namespace tree { void EllenBinTree_rcu_sht_base_cmp_ic(); void EllenBinTree_rcu_sht_base_less_stat(); void EllenBinTree_rcu_sht_base_cmp_ic_stat(); + void EllenBinTree_rcu_sht_base_cmp_ic_stat_yield(); void EllenBinTree_rcu_sht_base_less_pool(); void EllenBinTree_rcu_sht_base_less_pool_ic_stat(); @@ -1053,6 +1066,7 @@ namespace tree { void EllenBinTree_rcu_sht_member_cmp_ic(); void EllenBinTree_rcu_sht_member_less_stat(); void EllenBinTree_rcu_sht_member_cmp_ic_stat(); + void EllenBinTree_rcu_sht_member_cmp_ic_stat_yield(); void EllenBinTree_rcu_sht_member_less_pool(); void EllenBinTree_rcu_sht_member_less_pool_ic_stat(); @@ -1064,7 +1078,8 @@ namespace tree { CPPUNIT_TEST(EllenBinTree_hp_base_less_ic) CPPUNIT_TEST(EllenBinTree_hp_base_cmp_ic) CPPUNIT_TEST(EllenBinTree_hp_base_cmp_ic_stat) - CPPUNIT_TEST(EllenBinTree_hp_base_less_pool) + CPPUNIT_TEST( EllenBinTree_hp_base_cmp_ic_stat_yield ) + CPPUNIT_TEST( EllenBinTree_hp_base_less_pool ) CPPUNIT_TEST(EllenBinTree_hp_base_less_pool_ic_stat) CPPUNIT_TEST(EllenBinTree_hp_member_less) @@ -1073,7 +1088,8 @@ namespace tree { CPPUNIT_TEST(EllenBinTree_hp_member_cmpless) CPPUNIT_TEST(EllenBinTree_hp_member_less_ic) CPPUNIT_TEST(EllenBinTree_hp_member_cmp_ic) - CPPUNIT_TEST(EllenBinTree_hp_member_cmp_ic_stat) + CPPUNIT_TEST( EllenBinTree_hp_member_cmp_ic_stat ) + CPPUNIT_TEST( EllenBinTree_hp_member_cmp_ic_stat_yield ) CPPUNIT_TEST(EllenBinTree_hp_member_less_pool) CPPUNIT_TEST(EllenBinTree_hp_member_less_pool_ic_stat) @@ -1084,7 +1100,8 @@ namespace tree { CPPUNIT_TEST(EllenBinTree_dhp_base_less_ic) CPPUNIT_TEST(EllenBinTree_dhp_base_cmp_ic) CPPUNIT_TEST(EllenBinTree_dhp_base_cmp_ic_stat) - CPPUNIT_TEST(EllenBinTree_dhp_base_less_pool) + CPPUNIT_TEST( EllenBinTree_dhp_base_cmp_ic_stat_yield ) + CPPUNIT_TEST( EllenBinTree_dhp_base_less_pool ) CPPUNIT_TEST(EllenBinTree_dhp_base_less_pool_ic_stat) CPPUNIT_TEST(EllenBinTree_dhp_member_less) @@ -1094,7 +1111,8 @@ namespace tree { CPPUNIT_TEST(EllenBinTree_dhp_member_less_ic) CPPUNIT_TEST(EllenBinTree_dhp_member_cmp_ic) CPPUNIT_TEST(EllenBinTree_dhp_member_cmp_ic_stat) - CPPUNIT_TEST(EllenBinTree_dhp_member_less_pool) + CPPUNIT_TEST( EllenBinTree_dhp_member_cmp_ic_stat_yield ) + CPPUNIT_TEST( EllenBinTree_dhp_member_less_pool ) CPPUNIT_TEST(EllenBinTree_dhp_member_less_pool_ic_stat) CPPUNIT_TEST(EllenBinTree_rcu_gpi_base_less) @@ -1104,7 +1122,8 @@ namespace tree { CPPUNIT_TEST(EllenBinTree_rcu_gpi_base_less_ic) CPPUNIT_TEST(EllenBinTree_rcu_gpi_base_cmp_ic) CPPUNIT_TEST(EllenBinTree_rcu_gpi_base_cmp_ic_stat) - CPPUNIT_TEST(EllenBinTree_rcu_gpi_base_less_pool) + CPPUNIT_TEST( EllenBinTree_rcu_gpi_base_cmp_ic_stat_yield ) + CPPUNIT_TEST( EllenBinTree_rcu_gpi_base_less_pool ) CPPUNIT_TEST(EllenBinTree_rcu_gpi_base_less_pool_ic_stat) CPPUNIT_TEST(EllenBinTree_rcu_gpi_member_less) @@ -1114,7 +1133,8 @@ namespace tree { CPPUNIT_TEST(EllenBinTree_rcu_gpi_member_less_ic) CPPUNIT_TEST(EllenBinTree_rcu_gpi_member_cmp_ic) CPPUNIT_TEST(EllenBinTree_rcu_gpi_member_cmp_ic_stat) - CPPUNIT_TEST(EllenBinTree_rcu_gpi_member_less_pool) + CPPUNIT_TEST( EllenBinTree_rcu_gpi_member_cmp_ic_stat_yield ) + CPPUNIT_TEST( EllenBinTree_rcu_gpi_member_less_pool ) CPPUNIT_TEST(EllenBinTree_rcu_gpi_member_less_pool_ic_stat) CPPUNIT_TEST(EllenBinTree_rcu_gpb_base_less) @@ -1124,7 +1144,8 @@ namespace tree { CPPUNIT_TEST(EllenBinTree_rcu_gpb_base_less_ic) CPPUNIT_TEST(EllenBinTree_rcu_gpb_base_cmp_ic) CPPUNIT_TEST(EllenBinTree_rcu_gpb_base_cmp_ic_stat) - CPPUNIT_TEST(EllenBinTree_rcu_gpb_base_less_pool) + CPPUNIT_TEST( EllenBinTree_rcu_gpb_base_cmp_ic_stat_yield ) + CPPUNIT_TEST( EllenBinTree_rcu_gpb_base_less_pool ) CPPUNIT_TEST(EllenBinTree_rcu_gpb_base_less_pool_ic_stat) CPPUNIT_TEST(EllenBinTree_rcu_gpb_member_less) @@ -1134,7 +1155,8 @@ namespace tree { CPPUNIT_TEST(EllenBinTree_rcu_gpb_member_less_ic) CPPUNIT_TEST(EllenBinTree_rcu_gpb_member_cmp_ic) CPPUNIT_TEST(EllenBinTree_rcu_gpb_member_cmp_ic_stat) - CPPUNIT_TEST(EllenBinTree_rcu_gpb_member_less_pool) + CPPUNIT_TEST( EllenBinTree_rcu_gpb_member_cmp_ic_stat_yield ) + CPPUNIT_TEST( EllenBinTree_rcu_gpb_member_less_pool ) CPPUNIT_TEST(EllenBinTree_rcu_gpb_member_less_pool_ic_stat) CPPUNIT_TEST(EllenBinTree_rcu_gpt_base_less) @@ -1144,7 +1166,8 @@ namespace tree { CPPUNIT_TEST(EllenBinTree_rcu_gpt_base_less_ic) CPPUNIT_TEST(EllenBinTree_rcu_gpt_base_cmp_ic) CPPUNIT_TEST(EllenBinTree_rcu_gpt_base_cmp_ic_stat) - CPPUNIT_TEST(EllenBinTree_rcu_gpt_base_less_pool) + CPPUNIT_TEST( EllenBinTree_rcu_gpt_base_cmp_ic_stat_yield ) + CPPUNIT_TEST( EllenBinTree_rcu_gpt_base_less_pool ) CPPUNIT_TEST(EllenBinTree_rcu_gpt_base_less_pool_ic_stat) CPPUNIT_TEST(EllenBinTree_rcu_gpt_member_less) @@ -1154,7 +1177,8 @@ namespace tree { CPPUNIT_TEST(EllenBinTree_rcu_gpt_member_less_ic) CPPUNIT_TEST(EllenBinTree_rcu_gpt_member_cmp_ic) CPPUNIT_TEST(EllenBinTree_rcu_gpt_member_cmp_ic_stat) - CPPUNIT_TEST(EllenBinTree_rcu_gpt_member_less_pool) + CPPUNIT_TEST( EllenBinTree_rcu_gpt_member_cmp_ic_stat_yield ) + CPPUNIT_TEST( EllenBinTree_rcu_gpt_member_less_pool ) CPPUNIT_TEST(EllenBinTree_rcu_gpt_member_less_pool_ic_stat) CPPUNIT_TEST(EllenBinTree_rcu_shb_base_less) @@ -1164,7 +1188,8 @@ namespace tree { CPPUNIT_TEST(EllenBinTree_rcu_shb_base_less_ic) CPPUNIT_TEST(EllenBinTree_rcu_shb_base_cmp_ic) CPPUNIT_TEST(EllenBinTree_rcu_shb_base_cmp_ic_stat) - CPPUNIT_TEST(EllenBinTree_rcu_shb_base_less_pool) + CPPUNIT_TEST( EllenBinTree_rcu_shb_base_cmp_ic_stat_yield ) + CPPUNIT_TEST( EllenBinTree_rcu_shb_base_less_pool ) CPPUNIT_TEST(EllenBinTree_rcu_shb_base_less_pool_ic_stat) CPPUNIT_TEST(EllenBinTree_rcu_shb_member_less) @@ -1174,7 +1199,8 @@ namespace tree { CPPUNIT_TEST(EllenBinTree_rcu_shb_member_less_ic) CPPUNIT_TEST(EllenBinTree_rcu_shb_member_cmp_ic) CPPUNIT_TEST(EllenBinTree_rcu_shb_member_cmp_ic_stat) - CPPUNIT_TEST(EllenBinTree_rcu_shb_member_less_pool) + CPPUNIT_TEST( EllenBinTree_rcu_shb_member_cmp_ic_stat_yield ) + CPPUNIT_TEST( EllenBinTree_rcu_shb_member_less_pool ) CPPUNIT_TEST(EllenBinTree_rcu_shb_member_less_pool_ic_stat) CPPUNIT_TEST(EllenBinTree_rcu_sht_base_less) @@ -1184,7 +1210,8 @@ namespace tree { CPPUNIT_TEST(EllenBinTree_rcu_sht_base_less_ic) CPPUNIT_TEST(EllenBinTree_rcu_sht_base_cmp_ic) CPPUNIT_TEST(EllenBinTree_rcu_sht_base_cmp_ic_stat) - CPPUNIT_TEST(EllenBinTree_rcu_sht_base_less_pool) + CPPUNIT_TEST( EllenBinTree_rcu_sht_base_cmp_ic_stat_yield ) + CPPUNIT_TEST( EllenBinTree_rcu_sht_base_less_pool ) CPPUNIT_TEST(EllenBinTree_rcu_sht_base_less_pool_ic_stat) CPPUNIT_TEST(EllenBinTree_rcu_sht_member_less) @@ -1194,7 +1221,8 @@ namespace tree { CPPUNIT_TEST(EllenBinTree_rcu_sht_member_less_ic) CPPUNIT_TEST(EllenBinTree_rcu_sht_member_cmp_ic) CPPUNIT_TEST(EllenBinTree_rcu_sht_member_cmp_ic_stat) - CPPUNIT_TEST(EllenBinTree_rcu_sht_member_less_pool) + CPPUNIT_TEST( EllenBinTree_rcu_sht_member_cmp_ic_stat_yield ) + CPPUNIT_TEST( EllenBinTree_rcu_sht_member_less_pool ) CPPUNIT_TEST(EllenBinTree_rcu_sht_member_less_pool_ic_stat) CPPUNIT_TEST_SUITE_END() diff --git a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_dhp.cpp b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_dhp.cpp index 209e933a..7bfe948f 100644 --- a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_dhp.cpp +++ b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_dhp.cpp @@ -113,7 +113,7 @@ namespace tree { test(); } - void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_cmp_ic_stat() + void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_cmp_ic_stat() { typedef ci::EllenBinTree< cds::gc::DHP, key_type, base_value, ci::ellen_bintree::make_traits< @@ -129,6 +129,23 @@ namespace tree { test(); } + void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_cmp_ic_stat_yield() + { + typedef ci::EllenBinTree< cds::gc::DHP, key_type, base_value, + ci::ellen_bintree::make_traits< + ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::DHP > > > + , ci::ellen_bintree::key_extractor< key_extractor< base_value > > + , co::compare< compare< base_value > > + , ci::opt::disposer< disposer< base_value > > + , co::item_counter< cds::atomicity::item_counter > + , co::stat< ci::ellen_bintree::stat<> > + , co::back_off< cds::backoff::yield > + >::type + > tree_type; + + test(); + } + void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_less_pool() { typedef ci::EllenBinTree< cds::gc::DHP, key_type, base_value, diff --git a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_dhp_member.cpp b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_dhp_member.cpp index 2275c297..f07e18cd 100644 --- a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_dhp_member.cpp +++ b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_dhp_member.cpp @@ -115,7 +115,7 @@ namespace tree { test(); } - void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_member_cmp_ic_stat() + void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_member_cmp_ic_stat() { typedef ci::EllenBinTree< cds::gc::DHP, key_type, member_value, ci::ellen_bintree::make_traits< @@ -131,6 +131,23 @@ namespace tree { test(); } + void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_member_cmp_ic_stat_yield() + { + typedef ci::EllenBinTree< cds::gc::DHP, key_type, member_value, + ci::ellen_bintree::make_traits< + member_hook + ,ci::ellen_bintree::key_extractor< key_extractor< member_value > > + ,co::compare< compare< member_value > > + ,ci::opt::disposer< disposer< member_value > > + ,co::item_counter< cds::atomicity::item_counter > + ,co::stat< ci::ellen_bintree::stat<> > + ,co::back_off< cds::backoff::yield > + >::type + > tree_type; + + test(); + } + void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_member_less_pool() { typedef ci::EllenBinTree< cds::gc::DHP, key_type, member_value, diff --git a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_hp.cpp b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_hp.cpp index f2faad09..2134c976 100644 --- a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_hp.cpp +++ b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_hp.cpp @@ -113,7 +113,7 @@ namespace tree { test(); } - void IntrusiveBinTreeHdrTest::EllenBinTree_hp_base_cmp_ic_stat() + void IntrusiveBinTreeHdrTest::EllenBinTree_hp_base_cmp_ic_stat() { typedef ci::EllenBinTree< cds::gc::HP, key_type, base_value, ci::ellen_bintree::make_traits< @@ -129,6 +129,23 @@ namespace tree { test(); } + void IntrusiveBinTreeHdrTest::EllenBinTree_hp_base_cmp_ic_stat_yield() + { + typedef ci::EllenBinTree< cds::gc::HP, key_type, base_value, + ci::ellen_bintree::make_traits< + ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::HP > > > + ,ci::ellen_bintree::key_extractor< key_extractor< base_value > > + ,co::compare< compare< base_value > > + ,ci::opt::disposer< disposer< base_value > > + ,co::item_counter< cds::atomicity::item_counter > + ,co::stat< ci::ellen_bintree::stat<> > + , co::back_off< cds::backoff::yield > + >::type + > tree_type; + + test(); + } + void IntrusiveBinTreeHdrTest::EllenBinTree_hp_base_less_pool() { typedef ci::EllenBinTree< cds::gc::HP, key_type, base_value, diff --git a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_hp_member.cpp b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_hp_member.cpp index a68eafd7..3ccac6bc 100644 --- a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_hp_member.cpp +++ b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_hp_member.cpp @@ -122,7 +122,7 @@ namespace tree { test(); } - void IntrusiveBinTreeHdrTest::EllenBinTree_hp_member_cmp_ic_stat() + void IntrusiveBinTreeHdrTest::EllenBinTree_hp_member_cmp_ic_stat() { typedef ci::EllenBinTree< cds::gc::HP, key_type, member_value, ci::ellen_bintree::make_traits< @@ -138,6 +138,23 @@ namespace tree { test(); } + void IntrusiveBinTreeHdrTest::EllenBinTree_hp_member_cmp_ic_stat_yield() + { + typedef ci::EllenBinTree< cds::gc::HP, key_type, member_value, + ci::ellen_bintree::make_traits< + member_hook + ,ci::ellen_bintree::key_extractor< key_extractor< member_value > > + ,co::compare< compare< member_value > > + ,ci::opt::disposer< disposer< member_value > > + ,co::item_counter< cds::atomicity::item_counter > + ,co::stat< ci::ellen_bintree::stat<> > + , co::back_off< cds::backoff::yield > + >::type + > tree_type; + + test(); + } + void IntrusiveBinTreeHdrTest::EllenBinTree_hp_member_less_pool() { typedef ci::EllenBinTree< cds::gc::HP, key_type, member_value, diff --git a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_gpb.cpp b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_gpb.cpp index 8843fb69..1af18d87 100644 --- a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_gpb.cpp +++ b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_gpb.cpp @@ -116,7 +116,7 @@ namespace tree { test_rcu(); } - void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_gpb_base_cmp_ic_stat() + void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_gpb_base_cmp_ic_stat() { typedef ci::EllenBinTree< rcu_type, key_type, base_value, ci::ellen_bintree::make_traits< @@ -132,6 +132,23 @@ namespace tree { test_rcu(); } + void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_gpb_base_cmp_ic_stat_yield() + { + typedef ci::EllenBinTree< rcu_type, key_type, base_value, + ci::ellen_bintree::make_traits< + ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< rcu_type > > > + ,ci::ellen_bintree::key_extractor< key_extractor< base_value > > + ,co::compare< compare< base_value > > + ,ci::opt::disposer< disposer< base_value > > + ,co::item_counter< cds::atomicity::item_counter > + ,co::stat< ci::ellen_bintree::stat<> > + , co::back_off< cds::backoff::yield > + >::type + > tree_type; + + test_rcu(); + } + void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_gpb_base_less_pool() { typedef ci::EllenBinTree< rcu_type, key_type, base_value, diff --git a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_gpb_member.cpp b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_gpb_member.cpp index 1fdbebc9..93afb90c 100644 --- a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_gpb_member.cpp +++ b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_gpb_member.cpp @@ -118,7 +118,7 @@ namespace tree { test_rcu(); } - void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_gpb_member_cmp_ic_stat() + void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_gpb_member_cmp_ic_stat() { typedef ci::EllenBinTree< rcu_type, key_type, member_value, ci::ellen_bintree::make_traits< @@ -134,6 +134,23 @@ namespace tree { test_rcu(); } + void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_gpb_member_cmp_ic_stat_yield() + { + typedef ci::EllenBinTree< rcu_type, key_type, member_value, + ci::ellen_bintree::make_traits< + member_hook + ,ci::ellen_bintree::key_extractor< key_extractor< member_value > > + ,co::compare< compare< member_value > > + ,ci::opt::disposer< disposer< member_value > > + ,co::item_counter< cds::atomicity::item_counter > + ,co::stat< ci::ellen_bintree::stat<> > + , co::back_off< cds::backoff::yield > + >::type + > tree_type; + + test_rcu(); + } + void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_gpb_member_less_pool() { typedef ci::EllenBinTree< rcu_type, key_type, member_value, diff --git a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_gpi.cpp b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_gpi.cpp index ddd379a1..143ebb3b 100644 --- a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_gpi.cpp +++ b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_gpi.cpp @@ -116,7 +116,7 @@ namespace tree { test_rcu(); } - void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_gpi_base_cmp_ic_stat() + void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_gpi_base_cmp_ic_stat() { typedef ci::EllenBinTree< rcu_type, key_type, base_value, ci::ellen_bintree::make_traits< @@ -132,6 +132,23 @@ namespace tree { test_rcu(); } + void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_gpi_base_cmp_ic_stat_yield() + { + typedef ci::EllenBinTree< rcu_type, key_type, base_value, + ci::ellen_bintree::make_traits< + ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< rcu_type > > > + ,ci::ellen_bintree::key_extractor< key_extractor< base_value > > + ,co::compare< compare< base_value > > + ,ci::opt::disposer< disposer< base_value > > + ,co::item_counter< cds::atomicity::item_counter > + ,co::stat< ci::ellen_bintree::stat<> > + , co::back_off< cds::backoff::yield > + >::type + > tree_type; + + test_rcu(); + } + void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_gpi_base_less_pool() { typedef ci::EllenBinTree< rcu_type, key_type, base_value, diff --git a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_gpi_member.cpp b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_gpi_member.cpp index e9651a1d..44751912 100644 --- a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_gpi_member.cpp +++ b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_gpi_member.cpp @@ -118,7 +118,7 @@ namespace tree { test_rcu(); } - void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_gpi_member_cmp_ic_stat() + void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_gpi_member_cmp_ic_stat() { typedef ci::EllenBinTree< rcu_type, key_type, member_value, ci::ellen_bintree::make_traits< @@ -134,6 +134,23 @@ namespace tree { test_rcu(); } + void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_gpi_member_cmp_ic_stat_yield() + { + typedef ci::EllenBinTree< rcu_type, key_type, member_value, + ci::ellen_bintree::make_traits< + member_hook + ,ci::ellen_bintree::key_extractor< key_extractor< member_value > > + ,co::compare< compare< member_value > > + ,ci::opt::disposer< disposer< member_value > > + ,co::item_counter< cds::atomicity::item_counter > + ,co::stat< ci::ellen_bintree::stat<> > + , co::back_off< cds::backoff::yield > + >::type + > tree_type; + + test_rcu(); + } + void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_gpi_member_less_pool() { typedef ci::EllenBinTree< rcu_type, key_type, member_value, diff --git a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_gpt.cpp b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_gpt.cpp index d11b4ebc..1512deee 100644 --- a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_gpt.cpp +++ b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_gpt.cpp @@ -116,7 +116,7 @@ namespace tree { test_rcu(); } - void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_gpt_base_cmp_ic_stat() + void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_gpt_base_cmp_ic_stat() { typedef ci::EllenBinTree< rcu_type, key_type, base_value, ci::ellen_bintree::make_traits< @@ -132,6 +132,23 @@ namespace tree { test_rcu(); } + void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_gpt_base_cmp_ic_stat_yield() + { + typedef ci::EllenBinTree< rcu_type, key_type, base_value, + ci::ellen_bintree::make_traits< + ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< rcu_type > > > + ,ci::ellen_bintree::key_extractor< key_extractor< base_value > > + ,co::compare< compare< base_value > > + ,ci::opt::disposer< disposer< base_value > > + ,co::item_counter< cds::atomicity::item_counter > + ,co::stat< ci::ellen_bintree::stat<> > + , co::back_off< cds::backoff::yield > + >::type + > tree_type; + + test_rcu(); + } + void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_gpt_base_less_pool() { typedef ci::EllenBinTree< rcu_type, key_type, base_value, diff --git a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_gpt_member.cpp b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_gpt_member.cpp index f0488f8a..9791a1a4 100644 --- a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_gpt_member.cpp +++ b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_gpt_member.cpp @@ -118,7 +118,7 @@ namespace tree { test_rcu(); } - void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_gpt_member_cmp_ic_stat() + void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_gpt_member_cmp_ic_stat() { typedef ci::EllenBinTree< rcu_type, key_type, member_value, ci::ellen_bintree::make_traits< @@ -134,6 +134,23 @@ namespace tree { test_rcu(); } + void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_gpt_member_cmp_ic_stat_yield() + { + typedef ci::EllenBinTree< rcu_type, key_type, member_value, + ci::ellen_bintree::make_traits< + member_hook + ,ci::ellen_bintree::key_extractor< key_extractor< member_value > > + ,co::compare< compare< member_value > > + ,ci::opt::disposer< disposer< member_value > > + ,co::item_counter< cds::atomicity::item_counter > + ,co::stat< ci::ellen_bintree::stat<> > + , co::back_off< cds::backoff::yield > + >::type + > tree_type; + + test_rcu(); + } + void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_gpt_member_less_pool() { typedef ci::EllenBinTree< rcu_type, key_type, member_value, diff --git a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_shb.cpp b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_shb.cpp index 87b7fcc3..0b00de15 100644 --- a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_shb.cpp +++ b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_shb.cpp @@ -148,6 +148,25 @@ namespace tree { #endif } + void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_shb_base_cmp_ic_stat_yield() + { +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef ci::EllenBinTree< rcu_type, key_type, base_value, + ci::ellen_bintree::make_traits< + ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< rcu_type > > > + ,ci::ellen_bintree::key_extractor< key_extractor< base_value > > + ,co::compare< compare< base_value > > + ,ci::opt::disposer< disposer< base_value > > + ,co::item_counter< cds::atomicity::item_counter > + ,co::stat< ci::ellen_bintree::stat<> > + ,co::back_off< cds::backoff::yield > + >::type + > tree_type; + + test_rcu(); +#endif + } + void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_shb_base_less_pool() { #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED diff --git a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_shb_member.cpp b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_shb_member.cpp index d6e5f641..0b105260 100644 --- a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_shb_member.cpp +++ b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_shb_member.cpp @@ -150,6 +150,25 @@ namespace tree { #endif } + void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_shb_member_cmp_ic_stat_yield() + { +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef ci::EllenBinTree< rcu_type, key_type, member_value, + ci::ellen_bintree::make_traits< + member_hook + ,ci::ellen_bintree::key_extractor< key_extractor< member_value > > + ,co::compare< compare< member_value > > + ,ci::opt::disposer< disposer< member_value > > + ,co::item_counter< cds::atomicity::item_counter > + ,co::stat< ci::ellen_bintree::stat<> > + ,co::back_off< cds::backoff::yield > + >::type + > tree_type; + + test_rcu(); +#endif + } + void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_shb_member_less_pool() { #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED diff --git a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_sht.cpp b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_sht.cpp index bd2a5791..d8b5e79f 100644 --- a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_sht.cpp +++ b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_sht.cpp @@ -148,6 +148,25 @@ namespace tree { #endif } + void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_sht_base_cmp_ic_stat_yield() + { +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef ci::EllenBinTree< rcu_type, key_type, base_value, + ci::ellen_bintree::make_traits< + ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< rcu_type > > > + ,ci::ellen_bintree::key_extractor< key_extractor< base_value > > + ,co::compare< compare< base_value > > + ,ci::opt::disposer< disposer< base_value > > + ,co::item_counter< cds::atomicity::item_counter > + ,co::stat< ci::ellen_bintree::stat<> > + ,co::back_off< cds::backoff::yield > + >::type + > tree_type; + + test_rcu(); +#endif + } + void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_sht_base_less_pool() { #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED diff --git a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_sht_member.cpp b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_sht_member.cpp index c9684268..8dcbfba9 100644 --- a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_sht_member.cpp +++ b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_sht_member.cpp @@ -151,6 +151,25 @@ namespace tree { #endif } + void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_sht_member_cmp_ic_stat_yield() + { +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef ci::EllenBinTree< rcu_type, key_type, member_value, + ci::ellen_bintree::make_traits< + member_hook + ,ci::ellen_bintree::key_extractor< key_extractor< member_value > > + ,co::compare< compare< member_value > > + ,ci::opt::disposer< disposer< member_value > > + ,co::item_counter< cds::atomicity::item_counter > + ,co::stat< ci::ellen_bintree::stat<> > + ,co::back_off< cds::backoff::yield > + >::type + > tree_type; + + test_rcu(); +#endif + } + void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_sht_member_less_pool() { #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED diff --git a/tests/unit/map2/map_defs.h b/tests/unit/map2/map_defs.h index a9c2f028..46577d8d 100644 --- a/tests/unit/map2/map_defs.h +++ b/tests/unit/map2/map_defs.h @@ -403,12 +403,15 @@ TEST_MAP_EXTRACT(SplitList_Lazy_RCU_SHT_st_less_stat) #define CDSUNIT_DECLARE_EllenBinTreeMap \ TEST_MAP_NOLF_EXTRACT(EllenBinTreeMap_hp)\ + TEST_MAP_NOLF_EXTRACT(EllenBinTreeMap_hp_yield)\ TEST_MAP_NOLF_EXTRACT(EllenBinTreeMap_hp_stat)\ TEST_MAP_NOLF_EXTRACT(EllenBinTreeMap_dhp)\ + TEST_MAP_NOLF_EXTRACT(EllenBinTreeMap_dhp_yield)\ TEST_MAP_NOLF_EXTRACT(EllenBinTreeMap_dhp_stat)\ TEST_MAP_NOLF_EXTRACT(EllenBinTreeMap_rcu_gpi)\ TEST_MAP_NOLF_EXTRACT(EllenBinTreeMap_rcu_gpi_stat)\ TEST_MAP_NOLF_EXTRACT(EllenBinTreeMap_rcu_gpb)\ + TEST_MAP_NOLF_EXTRACT(EllenBinTreeMap_rcu_gpb_yield)\ TEST_MAP_NOLF_EXTRACT(EllenBinTreeMap_rcu_gpb_stat)\ TEST_MAP_NOLF_EXTRACT(EllenBinTreeMap_rcu_gpt)\ TEST_MAP_NOLF_EXTRACT(EllenBinTreeMap_rcu_gpt_stat)\ @@ -416,12 +419,15 @@ TEST_MAP_EXTRACT(SplitList_Lazy_RCU_SHT_st_less_stat) #define CDSUNIT_TEST_EllenBinTreeMap \ CPPUNIT_TEST(EllenBinTreeMap_hp)\ + CPPUNIT_TEST(EllenBinTreeMap_hp_yield)\ CPPUNIT_TEST(EllenBinTreeMap_hp_stat)\ CPPUNIT_TEST(EllenBinTreeMap_dhp)\ + CPPUNIT_TEST(EllenBinTreeMap_dhp_yield)\ CPPUNIT_TEST(EllenBinTreeMap_dhp_stat)\ CPPUNIT_TEST(EllenBinTreeMap_rcu_gpi)\ CPPUNIT_TEST(EllenBinTreeMap_rcu_gpi_stat)\ CPPUNIT_TEST(EllenBinTreeMap_rcu_gpb)\ + CPPUNIT_TEST(EllenBinTreeMap_rcu_gpb_yield)\ CPPUNIT_TEST(EllenBinTreeMap_rcu_gpb_stat)\ CPPUNIT_TEST(EllenBinTreeMap_rcu_gpt)\ CPPUNIT_TEST(EllenBinTreeMap_rcu_gpt_stat)\ diff --git a/tests/unit/map2/map_types.h b/tests/unit/map2/map_types.h index 58f8f4ab..c1762959 100644 --- a/tests/unit/map2/map_types.h +++ b/tests/unit/map2/map_types.h @@ -1639,6 +1639,26 @@ namespace map2 { typedef cc::EllenBinTreeMap< rcu_sht, Key, Value, traits_EllenBinTreeMap_sht >EllenBinTreeMap_rcu_sht; #endif + struct traits_EllenBinTreeMap_yield : public traits_EllenBinTreeMap + { + typedef cds::backoff::yield back_off; + }; + struct traits_EllenBinTreeMap_hp_yield : traits_EllenBinTreeMap_yield { + typedef cds::memory::pool_allocator< typename ellen_bintree_props::hp_gc::update_desc, ellen_bintree_pool::update_desc_pool_accessor > update_desc_allocator; + }; + typedef cc::EllenBinTreeMap< cds::gc::HP, Key, Value, traits_EllenBinTreeMap_hp_yield >EllenBinTreeMap_hp_yield; + + struct traits_EllenBinTreeMap_dhp_yield : traits_EllenBinTreeMap_yield { + typedef cds::memory::pool_allocator< typename ellen_bintree_props::dhp_gc::update_desc, ellen_bintree_pool::update_desc_pool_accessor > update_desc_allocator; + }; + typedef cc::EllenBinTreeMap< cds::gc::DHP, Key, Value, traits_EllenBinTreeMap_dhp_yield >EllenBinTreeMap_dhp_yield; + + struct traits_EllenBinTreeMap_gpb_yield : traits_EllenBinTreeMap_yield { + typedef cds::memory::pool_allocator< typename ellen_bintree_props::gpb::update_desc, ellen_bintree_pool::update_desc_pool_accessor > update_desc_allocator; + }; + typedef cc::EllenBinTreeMap< rcu_gpb, Key, Value, traits_EllenBinTreeMap_gpb_yield >EllenBinTreeMap_rcu_gpb_yield; + + struct traits_EllenBinTreeMap_stat: public cc::ellen_bintree::make_set_traits< co::less< less > ,cc::ellen_bintree::update_desc_allocator< diff --git a/tests/unit/set2/set_defs.h b/tests/unit/set2/set_defs.h index f0bb9d28..5eda5f71 100644 --- a/tests/unit/set2/set_defs.h +++ b/tests/unit/set2/set_defs.h @@ -415,12 +415,15 @@ #define CDSUNIT_DECLARE_EllenBinTreeSet \ TEST_SET_NOLF_EXTRACT(EllenBinTreeSet_hp)\ + TEST_SET_NOLF_EXTRACT(EllenBinTreeSet_yield_hp)\ TEST_SET_NOLF_EXTRACT(EllenBinTreeSet_hp_stat)\ TEST_SET_NOLF_EXTRACT(EllenBinTreeSet_dhp)\ + TEST_SET_NOLF_EXTRACT(EllenBinTreeSet_yield_dhp)\ TEST_SET_NOLF_EXTRACT(EllenBinTreeSet_dhp_stat)\ TEST_SET_NOLF_EXTRACT(EllenBinTreeSet_rcu_gpi)\ TEST_SET_NOLF_EXTRACT(EllenBinTreeSet_rcu_gpi_stat)\ TEST_SET_NOLF_EXTRACT(EllenBinTreeSet_rcu_gpb)\ + TEST_SET_NOLF_EXTRACT(EllenBinTreeSet_yield_rcu_gpb)\ TEST_SET_NOLF_EXTRACT(EllenBinTreeSet_rcu_gpb_stat)\ TEST_SET_NOLF_EXTRACT(EllenBinTreeSet_rcu_gpt)\ TEST_SET_NOLF_EXTRACT(EllenBinTreeSet_rcu_gpt_stat)\ @@ -428,12 +431,15 @@ #define CDSUNIT_TEST_EllenBinTreeSet \ CPPUNIT_TEST(EllenBinTreeSet_hp)\ + CPPUNIT_TEST(EllenBinTreeSet_yield_hp)\ CPPUNIT_TEST(EllenBinTreeSet_hp_stat)\ CPPUNIT_TEST(EllenBinTreeSet_dhp)\ + CPPUNIT_TEST(EllenBinTreeSet_yield_dhp)\ CPPUNIT_TEST(EllenBinTreeSet_dhp_stat)\ CPPUNIT_TEST(EllenBinTreeSet_rcu_gpi)\ /*CPPUNIT_TEST(EllenBinTreeSet_rcu_gpi_stat)*/\ CPPUNIT_TEST(EllenBinTreeSet_rcu_gpb)\ + CPPUNIT_TEST(EllenBinTreeSet_yield_rcu_gpb)\ CPPUNIT_TEST(EllenBinTreeSet_rcu_gpb_stat)\ CPPUNIT_TEST(EllenBinTreeSet_rcu_gpt)\ CPPUNIT_TEST(EllenBinTreeSet_rcu_gpt_stat)\ diff --git a/tests/unit/set2/set_types.h b/tests/unit/set2/set_types.h index d1e2aee4..340411b3 100644 --- a/tests/unit/set2/set_types.h +++ b/tests/unit/set2/set_types.h @@ -1628,6 +1628,32 @@ namespace set2 { typedef cc::EllenBinTreeSet< rcu_sht, key_type, key_val, traits_EllenBinTreeSet_sht > EllenBinTreeSet_rcu_sht; #endif + // + struct traits_EllenBinTreeSet_yield : public traits_EllenBinTreeSet + { + typedef cds::backoff::yield back_off; + }; + + struct traits_EllenBinTreeSet_yield_hp : public traits_EllenBinTreeSet_yield + { + typedef cds::memory::pool_allocator< typename ellen_bintree_props::hp_gc::update_desc, ellen_bintree_pool::update_desc_pool_accessor > update_desc_allocator; + }; + typedef cc::EllenBinTreeSet< cds::gc::HP, key_type, key_val, traits_EllenBinTreeSet_yield_hp > EllenBinTreeSet_yield_hp; + + struct traits_EllenBinTreeSet_yield_dhp : public traits_EllenBinTreeSet_yield + { + typedef cds::memory::pool_allocator< typename ellen_bintree_props::dhp_gc::update_desc, ellen_bintree_pool::update_desc_pool_accessor > update_desc_allocator; + }; + typedef cc::EllenBinTreeSet< cds::gc::DHP, key_type, key_val, traits_EllenBinTreeSet_yield_dhp > EllenBinTreeSet_yield_dhp; + + + struct traits_EllenBinTreeSet_yield_gpb : public traits_EllenBinTreeSet_yield + { + typedef cds::memory::pool_allocator< typename ellen_bintree_props::gpb::update_desc, ellen_bintree_pool::update_desc_pool_accessor > update_desc_allocator; + }; + typedef cc::EllenBinTreeSet< rcu_gpb, key_type, key_val, traits_EllenBinTreeSet_yield_gpb > EllenBinTreeSet_yield_rcu_gpb; + + struct traits_EllenBinTreeSet_stat: public cc::ellen_bintree::make_set_traits< cc::ellen_bintree::key_extractor< typename ellen_bintree_props::key_extractor > ,co::less< typename ellen_bintree_props::less > -- 2.34.1