*/
typedef empty_stat stat;
+ /// Back-off strategy
+ typedef cds::backoff::empty back_off;
+
/// RCU deadlock checking policy (only for RCU-based EllenBinTree<i>XXX</i> classes)
/**
List of available options see \p opt::rcu_check_deadlock
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.
*/
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.
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
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
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
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
#include <cds/urcu/options.h>
#include <cds/details/marked_ptr.h>
#include <cds/details/allocator.h>
+#include <cds/algo/backoff_strategy.h>
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
- \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 <typename... Options>
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
unique_internal_node_ptr pNewInternal;
retired_list updRetire;
+ back_off bkoff;
{
rcu_lock l;
}
}
+ bkoff();
m_Stat.onInsertRetry();
}
}
unique_internal_node_ptr pNewInternal;
retired_list updRetire;
+ back_off bkoff;
{
rcu_lock l;
break;
}
}
+
+ bkoff();
m_Stat.onEnsureRetry();
}
}
retired_list updRetire;
update_desc * pOp = nullptr;
search_result res;
+ back_off bkoff;
{
rcu_lock l;
}
}
+ bkoff();
m_Stat.onEraseRetry();
}
}
retired_list updRetire;
update_desc * pOp = nullptr;
search_result res;
+ back_off bkoff;
{
rcu_lock l;
}
}
+ bkoff();
m_Stat.onEraseRetry();
}
}
retired_list updRetire;
update_desc * pOp = nullptr;
search_result res;
+ back_off bkoff;
{
rcu_lock l;
}
}
}
+
+ bkoff();
m_Stat.onExtractMaxRetry();
}
}
retired_list updRetire;
update_desc * pOp = nullptr;
search_result res;
+ back_off bkoff;
{
rcu_lock l;
}
}
+ bkoff();
m_Stat.onExtractMinRetry();
}
}
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
guardInsert.assign( &val );
unique_internal_node_ptr pNewInternal;
-
search_result res;
+ back_off bkoff;
+
for ( ;; ) {
if ( search( res, val, node_compare() )) {
if ( pNewInternal.get() )
}
}
+ bkoff();
m_Stat.onInsertRetry();
}
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 );
break;
}
}
+
+ bkoff();
m_Stat.onEnsureRetry();
}
return true;
}
+ /*
void help( update_ptr pUpdate )
{
// pUpdate must be guarded!
break;
}
}
+ */
void help_insert( update_desc * pOp )
{
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 );
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<tree_node *>(res.pLeaf), memory_model::memory_order_relaxed );
pNewInternal->m_pRight.store( static_cast<tree_node *>(pNewLeaf), memory_model::memory_order_release );
- assert( !res.pLeaf->infinite_key());
+ assert( !res.pLeaf->infinite_key() );
}
typename gc::Guard guard;
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 );
free_update_desc( pOp );
}
}
+
return false;
}
{
update_desc * pOp = nullptr;
search_result res;
+ back_off bkoff;
for ( ;; ) {
if ( !search( res, val, cmp ) || !eq( val, *res.pLeaf ) ) {
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;
}
}
+ bkoff();
m_Stat.onEraseRetry();
}
{
update_desc * pOp = nullptr;
search_result res;
+ back_off bkoff;
for ( ;; ) {
if ( !search_max( res )) {
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 ) ) {
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();
}
{
update_desc * pOp = nullptr;
search_result res;
+ back_off bkoff;
for ( ;; ) {
if ( !search_min( res )) {
}
}
+ bkoff();
m_Stat.onExtractMinRetry();
}
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();
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();
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();
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();
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();
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();
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();
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)
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)
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)
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)
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)
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)
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()
test<set_type, print_stat>();
}
+ 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<set_type, print_stat>();
+ }
+
void EllenBinTreeMapHdrTest::EllenBinTree_dhp_less_pool()
{
typedef cc::EllenBinTreeMap< gc_type, key_type, value_type,
test<set_type, print_stat>();
}
+ 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<set_type, print_stat>();
+ }
+
void EllenBinTreeMapHdrTest::EllenBinTree_hp_less_pool()
{
typedef cc::EllenBinTreeMap< gc_type, key_type, value_type,
test_rcu<map_type, print_stat>();
}
+ 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<map_type, print_stat>();
+ }
+
void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpb_less_pool()
{
typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
test_rcu<set_type, print_stat>();
}
+ 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<set_type, print_stat>();
+ }
+
void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpi_less_pool()
{
typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
test_rcu<set_type, print_stat>();
}
+ 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<set_type, print_stat>();
+ }
+
void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpt_less_pool()
{
typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
#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<set_type, print_stat>();
+#endif
+ }
+
void EllenBinTreeMapHdrTest::EllenBinTree_rcu_shb_less_pool()
{
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
#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<set_type, print_stat>();
+#endif
+ }
+
void EllenBinTreeMapHdrTest::EllenBinTree_rcu_sht_less_pool()
{
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
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();
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_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_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();
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();
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();
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();
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)
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)
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)
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)
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)
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)
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()
test<set_type, print_stat>();
}
+ 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<set_type, print_stat>();
+ }
+
void EllenBinTreeSetHdrTest::EllenBinTree_dhp_less_pool()
{
typedef cc::EllenBinTreeSet< gc_type, key_type, value_type,
test<set_type, print_stat>();
}
+ 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<set_type, print_stat>();
+ }
+
void EllenBinTreeSetHdrTest::EllenBinTree_hp_less_pool()
{
typedef cc::EllenBinTreeSet< gc_type, key_type, value_type,
test_rcu<set_type, print_stat>();
}
+ 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<set_type, print_stat>();
+ }
+
void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpb_less_pool()
{
typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
test_rcu<set_type, print_stat>();
}
+ 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<set_type, print_stat>();
+ }
+
void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpi_less_pool()
{
typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
test_rcu<set_type, print_stat>();
}
+ 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<set_type, print_stat>();
+ }
+
void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpt_less_pool()
{
typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
#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<set_type, print_stat>();
+#endif
+ }
+
void EllenBinTreeSetHdrTest::EllenBinTree_rcu_shb_less_pool()
{
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
#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<set_type, print_stat>();
+#endif
+ }
+
void EllenBinTreeSetHdrTest::EllenBinTree_rcu_sht_less_pool()
{
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
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();
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();
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();
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();
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();
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();
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();
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();
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();
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();
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();
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();
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();
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();
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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()
test<tree_type, print_stat>();
}
- 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<
test<tree_type, print_stat>();
}
+ 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<tree_type, print_stat>();
+ }
+
void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_less_pool()
{
typedef ci::EllenBinTree< cds::gc::DHP, key_type, base_value,
test<tree_type, print_stat>();
}
- 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<
test<tree_type, print_stat>();
}
+ 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<tree_type, print_stat>();
+ }
+
void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_member_less_pool()
{
typedef ci::EllenBinTree< cds::gc::DHP, key_type, member_value,
test<tree_type, print_stat>();
}
- 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<
test<tree_type, print_stat>();
}
+ 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<tree_type, print_stat>();
+ }
+
void IntrusiveBinTreeHdrTest::EllenBinTree_hp_base_less_pool()
{
typedef ci::EllenBinTree< cds::gc::HP, key_type, base_value,
test<tree_type, print_stat>();
}
- 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<
test<tree_type, print_stat>();
}
+ 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<tree_type, print_stat>();
+ }
+
void IntrusiveBinTreeHdrTest::EllenBinTree_hp_member_less_pool()
{
typedef ci::EllenBinTree< cds::gc::HP, key_type, member_value,
test_rcu<tree_type, print_stat>();
}
- 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<
test_rcu<tree_type, print_stat>();
}
+ 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<tree_type, print_stat>();
+ }
+
void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_gpb_base_less_pool()
{
typedef ci::EllenBinTree< rcu_type, key_type, base_value,
test_rcu<tree_type, print_stat>();
}
- 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<
test_rcu<tree_type, print_stat>();
}
+ 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<tree_type, print_stat>();
+ }
+
void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_gpb_member_less_pool()
{
typedef ci::EllenBinTree< rcu_type, key_type, member_value,
test_rcu<tree_type, print_stat>();
}
- 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<
test_rcu<tree_type, print_stat>();
}
+ 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<tree_type, print_stat>();
+ }
+
void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_gpi_base_less_pool()
{
typedef ci::EllenBinTree< rcu_type, key_type, base_value,
test_rcu<tree_type, print_stat>();
}
- 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<
test_rcu<tree_type, print_stat>();
}
+ 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<tree_type, print_stat>();
+ }
+
void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_gpi_member_less_pool()
{
typedef ci::EllenBinTree< rcu_type, key_type, member_value,
test_rcu<tree_type, print_stat>();
}
- 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<
test_rcu<tree_type, print_stat>();
}
+ 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<tree_type, print_stat>();
+ }
+
void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_gpt_base_less_pool()
{
typedef ci::EllenBinTree< rcu_type, key_type, base_value,
test_rcu<tree_type, print_stat>();
}
- 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<
test_rcu<tree_type, print_stat>();
}
+ 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<tree_type, print_stat>();
+ }
+
void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_gpt_member_less_pool()
{
typedef ci::EllenBinTree< rcu_type, key_type, member_value,
#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<tree_type, print_stat>();
+#endif
+ }
+
void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_shb_base_less_pool()
{
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
#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<tree_type, print_stat>();
+#endif
+ }
+
void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_shb_member_less_pool()
{
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
#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<tree_type, print_stat>();
+#endif
+ }
+
void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_sht_base_less_pool()
{
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
#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<tree_type, print_stat>();
+#endif
+ }
+
void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_sht_member_less_pool()
{
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
#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)\
#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)\
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<
#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)\
#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)\
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 >