3 #include "list/hdr_michael.h"
4 #include <cds/urcu/signal_threaded.h>
5 #include <cds/container/michael_list_rcu.h>
8 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
10 typedef cds::urcu::gc< cds::urcu::signal_threaded<> > rcu_type;
12 struct RCU_SHT_cmp_traits : public cc::michael_list::traits
14 typedef MichaelListTestHeader::cmp<MichaelListTestHeader::item> compare;
19 void MichaelListTestHeader::RCU_SHT_cmp()
21 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
22 // traits-based version
23 typedef cc::MichaelList< rcu_type, item, RCU_SHT_cmp_traits > list;
26 // option-based version
28 typedef cc::MichaelList< rcu_type, item,
29 cc::michael_list::make_traits<
30 cc::opt::compare< cmp<item> >
33 test_rcu< opt_list >();
37 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
39 struct RCU_SHT_less_traits: public cc::michael_list::traits
41 typedef MichaelListTestHeader::lt<MichaelListTestHeader::item> less;
45 void MichaelListTestHeader::RCU_SHT_less()
47 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
48 // traits-based version
49 typedef cc::MichaelList< rcu_type, item, RCU_SHT_less_traits > list;
52 // option-based version
54 typedef cc::MichaelList< rcu_type, item,
55 cc::michael_list::make_traits<
56 cc::opt::less< lt<item> >
59 test_rcu< opt_list >();
63 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
65 struct RCU_SHT_cmpmix_traits: public cc::michael_list::traits
67 typedef MichaelListTestHeader::cmp<MichaelListTestHeader::item> compare;
68 typedef MichaelListTestHeader::lt<MichaelListTestHeader::item> less;
72 void MichaelListTestHeader::RCU_SHT_cmpmix()
74 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
75 // traits-based version
76 typedef cc::MichaelList< rcu_type, item, RCU_SHT_cmpmix_traits > list;
79 // option-based version
81 typedef cc::MichaelList< rcu_type, item,
82 cc::michael_list::make_traits<
83 cc::opt::compare< cmp<item> >
84 ,cc::opt::less< lt<item> >
87 test_rcu< opt_list >();
91 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
93 struct RCU_SHT_ic_traits: public cc::michael_list::traits
95 typedef MichaelListTestHeader::lt<MichaelListTestHeader::item> less;
96 typedef cds::atomicity::item_counter item_counter;
100 void MichaelListTestHeader::RCU_SHT_ic()
102 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
103 // traits-based version
104 typedef cc::MichaelList< rcu_type, item, RCU_SHT_ic_traits > list;
107 // option-based version
109 typedef cc::MichaelList< rcu_type, item,
110 cc::michael_list::make_traits<
111 cc::opt::less< lt<item> >
112 ,cc::opt::item_counter< cds::atomicity::item_counter >
115 test_rcu< opt_list >();
119 } // namespace ordlist