/**
Selects appropriate ordered-list implementation for split-list.
Supported types are:
- - \p michael_list_tag - for MichaelList
- - \p lazy_list_tag - for LazyList
+ - \p michael_list_tag - for \p MichaelList
+ - \p lazy_list_tag - for \p LazyList
*/
typedef michael_list_tag ordered_list;
typedef typename base_class::exempt_ptr exempt_ptr; ///< pointer to extracted node
/// Group of \p extract_xxx functions require external locking if underlying ordered list requires that
static CDS_CONSTEXPR const bool c_bExtractLockExternal = base_class::c_bExtractLockExternal;
+ typedef typename base_class::raw_ptr raw_ptr; ///< type of \p get() return value
//@cond
typedef cds::container::split_list::implementation_tag implementation_tag;
unlinks it from the map, and returns \ref cds::urcu::exempt_ptr "exempt_ptr" pointer to the item found.
If the item with the key equal to \p key is not found the function returns an empty \p exempt_ptr.
- @note The function does NOT call RCU read-side lock or synchronization,
- and does NOT dispose the item found. It just excludes the item from the map
- and returns a pointer to item found.
- You should lock RCU before calling of the function, and you should synchronize RCU
- outside the RCU lock to free extracted item
+ Depends on ordered list you should or should not lock RCU before calling of this function:
+ - for the set based on \ref cds_intrusive_MichaelList_rcu "MichaelList" RCU should not be locked
+ - for the set based on \ref cds_intrusive_LazyList_rcu "LazyList" RCU should be locked
+ See ordered list implementation for details.
\code
typedef cds::urcu::gc< general_buffered<> > rcu;
+
+ // Split-list set based on MichaelList by default
typedef cds::container::SplitListMap< rcu, int, Foo > splitlist_map;
splitlist_map theMap;
// ...
typename splitlist_map::exempt_ptr p;
- {
- // first, we should lock RCU
- typename splitlist_map::rcu_lock lock;
- // Now, you can apply extract function
- // Note that you must not delete the item found inside the RCU lock
- p = theMap.extract( 10 )
- if ( p ) {
- // do something with p
- ...
- }
+ // For MichaelList we should not lock RCU
+
+ // Now, you can apply extract function
+ p = theMap.extract( 10 )
+ if ( p ) {
+ // do something with p
+ ...
}
// We may safely release p here
/// Finds \p key and return the item found
/** \anchor cds_intrusive_SplitListMap_rcu_get
The function searches the item with key equal to \p key and returns the pointer to item found.
- If \p key is not found it returns \p nullptr.
+ If \p key is not found it returns empty \p raw_ptr.
Note the compare functor should accept a parameter of type \p K that can be not the same as \p value_type.
// Lock RCU
typename splitlist_map::rcu_lock lock;
- typename splitlist_map::value_type * pVal = theMap.get( 5 );
+ typename splitlist_map::raw_ptr pVal = theMap.get( 5 );
if ( pVal ) {
// Deal with pVal
//...
\endcode
*/
template <typename K>
- value_type * get( K const& key )
+ raw_ptr get( K const& key )
{
return base_class::get( key );
}
\p pred must imply the same element order as the comparator used for building the map.
*/
template <typename K, typename Less>
- value_type * get_with( K const& key, Less pred )
+ raw_ptr get_with( K const& key, Less pred )
{
CDS_UNUSED( pred );
return base_class::get_with( key, cds::details::predicate_wrapper<value_type, Less, key_accessor>());
namespace cds { namespace container {
+ //@cond
+ namespace split_list { namespace details {
+
+ template <
+ typename T,
+ class OrdList,
+ typename OrdListTag
+ >
+ class make_raw_ptr;
+
+#ifdef CDSLIB_CONTAINER_DETAILS_MICHAEL_LIST_BASE_H
+ template <typename T, class RawPtr>
+ class make_raw_ptr< T, RawPtr, cds::container::michael_list_tag >
+ {
+ typedef RawPtr intrusive_raw_ptr;
+ typedef typename intrusive_raw_ptr::value_type node_type;
+ typedef T value_type;
+
+ struct raw_ptr_converter
+ {
+ value_type * operator()( node_type * p ) const
+ {
+ return p ? &p->m_Value : nullptr;
+ }
+
+ value_type& operator()( node_type& n ) const
+ {
+ return n.m_Value;
+ }
+
+ value_type const& operator()( node_type const& n ) const
+ {
+ return n.m_Value;
+ }
+ };
+ public:
+ typedef cds::urcu::raw_ptr_adaptor< value_type, intrusive_raw_ptr, raw_ptr_converter > raw_ptr;
+
+ static raw_ptr make( typename intrusive_raw_ptr&& p )
+ {
+ return raw_ptr(std::move( p ));
+ }
+ };
+#endif
+
+#ifdef CDSLIB_CONTAINER_DETAILS_LAZY_LIST_BASE_H
+ template <typename T, typename RawPtr>
+ class make_raw_ptr< T, RawPtr, cds::container::lazy_list_tag >
+ {
+ typedef RawPtr node_type_pointer;
+ typedef T value_type;
+
+ public:
+ typedef value_type * raw_ptr;
+
+ static raw_ptr make( node_type_pointer p )
+ {
+ return p ? &p->m_Value : nullptr;
+ }
+ };
+#endif
+ }} //namespace split_list::details
+ //@endcond
+
/// Split-ordered list set (template specialization for \ref cds_urcu_desc "RCU")
/** @ingroup cds_nonintrusive_set
\anchor cds_nonintrusive_SplitListSet_rcu
typedef T value_type; ///< Type of value to be storedin the set
typedef Traits traits; ///< \p Traits template argument
+ // Note: ordered_list is not real ordered list type. Actual type is base_class::ordered_list
typedef typename maker::ordered_list ordered_list; ///< Underlying ordered list class
typedef typename base_class::key_comparator key_comparator; ///< key compare functor
public:
/// pointer to extracted node
using exempt_ptr = cds::urcu::exempt_ptr< gc, node_type, value_type, typename maker::ordered_list_traits::disposer >;
+# ifdef CDS_DOXYGEN_INVOKED
+ /// pointer to the node for \p get() function
+ /**
+ For \p LazyList, \p %raw_ptr is just pointer to \p value_type.
+
+ For \p MichaelList, \p %raw_ptr is \p cds::urcu::raw_ptr object giving access to \p value_type.
+ */
+ typedef implementation_defined raw_ptr;
+# else
+ private:
+ typedef split_list::details::make_raw_ptr< value_type, typename base_class::ordered_list::raw_ptr, typename traits::ordered_list > raw_ptr_maker;
+ public:
+ typedef typename raw_ptr_maker::raw_ptr raw_ptr;
+#endif
protected:
//@cond
unlinks it from the set, and returns \ref cds::urcu::exempt_ptr "exempt_ptr" pointer to the item found.
If the item with the key equal to \p key is not found the function returns an empty \p exempt_ptr.
- @note The function does NOT call RCU read-side lock or synchronization,
- and does NOT dispose the item found. It just excludes the item from the set
- and returns a pointer to item found.
- You should lock RCU before calling of the function, and you should synchronize RCU
- outside the RCU lock to free extracted item
+ Depends on \p bucket_type you should or should not lock RCU before calling of this function:
+ - for the set based on \ref cds_intrusive_MichaelList_rcu "MichaelList" RCU should not be locked
+ - for the set based on \ref cds_intrusive_LazyList_rcu "LazyList" RCU should be locked
+ See ordered list implementation for details.
\code
typedef cds::urcu::gc< general_buffered<> > rcu;
+
+ // Split-list set based on MichaelList by default
typedef cds::container::SplitListSet< rcu, Foo > splitlist_set;
splitlist_set theSet;
// ...
splitlist_set::exempt_ptr p;
- {
- // first, we should lock RCU
- splitlist_set::rcu_lock lock;
- // Now, you can apply extract function
- // Note that you must not delete the item found inside the RCU lock
- p = theSet.extract( 10 );
- if ( p ) {
- // do something with p
- ...
- }
+ // For MichaelList we should not lock RCU
+
+ // Now, you can apply extract function
+ p = theSet.extract( 10 );
+ if ( p ) {
+ // do something with p
+ ...
}
// We may safely release p here
\endcode
*/
template <typename Q>
- value_type * get( Q const& key )
+ raw_ptr get( Q const& key )
{
- node_type * pNode = base_class::get( key );
- return pNode ? &pNode->m_Value : nullptr;
+ return raw_ptr_maker::make( base_class::get( key ));
}
/// Finds the key \p key and return the item found
\p pred must imply the same element order as the comparator used for building the set.
*/
template <typename Q, typename Less>
- value_type * get_with( Q const& key, Less pred )
+ raw_ptr get_with( Q const& key, Less pred )
{
CDS_UNUSED( pred );
- node_type * pNode = base_class::get_with( key, typename maker::template predicate_wrapper<Less>::type());
- return pNode ? &pNode->m_Value : nullptr;
+ return raw_ptr_maker::make( base_class::get_with( key, typename maker::template predicate_wrapper<Less>::type()));
}
/// Clears the set (not atomic)
typedef typename ordered_list::disposer disposer; ///< Node disposer functor
typedef typename ordered_list::rcu_lock rcu_lock; ///< RCU scoped lock
typedef typename ordered_list::exempt_ptr exempt_ptr; ///< pointer to extracted node
+ typedef typename ordered_list::raw_ptr raw_ptr; ///< pointer to the node for \p get() function
/// Group of \p extract_xxx functions require external locking if underlying ordered list requires that
static CDS_CONSTEXPR const bool c_bExtractLockExternal = ordered_list::c_bExtractLockExternal;
}
template <typename Q, typename Compare, typename Func>
- bool find_at( dummy_node_type * pHead, split_list::details::search_value_type<Q>& val, Compare cmp, Func f ) const
+ bool find_at( dummy_node_type * pHead, split_list::details::search_value_type<Q>& val, Compare cmp, Func f )
{
assert( pHead != nullptr );
bucket_head_type h(pHead);
}
template <typename Q, typename Compare>
- bool find_at( dummy_node_type * pHead, split_list::details::search_value_type<Q> const & val, Compare cmp ) const
+ bool find_at( dummy_node_type * pHead, split_list::details::search_value_type<Q> const & val, Compare cmp )
{
assert( pHead != nullptr );
bucket_head_type h(pHead);
}
template <typename Q, typename Compare>
- value_type * get_at( dummy_node_type * pHead, split_list::details::search_value_type<Q>& val, Compare cmp ) const
+ raw_ptr get_at( dummy_node_type * pHead, split_list::details::search_value_type<Q>& val, Compare cmp )
{
assert( pHead != nullptr );
bucket_head_type h(pHead);
}
template <typename Q, typename Compare>
- value_type * get_( Q const& val, Compare cmp )
+ raw_ptr get_( Q const& val, Compare cmp )
{
size_t nHash = hash_value( val );
split_list::details::search_value_type<Q const> sv( val, split_list::regular_hash( nHash ));
dummy_node_type * pHead = get_bucket( nHash );
assert( pHead != nullptr );
- value_type * p = m_List.get_at( pHead, sv, cmp );
- m_Stat.onFind( p != nullptr );
+ raw_ptr p = m_List.get_at( pHead, sv, cmp );
+ m_Stat.onFind( !!p );
return p;
}
unlinks it, and returns \ref cds::urcu::exempt_ptr "exempt_ptr" pointer to the item found.
If the item with the key equal to \p key is not found the function returns an empty \p exempt_ptr.
- @note The function does NOT call RCU read-side lock or synchronization,
- and does NOT dispose the item found. It just excludes the item from the set
- and returns a pointer to item found.
- You should lock RCU before calling of the function, and you should synchronize RCU
- outside the RCU lock before reusing returned pointer.
+ Depends on \p bucket_type you should or should not lock RCU before calling of this function:
+ - for the set based on \ref cds_intrusive_MichaelList_rcu "MichaelList" RCU should not be locked
+ - for the set based on \ref cds_intrusive_LazyList_rcu "LazyList" RCU should be locked
+ See ordered list implementation for details.
\code
typedef cds::urcu::gc< general_buffered<> > rcu;
// ...
rcu_splitlist_set::exempt_ptr p;
- {
- // first, we should lock RCU
- rcu_splitlist_set::rcu_lock lock;
-
- // Now, you can apply extract function
- // Note that you must not delete the item found inside the RCU lock
- p = theList.extract( 10 );
- if ( p ) {
- // do something with p
- ...
- }
+
+ // For MichaelList we should not lock RCU
+
+ // Now, you can apply extract function
+ // Note that you must not delete the item found inside the RCU lock
+ p = theList.extract( 10 );
+ if ( p ) {
+ // do something with p
+ ...
}
// We may safely release p here
RCU should be locked before call of this function.
Returned item is valid only while RCU is locked:
\code
- cds::intrusive::SplitListSet< your_template_parameters > theSet;
+ typedef cds::intrusive::SplitListSet< your_template_parameters > set_class;
+ set_class theSet;
// ...
+ typename set_class::raw_ptr rp;
{
// Lock RCU
hash_set::rcu_lock lock;
- foo * pVal = theSet.get( 5 );
- if ( pVal ) {
- // Deal with pVal
+ rp = theSet.get( 5 );
+ if ( rp ) {
+ // Deal with rp
//...
}
// Unlock RCU by rcu_lock destructor
- // pVal can be retired by disposer at any time after RCU has been unlocked
+ // rp can be retired by disposer at any time after RCU has been unlocked
}
\endcode
*/
template <typename Q>
- value_type * get( Q const& key )
+ raw_ptr get( Q const& key )
{
return get_( key, key_comparator() );
}
\p pred must imply the same element order as the comparator used for building the set.
*/
template <typename Q, typename Less>
- value_type * get_with( Q const& key, Less pred )
+ raw_ptr get_with( Q const& key, Less pred )
{
CDS_UNUSED( pred );
return get_( key, typename wrapped_ordered_list::template make_compare_from_less<Less>());
test_iter<Map>();
}
+ template <class Map>
+ void test_rcu_split_list()
+ {
+ test_rcu_michael_list<Map>();
+ }
+
template <class Map>
void test_int_with( Map& m )
{
{
// traits-based version
typedef cc::SplitListMap< rcu_type, key_type, value_type, RCU_GPB_cmp_traits > map_type;
- test_rcu< map_type >();
+ test_rcu_split_list< map_type >();
// option-based version
typedef cc::SplitListMap< rcu_type,
>
>::type
> opt_map;
- test_rcu< opt_map >();
+ test_rcu_split_list< opt_map >();
}
void HashMapHdrTest::Split_RCU_GPB_less()
{
// traits-based version
typedef cc::SplitListMap< rcu_type, key_type, value_type, RCU_GPB_less_traits > map_type;
- test_rcu< map_type >();
+ test_rcu_split_list< map_type >();
// option-based version
typedef cc::SplitListMap< rcu_type,
>
>::type
> opt_map;
- test_rcu< opt_map >();
+ test_rcu_split_list< opt_map >();
}
void HashMapHdrTest::Split_RCU_GPB_cmpmix()
{
// traits-based version
typedef cc::SplitListMap< rcu_type, key_type, value_type, RCU_cmpmix_traits > map_type;
- test_rcu< map_type >();
+ test_rcu_split_list< map_type >();
// option-based version
typedef cc::SplitListMap< rcu_type,
>
>::type
> opt_map;
- test_rcu< opt_map >();
+ test_rcu_split_list< opt_map >();
}
void HashMapHdrTest::Split_RCU_GPB_cmpmix_stat()
{
// traits-based version
typedef cc::SplitListMap< rcu_type, key_type, value_type, RCU_cmpmix_stat_traits > map_type;
- test_rcu< map_type >();
+ test_rcu_split_list< map_type >();
// option-based version
typedef cc::SplitListMap< rcu_type,
>
>::type
> opt_map;
- test_rcu< opt_map >();
+ test_rcu_split_list< opt_map >();
}
} // namespace map
{
// traits-based version
typedef cc::SplitListMap< rcu_type, key_type, value_type, RCU_GPI_cmp_traits > map_type;
- test_rcu< map_type >();
+ test_rcu_split_list< map_type >();
// option-based version
typedef cc::SplitListMap< rcu_type,
>
>::type
> opt_map;
- test_rcu< opt_map >();
+ test_rcu_split_list< opt_map >();
}
void HashMapHdrTest::Split_RCU_GPI_less()
{
// traits-based version
typedef cc::SplitListMap< rcu_type, key_type, value_type, RCU_GPI_less_traits > map_type;
- test_rcu< map_type >();
+ test_rcu_split_list< map_type >();
// option-based version
typedef cc::SplitListMap< rcu_type,
>
>::type
> opt_map;
- test_rcu< opt_map >();
+ test_rcu_split_list< opt_map >();
}
void HashMapHdrTest::Split_RCU_GPI_cmpmix()
{
// traits-based version
typedef cc::SplitListMap< rcu_type, key_type, value_type, RCU_cmpmix_traits > map_type;
- test_rcu< map_type >();
+ test_rcu_split_list< map_type >();
// option-based version
typedef cc::SplitListMap< rcu_type,
>
>::type
> opt_map;
- test_rcu< opt_map >();
+ test_rcu_split_list< opt_map >();
}
void HashMapHdrTest::Split_RCU_GPI_cmpmix_stat()
{
// traits-based version
typedef cc::SplitListMap< rcu_type, key_type, value_type, RCU_cmpmix_stat_traits > map_type;
- test_rcu< map_type >();
+ test_rcu_split_list< map_type >();
// option-based version
typedef cc::SplitListMap< rcu_type,
>
>::type
> opt_map;
- test_rcu< opt_map >();
+ test_rcu_split_list< opt_map >();
}
} // namespace map
{
// traits-based version
typedef cc::SplitListMap< rcu_type, key_type, value_type, RCU_GPT_cmp_traits > map_type;
- test_rcu< map_type >();
+ test_rcu_split_list< map_type >();
// option-based version
typedef cc::SplitListMap< rcu_type,
>
>::type
> opt_map;
- test_rcu< opt_map >();
+ test_rcu_split_list< opt_map >();
}
void HashMapHdrTest::Split_RCU_GPT_less()
{
// traits-based version
typedef cc::SplitListMap< rcu_type, key_type, value_type, RCU_GPT_less_traits > map_type;
- test_rcu< map_type >();
+ test_rcu_split_list< map_type >();
// option-based version
typedef cc::SplitListMap< rcu_type,
>
>::type
> opt_map;
- test_rcu< opt_map >();
+ test_rcu_split_list< opt_map >();
}
void HashMapHdrTest::Split_RCU_GPT_cmpmix()
{
// traits-based version
typedef cc::SplitListMap< rcu_type, key_type, value_type, RCU_cmpmix_traits > map_type;
- test_rcu< map_type >();
+ test_rcu_split_list< map_type >();
// option-based version
typedef cc::SplitListMap< rcu_type,
>
>::type
> opt_map;
- test_rcu< opt_map >();
+ test_rcu_split_list< opt_map >();
}
void HashMapHdrTest::Split_RCU_GPT_cmpmix_stat()
{
// traits-based version
typedef cc::SplitListMap< rcu_type, key_type, value_type, RCU_cmpmix_stat_traits > map_type;
- test_rcu< map_type >();
+ test_rcu_split_list< map_type >();
// option-based version
typedef cc::SplitListMap< rcu_type,
>
>::type
> opt_map;
- test_rcu< opt_map >();
+ test_rcu_split_list< opt_map >();
}
} // namespace map
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
// traits-based version
typedef cc::SplitListMap< rcu_type, key_type, value_type, RCU_SHB_cmp_traits > map_type;
- test_rcu< map_type >();
+ test_rcu_split_list< map_type >();
// option-based version
typedef cc::SplitListMap< rcu_type,
>
>::type
> opt_map;
- test_rcu< opt_map >();
+ test_rcu_split_list< opt_map >();
#endif
}
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
// traits-based version
typedef cc::SplitListMap< rcu_type, key_type, value_type, RCU_SHB_less_traits > map_type;
- test_rcu< map_type >();
+ test_rcu_split_list< map_type >();
// option-based version
typedef cc::SplitListMap< rcu_type,
>
>::type
> opt_map;
- test_rcu< opt_map >();
+ test_rcu_split_list< opt_map >();
#endif
}
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
// traits-based version
typedef cc::SplitListMap< rcu_type, key_type, value_type, RCU_cmpmix_traits > map_type;
- test_rcu< map_type >();
+ test_rcu_split_list< map_type >();
// option-based version
typedef cc::SplitListMap< rcu_type,
>
>::type
> opt_map;
- test_rcu< opt_map >();
+ test_rcu_split_list< opt_map >();
#endif
}
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
// traits-based version
typedef cc::SplitListMap< rcu_type, key_type, value_type, RCU_cmpmix_stat_traits > map_type;
- test_rcu< map_type >();
+ test_rcu_split_list< map_type >();
// option-based version
typedef cc::SplitListMap< rcu_type,
>
>::type
> opt_map;
- test_rcu< opt_map >();
+ test_rcu_split_list< opt_map >();
#endif
}
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
// traits-based version
typedef cc::SplitListMap< rcu_type, key_type, value_type, RCU_SHT_cmp_traits > map_type;
- test_rcu< map_type >();
+ test_rcu_split_list< map_type >();
// option-based version
typedef cc::SplitListMap< rcu_type,
>
>::type
> opt_map;
- test_rcu< opt_map >();
+ test_rcu_split_list< opt_map >();
#endif
}
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
// traits-based version
typedef cc::SplitListMap< rcu_type, key_type, value_type, RCU_SHT_less_traits > map_type;
- test_rcu< map_type >();
+ test_rcu_split_list< map_type >();
// option-based version
typedef cc::SplitListMap< rcu_type,
>
>::type
> opt_map;
- test_rcu< opt_map >();
+ test_rcu_split_list< opt_map >();
#endif
}
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
// traits-based version
typedef cc::SplitListMap< rcu_type, key_type, value_type, RCU_cmpmix_traits > map_type;
- test_rcu< map_type >();
+ test_rcu_split_list< map_type >();
// option-based version
typedef cc::SplitListMap< rcu_type,
>
>::type
> opt_map;
- test_rcu< opt_map >();
+ test_rcu_split_list< opt_map >();
#endif
}
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
// traits-based version
typedef cc::SplitListMap< rcu_type, key_type, value_type, RCU_cmpmix_stat_traits > map_type;
- test_rcu< map_type >();
+ test_rcu_split_list< map_type >();
// option-based version
typedef cc::SplitListMap< rcu_type,
>
>::type
> opt_map;
- test_rcu< opt_map >();
+ test_rcu_split_list< opt_map >();
#endif
}
CPPUNIT_ASSERT( s.insert( arrItems[i] ));
for ( size_t i = 0; i < nLimit; i += 2 ) {
- value_type * 1;
+ value_type * pVal;
int nKey = arr[i];
{
rcu_lock l;
> set;
static_assert(set::traits::dynamic_bucket_table, "Set has static bucket table");
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_dyn_RCU_GPB_base_less()
> set;
static_assert(set::traits::dynamic_bucket_table, "Set has static bucket table");
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_dyn_RCU_GPB_base_cmpmix()
> set;
static_assert(set::traits::dynamic_bucket_table, "Set has static bucket table");
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_dyn_RCU_GPB_base_cmpmix_stat()
static_assert(set::traits::dynamic_bucket_table, "Set has static bucket table");
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_dyn_RCU_GPB_member_cmp()
> set;
static_assert(set::traits::dynamic_bucket_table, "Set has static bucket table");
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_dyn_RCU_GPB_member_less()
> set;
static_assert(set::traits::dynamic_bucket_table, "Set has static bucket table");
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_dyn_RCU_GPB_member_cmpmix()
> set;
static_assert(set::traits::dynamic_bucket_table, "Set has static bucket table");
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_dyn_RCU_GPB_member_cmpmix_stat()
typedef ci::SplitListSet< rcu_type, ord_list, set_traits > set;
static_assert(set::traits::dynamic_bucket_table, "Set has static bucket table");
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
// Static bucket table
> set;
static_assert(!set::traits::dynamic_bucket_table, "Set has dynamic bucket table");
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_st_RCU_GPB_base_less()
> set;
static_assert(!set::traits::dynamic_bucket_table, "Set has dynamic bucket table");
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_st_RCU_GPB_base_cmpmix()
> set;
static_assert(!set::traits::dynamic_bucket_table, "Set has dynamic bucket table");
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_st_RCU_GPB_base_cmpmix_stat()
> set;
static_assert(!set::traits::dynamic_bucket_table, "Set has dynamic bucket table");
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_st_RCU_GPB_member_cmp()
> set;
static_assert(!set::traits::dynamic_bucket_table, "Set has dynamic bucket table");
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_st_RCU_GPB_member_less()
> set;
static_assert(!set::traits::dynamic_bucket_table, "Set has dynamic bucket table");
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_st_RCU_GPB_member_cmpmix()
> set;
static_assert(!set::traits::dynamic_bucket_table, "Set has dynamic bucket table");
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_st_RCU_GPB_member_cmpmix_stat()
> set;
static_assert(!set::traits::dynamic_bucket_table, "Set has dynamic bucket table");
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
} // namespace set
> set;
static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_dyn_RCU_GPI_base_less()
> set;
static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_dyn_RCU_GPI_base_cmpmix()
> set;
static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_dyn_RCU_GPI_member_cmp()
> set;
static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_dyn_RCU_GPI_member_less()
> set;
static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_dyn_RCU_GPI_member_cmpmix()
> set;
static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
> set;
static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_st_RCU_GPI_base_less()
> set;
static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_st_RCU_GPI_base_cmpmix()
> set;
static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_st_RCU_GPI_member_cmp()
> set;
static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_st_RCU_GPI_member_less()
> set;
static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_st_RCU_GPI_member_cmpmix()
> set;
static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_dyn_RCU_GPI_base_cmpmix_stat()
static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_dyn_RCU_GPI_member_cmpmix_stat()
typedef ci::SplitListSet< rcu_type, ord_list, set_traits > set;
static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_st_RCU_GPI_base_cmpmix_stat()
> set;
static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_st_RCU_GPI_member_cmpmix_stat()
> set;
static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
> set;
static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_dyn_RCU_GPT_base_less()
> set;
static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_dyn_RCU_GPT_base_cmpmix()
> set;
static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_dyn_RCU_GPT_member_cmp()
> set;
static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_dyn_RCU_GPT_member_less()
> set;
static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_dyn_RCU_GPT_member_cmpmix()
> set;
static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
> set;
static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_st_RCU_GPT_base_less()
> set;
static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_st_RCU_GPT_base_cmpmix()
> set;
static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_st_RCU_GPT_member_cmp()
> set;
static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_st_RCU_GPT_member_less()
> set;
static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_st_RCU_GPT_member_cmpmix()
> set;
static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_dyn_RCU_GPT_base_cmpmix_stat()
static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_dyn_RCU_GPT_member_cmpmix_stat()
typedef ci::SplitListSet< rcu_type, ord_list, set_traits > set;
static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_st_RCU_GPT_base_cmpmix_stat()
> set;
static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
void IntrusiveHashSetHdrTest::split_st_RCU_GPT_member_cmpmix_stat()
> set;
static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
}
> set;
static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
#endif
}
> set;
static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
#endif
}
> set;
static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
#endif
}
> set;
static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
#endif
}
> set;
static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
#endif
}
> set;
static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
#endif
}
> set;
static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
#endif
}
> set;
static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
#endif
}
> set;
static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
#endif
}
> set;
static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
#endif
}
> set;
static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
#endif
}
> set;
static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
#endif
}
static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
#endif
}
typedef ci::SplitListSet< rcu_type, ord_list, set_traits > set;
static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
#endif
}
> set;
static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
#endif
}
> set;
static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
#endif
}
> set;
static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
#endif
}
> set;
static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
#endif
}
> set;
static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
#endif
}
> set;
static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
#endif
}
> set;
static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
#endif
}
> set;
static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
#endif
}
> set;
static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
#endif
}
> set;
static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
#endif
}
> set;
static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
#endif
}
> set;
static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
#endif
}
> set;
static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
#endif
}
> set;
static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
#endif
}
static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
#endif
}
typedef ci::SplitListSet< rcu_type, ord_list, set_traits > set;
static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
#endif
}
> set;
static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
#endif
}
> set;
static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
- test_rcu_int<set>();
+ test_rcu_int_michael_list<set>();
#endif
}
// traits-based version
typedef cc::SplitListSet< rcu_type, item, RCU_GPB_cmp_traits > set;
- test_int_rcu< set >();
+ test_int_rcu_michael_list< set >();
// option-based version
typedef cc::SplitListSet< rcu_type, item,
>
>::type
> opt_set;
- test_int_rcu< opt_set >();
+ test_int_rcu_michael_list< opt_set >();
}
void HashSetHdrTest::Split_RCU_GPB_less()
// traits-based version
typedef cc::SplitListSet< rcu_type, item, RCU_GPB_less_traits > set;
- test_int_rcu< set >();
+ test_int_rcu_michael_list< set >();
// option-based version
typedef cc::SplitListSet< rcu_type, item,
>
>::type
> opt_set;
- test_int_rcu< opt_set >();
+ test_int_rcu_michael_list< opt_set >();
}
void HashSetHdrTest::Split_RCU_GPB_cmpmix()
{
// traits-based version
typedef cc::SplitListSet< rcu_type, item, RCU_cmpmix_traits > set;
- test_int_rcu< set >();
+ test_int_rcu_michael_list< set >();
// option-based version
typedef cc::SplitListSet< rcu_type, item,
>
>::type
> opt_set;
- test_int_rcu< opt_set >();
+ test_int_rcu_michael_list< opt_set >();
}
void HashSetHdrTest::Split_RCU_GPB_cmpmix_stat()
{
// traits-based version
typedef cc::SplitListSet< rcu_type, item, RCU_cmpmix_stat_traits > set;
- test_int_rcu< set >();
+ test_int_rcu_michael_list< set >();
// option-based version
typedef cc::SplitListSet< rcu_type, item,
, cc::opt::stat< cc::split_list::stat<>>
>::type
> opt_set;
- test_int_rcu< opt_set >();
+ test_int_rcu_michael_list< opt_set >();
}
} // namespace set
// traits-based version
typedef cc::SplitListSet< rcu_type, item, RCU_GPI_cmp_traits > set;
- test_int_rcu< set >();
+ test_int_rcu_michael_list< set >();
// option-based version
typedef cc::SplitListSet< rcu_type, item,
>
>::type
> opt_set;
- test_int_rcu< opt_set >();
+ test_int_rcu_michael_list< opt_set >();
}
void HashSetHdrTest::Split_RCU_GPI_less()
// traits-based version
typedef cc::SplitListSet< rcu_type, item, RCU_GPI_less_traits > set;
- test_int_rcu< set >();
+ test_int_rcu_michael_list< set >();
// option-based version
typedef cc::SplitListSet< rcu_type, item,
>
>::type
> opt_set;
- test_int_rcu< opt_set >();
+ test_int_rcu_michael_list< opt_set >();
}
void HashSetHdrTest::Split_RCU_GPI_cmpmix()
{
// traits-based version
typedef cc::SplitListSet< rcu_type, item, RCU_cmpmix_traits > set;
- test_int_rcu< set >();
+ test_int_rcu_michael_list< set >();
// option-based version
typedef cc::SplitListSet< rcu_type, item,
>
>::type
> opt_set;
- test_int_rcu< opt_set >();
+ test_int_rcu_michael_list< opt_set >();
}
void HashSetHdrTest::Split_RCU_GPI_cmpmix_stat()
{
// traits-based version
typedef cc::SplitListSet< rcu_type, item, RCU_cmpmix_stat_traits > set;
- test_int_rcu< set >();
+ test_int_rcu_michael_list< set >();
// option-based version
typedef cc::SplitListSet< rcu_type, item,
>
>::type
> opt_set;
- test_int_rcu< opt_set >();
+ test_int_rcu_michael_list< opt_set >();
}
} // namespace set
// traits-based version
typedef cc::SplitListSet< rcu_type, item, RCU_GPT_cmp_traits > set;
- test_int_rcu< set >();
+ test_int_rcu_michael_list< set >();
// option-based version
typedef cc::SplitListSet< rcu_type, item,
>
>::type
> opt_set;
- test_int_rcu< opt_set >();
+ test_int_rcu_michael_list< opt_set >();
}
void HashSetHdrTest::Split_RCU_GPT_less()
// traits-based version
typedef cc::SplitListSet< rcu_type, item, RCU_GPT_less_traits > set;
- test_int_rcu< set >();
+ test_int_rcu_michael_list< set >();
// option-based version
typedef cc::SplitListSet< rcu_type, item,
>
>::type
> opt_set;
- test_int_rcu< opt_set >();
+ test_int_rcu_michael_list< opt_set >();
}
void HashSetHdrTest::Split_RCU_GPT_cmpmix()
{
// traits-based version
typedef cc::SplitListSet< rcu_type, item, RCU_cmpmix_traits > set;
- test_int_rcu< set >();
+ test_int_rcu_michael_list< set >();
// option-based version
typedef cc::SplitListSet< rcu_type, item,
>
>::type
> opt_set;
- test_int_rcu< opt_set >();
+ test_int_rcu_michael_list< opt_set >();
}
void HashSetHdrTest::Split_RCU_GPT_cmpmix_stat()
{
// traits-based version
typedef cc::SplitListSet< rcu_type, item, RCU_cmpmix_stat_traits > set;
- test_int_rcu< set >();
+ test_int_rcu_michael_list< set >();
// option-based version
typedef cc::SplitListSet< rcu_type, item,
>
>::type
> opt_set;
- test_int_rcu< opt_set >();
+ test_int_rcu_michael_list< opt_set >();
}
} // namespace set
// traits-based version
typedef cc::SplitListSet< rcu_type, item, RCU_SHB_cmp_traits > set;
- test_int_rcu< set >();
+ test_int_rcu_michael_list< set >();
// option-based version
typedef cc::SplitListSet< rcu_type, item,
>
>::type
> opt_set;
- test_int_rcu< opt_set >();
+ test_int_rcu_michael_list< opt_set >();
#endif
}
// traits-based version
typedef cc::SplitListSet< rcu_type, item, RCU_SHB_less_traits > set;
- test_int_rcu< set >();
+ test_int_rcu_michael_list< set >();
// option-based version
typedef cc::SplitListSet< rcu_type, item,
>
>::type
> opt_set;
- test_int_rcu< opt_set >();
+ test_int_rcu_michael_list< opt_set >();
#endif
}
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
// traits-based version
typedef cc::SplitListSet< rcu_type, item, RCU_cmpmix_traits > set;
- test_int_rcu< set >();
+ test_int_rcu_michael_list< set >();
// option-based version
typedef cc::SplitListSet< rcu_type, item,
>
>::type
> opt_set;
- test_int_rcu< opt_set >();
+ test_int_rcu_michael_list< opt_set >();
#endif
}
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
// traits-based version
typedef cc::SplitListSet< rcu_type, item, RCU_cmpmix_stat_traits > set;
- test_int_rcu< set >();
+ test_int_rcu_michael_list< set >();
// option-based version
typedef cc::SplitListSet< rcu_type, item,
,cc::opt::stat< cc::split_list::stat<>>
>::type
> opt_set;
- test_int_rcu< opt_set >();
+ test_int_rcu_michael_list< opt_set >();
#endif
}
// traits-based version
typedef cc::SplitListSet< rcu_type, item, RCU_SHT_cmp_traits > set;
- test_int_rcu< set >();
+ test_int_rcu_michael_list< set >();
// option-based version
typedef cc::SplitListSet< rcu_type, item,
>
>::type
> opt_set;
- test_int_rcu< opt_set >();
+ test_int_rcu_michael_list< opt_set >();
#endif
}
// traits-based version
typedef cc::SplitListSet< rcu_type, item, RCU_SHT_less_traits > set;
- test_int_rcu< set >();
+ test_int_rcu_michael_list< set >();
// option-based version
typedef cc::SplitListSet< rcu_type, item,
>
>::type
> opt_set;
- test_int_rcu< opt_set >();
+ test_int_rcu_michael_list< opt_set >();
#endif
}
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
// traits-based version
typedef cc::SplitListSet< rcu_type, item, RCU_cmpmix_traits > set;
- test_int_rcu< set >();
+ test_int_rcu_michael_list< set >();
// option-based version
typedef cc::SplitListSet< rcu_type, item,
>
>::type
> opt_set;
- test_int_rcu< opt_set >();
+ test_int_rcu_michael_list< opt_set >();
#endif
}
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
// traits-based version
typedef cc::SplitListSet< rcu_type, item, RCU_cmpmix_stat_traits > set;
- test_int_rcu< set >();
+ test_int_rcu_michael_list< set >();
// option-based version
typedef cc::SplitListSet< rcu_type, item,
>
>::type
> opt_set;
- test_int_rcu< opt_set >();
+ test_int_rcu_michael_list< opt_set >();
#endif
}