Added MultiLevelHashSet<RCU> to the set MT tests
authorkhizmax <libcds.dev@gmail.com>
Tue, 6 Oct 2015 20:05:18 +0000 (23:05 +0300)
committerkhizmax <libcds.dev@gmail.com>
Tue, 6 Oct 2015 20:05:18 +0000 (23:05 +0300)
tests/unit/set2/set_defs.h
tests/unit/set2/set_type_multilevel_hashset.h

index 6933407d0d5f642bd78d22a135d793db47729d0a..9d3fbf291efca9c7b38e25347f576942ce1cad0c 100644 (file)
 // MultiLevelHashSet
 
 #undef CDSUNIT_DECLARE_MultiLevelHashSet64
+#undef CDSUNIT_DECLARE_MultiLevelHashSet64_RCU_signal
+#undef CDSUNIT_DECLARE_MultiLevelHashSet_RCU_signal
+
 #if CDS_BUILD_BITS == 64
 #   define CDSUNIT_DECLARE_MultiLevelHashSet64 \
         TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_hp_city64) \
         TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_hp_city128_stat) \
         TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_dhp_city128) \
         TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_dhp_city128_stat)
+
+#   ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+#       define CDSUNIT_DECLARE_MultiLevelHashSet64_RCU_signal \
+            TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_shb_city64) \
+            TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_shb_city64_stat) \
+            TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_sht_city64) \
+            TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_sht_city64_stat) \
+            TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_shb_city128) \
+            TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_shb_city128_stat) \
+            TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_sht_city128) \
+            TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_sht_city128_stat)
+#   else
+#       define CDSUNIT_DECLARE_MultiLevelHashSet64_RCU_signal
+#   endif
 #else
 #   define CDSUNIT_DECLARE_MultiLevelHashSet64
+#   define CDSUNIT_DECLARE_MultiLevelHashSet64_RCU_signal
+#endif
+
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+#   define CDSUNIT_DECLARE_MultiLevelHashSet_RCU_signal \
+    TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_shb_stdhash) \
+    TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_shb_stdhash_stat) \
+    TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_sht_stdhash) \
+    TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_sht_stdhash_stat) \
+    TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_shb_md5) \
+    TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_shb_md5_stat) \
+    TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_sht_md5) \
+    TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_sht_md5_stat) \
+    TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_shb_sha256) \
+    TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_shb_sha256_stat) \
+    TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_sht_sha256) \
+    TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_sht_sha256_stat) 
+#else
+#   define CDSUNIT_DECLARE_MultiLevelHashSet_RCU_signal
 #endif
 
+
+
 #undef CDSUNIT_DECLARE_MultiLevelHashSet
 #define CDSUNIT_DECLARE_MultiLevelHashSet  \
     TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_hp_stdhash) \
     TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_hp_stdhash_stat) \
     TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_dhp_stdhash) \
     TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_dhp_stdhash_stat) \
+    TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_gpi_stdhash) \
+    TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_gpi_stdhash_stat) \
+    TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_gpb_stdhash) \
+    TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_gpb_stdhash_stat) \
+    TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_gpt_stdhash) \
+    TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_gpt_stdhash_stat) \
     TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_hp_md5) \
     TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_hp_md5_stat) \
     TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_dhp_md5) \
     TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_dhp_md5_stat) \
+    TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_gpi_md5) \
+    TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_gpi_md5_stat) \
+    TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_gpb_md5) \
+    TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_gpb_md5_stat) \
+    TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_gpt_md5) \
+    TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_gpt_md5_stat) \
     TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_hp_sha256) \
     TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_hp_sha256_stat) \
     TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_dhp_sha256) \
     TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_dhp_sha256_stat) \
-    CDSUNIT_DECLARE_MultiLevelHashSet64
+    TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_gpi_sha256) \
+    TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_gpi_sha256_stat) \
+    TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_gpb_sha256) \
+    TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_gpb_sha256_stat) \
+    TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_gpt_sha256) \
+    TEST_CASE(tag_MultiLevelHashSet, MultiLevelHashSet_rcu_gpt_sha256_stat) \
+    CDSUNIT_DECLARE_MultiLevelHashSet_RCU_signal \
+    CDSUNIT_DECLARE_MultiLevelHashSet64 \
+    CDSUNIT_DECLARE_MultiLevelHashSet64_RCU_signal \
+
 
 #undef CDSUNIT_TEST_MultiLevelHashSet64
+#undef CDSUNIT_TEST_MultiLevelHashSet64_RCU_signal
+#undef CDSUNIT_TEST_MultiLevelHashSet_RCU_signal
+
 #if CDS_BUILD_BITS == 64
 #   define CDSUNIT_TEST_MultiLevelHashSet64 \
     CPPUNIT_TEST(MultiLevelHashSet_hp_city64) \
     CPPUNIT_TEST(MultiLevelHashSet_hp_city128_stat) \
     CPPUNIT_TEST(MultiLevelHashSet_dhp_city128) \
     CPPUNIT_TEST(MultiLevelHashSet_dhp_city128_stat)
+
+#   ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+#       define CDSUNIT_TEST_MultiLevelHashSet64_RCU_signal \
+            CPPUNIT_TEST(MultiLevelHashSet_rcu_shb_city64) \
+            CPPUNIT_TEST(MultiLevelHashSet_rcu_shb_city64_stat) \
+            CPPUNIT_TEST(MultiLevelHashSet_rcu_sht_city64) \
+            CPPUNIT_TEST(MultiLevelHashSet_rcu_sht_city64_stat) \
+            CPPUNIT_TEST(MultiLevelHashSet_rcu_shb_city128) \
+            CPPUNIT_TEST(MultiLevelHashSet_rcu_shb_city128_stat) \
+            CPPUNIT_TEST(MultiLevelHashSet_rcu_sht_city128) \
+            CPPUNIT_TEST(MultiLevelHashSet_rcu_sht_city128_stat)
+#   else
+#       define CDSUNIT_TEST_MultiLevelHashSet64_RCU_signal
+#   endif
+
 #else
 #   define CDSUNIT_TEST_MultiLevelHashSet64
+#   define CDSUNIT_TEST_MultiLevelHashSet64_RCU_signal
+#endif
+
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+#   define CDSUNIT_TEST_MultiLevelHashSet_RCU_signal \
+        CPPUNIT_TEST(MultiLevelHashSet_rcu_shb_stdhash) \
+        CPPUNIT_TEST(MultiLevelHashSet_rcu_shb_stdhash_stat) \
+        CPPUNIT_TEST(MultiLevelHashSet_rcu_sht_stdhash) \
+        CPPUNIT_TEST(MultiLevelHashSet_rcu_sht_stdhash_stat) \
+        CPPUNIT_TEST(MultiLevelHashSet_rcu_shb_md5) \
+        CPPUNIT_TEST(MultiLevelHashSet_rcu_shb_md5_stat) \
+        CPPUNIT_TEST(MultiLevelHashSet_rcu_sht_md5) \
+        CPPUNIT_TEST(MultiLevelHashSet_rcu_sht_md5_stat) \
+        CPPUNIT_TEST(MultiLevelHashSet_rcu_shb_sha256) \
+        CPPUNIT_TEST(MultiLevelHashSet_rcu_shb_sha256_stat) \
+        CPPUNIT_TEST(MultiLevelHashSet_rcu_sht_sha256) \
+        CPPUNIT_TEST(MultiLevelHashSet_rcu_sht_sha256_stat)
+#else
+#   define CDSUNIT_TEST_MultiLevelHashSet_RCU_signal
 #endif
 
 #undef CDSUNIT_TEST_MultiLevelHashSet
     CPPUNIT_TEST(MultiLevelHashSet_hp_stdhash_stat) \
     CPPUNIT_TEST(MultiLevelHashSet_dhp_stdhash) \
     CPPUNIT_TEST(MultiLevelHashSet_dhp_stdhash_stat) \
+    CPPUNIT_TEST(MultiLevelHashSet_rcu_gpi_stdhash) \
+    CPPUNIT_TEST(MultiLevelHashSet_rcu_gpi_stdhash_stat) \
+    CPPUNIT_TEST(MultiLevelHashSet_rcu_gpb_stdhash) \
+    CPPUNIT_TEST(MultiLevelHashSet_rcu_gpb_stdhash_stat) \
+    CPPUNIT_TEST(MultiLevelHashSet_rcu_gpt_stdhash) \
+    CPPUNIT_TEST(MultiLevelHashSet_rcu_gpt_stdhash_stat) \
     CPPUNIT_TEST(MultiLevelHashSet_hp_md5) \
     CPPUNIT_TEST(MultiLevelHashSet_hp_md5_stat) \
     CPPUNIT_TEST(MultiLevelHashSet_dhp_md5) \
     CPPUNIT_TEST(MultiLevelHashSet_dhp_md5_stat) \
+    CPPUNIT_TEST(MultiLevelHashSet_rcu_gpi_md5) \
+    CPPUNIT_TEST(MultiLevelHashSet_rcu_gpi_md5_stat) \
+    CPPUNIT_TEST(MultiLevelHashSet_rcu_gpb_md5) \
+    CPPUNIT_TEST(MultiLevelHashSet_rcu_gpb_md5_stat) \
+    CPPUNIT_TEST(MultiLevelHashSet_rcu_gpt_md5) \
+    CPPUNIT_TEST(MultiLevelHashSet_rcu_gpt_md5_stat) \
     CPPUNIT_TEST(MultiLevelHashSet_hp_sha256) \
     CPPUNIT_TEST(MultiLevelHashSet_hp_sha256_stat) \
     CPPUNIT_TEST(MultiLevelHashSet_dhp_sha256) \
     CPPUNIT_TEST(MultiLevelHashSet_dhp_sha256_stat) \
-    CDSUNIT_TEST_MultiLevelHashSet64
+    CPPUNIT_TEST(MultiLevelHashSet_rcu_gpi_sha256) \
+    CPPUNIT_TEST(MultiLevelHashSet_rcu_gpi_sha256_stat) \
+    CPPUNIT_TEST(MultiLevelHashSet_rcu_gpb_sha256) \
+    CPPUNIT_TEST(MultiLevelHashSet_rcu_gpb_sha256_stat) \
+    CPPUNIT_TEST(MultiLevelHashSet_rcu_gpt_sha256) \
+    CPPUNIT_TEST(MultiLevelHashSet_rcu_gpt_sha256_stat) \
+    CDSUNIT_TEST_MultiLevelHashSet_RCU_signal \
+    CDSUNIT_TEST_MultiLevelHashSet64 \
+    CDSUNIT_TEST_MultiLevelHashSet64_RCU_signal
index d35ae0e4574111136eb3e2f024b8a8edec93619d..6db4dc19c544d35f968913a979a326604ec14107 100644 (file)
@@ -3,8 +3,11 @@
 #ifndef CDSUNIT_SET_TYPE_MICHAEL_H
 #define CDSUNIT_SET_TYPE_MICHAEL_H
 
+#include "set2/set_type.h"
+
 #include <cds/container/multilevel_hashset_hp.h>
 #include <cds/container/multilevel_hashset_dhp.h>
+#include <cds/container/multilevel_hashset_rcu.h>
 
 #include "print_multilevel_hashset_stat.h"
 #include "hashing/hash_func.h"
@@ -15,9 +18,22 @@ namespace set2 {
     class MultiLevelHashSet : public cc::MultiLevelHashSet< GC, T, Traits >
     {
         typedef cc::MultiLevelHashSet< GC, T, Traits > base_class;
+
+        template <typename G>
+        struct get_extracted_ptr
+        {
+            typedef typename base_class::guarded_ptr extracted_ptr;
+        };
+
+        template <typename RCU>
+        struct get_extracted_ptr<cds::urcu::gc<RCU>>
+        {
+            typedef typename base_class::exempt_ptr extracted_ptr;
+        };
+
     public:
         typedef typename T::hasher hasher ;
-        typedef typename base_class::guarded_ptr guarded_ptr;
+        typedef typename get_extracted_ptr<GC>::extracted_ptr extracted_ptr;
 
         template <class Config>
         MultiLevelHashSet( Config const& cfg )
@@ -37,7 +53,7 @@ namespace set2 {
         }
 
         template <typename Q>
-        guarded_ptr extract(Q const& key)
+        extracted_ptr extract(Q const& key)
         {
             return base_class::extract( hasher()(key) );
         }
@@ -111,6 +127,13 @@ namespace set2 {
 
         typedef MultiLevelHashSet< cds::gc::HP,  key_val<std::hash<key_type>>, default_traits >    MultiLevelHashSet_hp_stdhash;
         typedef MultiLevelHashSet< cds::gc::DHP, key_val<std::hash<key_type>>, default_traits >    MultiLevelHashSet_dhp_stdhash;
+        typedef MultiLevelHashSet< rcu_gpi, key_val<std::hash<key_type>>, default_traits >    MultiLevelHashSet_rcu_gpi_stdhash;
+        typedef MultiLevelHashSet< rcu_gpb, key_val<std::hash<key_type>>, default_traits >    MultiLevelHashSet_rcu_gpb_stdhash;
+        typedef MultiLevelHashSet< rcu_gpt, key_val<std::hash<key_type>>, default_traits >    MultiLevelHashSet_rcu_gpt_stdhash;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef MultiLevelHashSet< rcu_shb, key_val<std::hash<key_type>>, default_traits >    MultiLevelHashSet_rcu_shb_stdhash;
+        typedef MultiLevelHashSet< rcu_sht, key_val<std::hash<key_type>>, default_traits >    MultiLevelHashSet_rcu_sht_stdhash;
+#endif
 
         struct traits_MultiLevelHashSet_stat: public cc::multilevel_hashset::make_traits<
                 co::type_traits< default_traits >,
@@ -120,10 +143,24 @@ namespace set2 {
 
         typedef MultiLevelHashSet< cds::gc::HP,  key_val<std::hash<key_type>>, traits_MultiLevelHashSet_stat >    MultiLevelHashSet_hp_stdhash_stat;
         typedef MultiLevelHashSet< cds::gc::DHP, key_val<std::hash<key_type>>, traits_MultiLevelHashSet_stat >    MultiLevelHashSet_dhp_stdhash_stat;
+        typedef MultiLevelHashSet< rcu_gpi, key_val<std::hash<key_type>>, traits_MultiLevelHashSet_stat >    MultiLevelHashSet_rcu_gpi_stdhash_stat;
+        typedef MultiLevelHashSet< rcu_gpb, key_val<std::hash<key_type>>, traits_MultiLevelHashSet_stat >    MultiLevelHashSet_rcu_gpb_stdhash_stat;
+        typedef MultiLevelHashSet< rcu_gpt, key_val<std::hash<key_type>>, traits_MultiLevelHashSet_stat >    MultiLevelHashSet_rcu_gpt_stdhash_stat;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef MultiLevelHashSet< rcu_shb, key_val<std::hash<key_type>>, traits_MultiLevelHashSet_stat >    MultiLevelHashSet_rcu_shb_stdhash_stat;
+        typedef MultiLevelHashSet< rcu_sht, key_val<std::hash<key_type>>, traits_MultiLevelHashSet_stat >    MultiLevelHashSet_rcu_sht_stdhash_stat;
+#endif
 
         // SHA256
         typedef MultiLevelHashSet< cds::gc::HP,  key_val<::hashing::sha256>, default_traits >    MultiLevelHashSet_hp_sha256;
         typedef MultiLevelHashSet< cds::gc::DHP, key_val<::hashing::sha256>, default_traits >    MultiLevelHashSet_dhp_sha256;
+        typedef MultiLevelHashSet< rcu_gpi, key_val<::hashing::sha256>, default_traits >    MultiLevelHashSet_rcu_gpi_sha256;
+        typedef MultiLevelHashSet< rcu_gpb, key_val<::hashing::sha256>, default_traits >    MultiLevelHashSet_rcu_gpb_sha256;
+        typedef MultiLevelHashSet< rcu_gpt, key_val<::hashing::sha256>, default_traits >    MultiLevelHashSet_rcu_gpt_sha256;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef MultiLevelHashSet< rcu_shb, key_val<::hashing::sha256>, default_traits >    MultiLevelHashSet_rcu_shb_sha256;
+        typedef MultiLevelHashSet< rcu_sht, key_val<::hashing::sha256>, default_traits >    MultiLevelHashSet_rcu_sht_sha256;
+#endif
 
         struct traits_MultiLevelHashSet_sha256_stat : public default_traits
         {
@@ -131,10 +168,24 @@ namespace set2 {
         };
         typedef MultiLevelHashSet< cds::gc::HP,  key_val<::hashing::sha256>, traits_MultiLevelHashSet_sha256_stat >    MultiLevelHashSet_hp_sha256_stat;
         typedef MultiLevelHashSet< cds::gc::DHP, key_val<::hashing::sha256>, traits_MultiLevelHashSet_sha256_stat >    MultiLevelHashSet_dhp_sha256_stat;
+        typedef MultiLevelHashSet< rcu_gpi, key_val<::hashing::sha256>, traits_MultiLevelHashSet_sha256_stat >    MultiLevelHashSet_rcu_gpi_sha256_stat;
+        typedef MultiLevelHashSet< rcu_gpb, key_val<::hashing::sha256>, traits_MultiLevelHashSet_sha256_stat >    MultiLevelHashSet_rcu_gpb_sha256_stat;
+        typedef MultiLevelHashSet< rcu_gpt, key_val<::hashing::sha256>, traits_MultiLevelHashSet_sha256_stat >    MultiLevelHashSet_rcu_gpt_sha256_stat;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef MultiLevelHashSet< rcu_shb, key_val<::hashing::sha256>, traits_MultiLevelHashSet_sha256_stat >    MultiLevelHashSet_rcu_shb_sha256_stat;
+        typedef MultiLevelHashSet< rcu_sht, key_val<::hashing::sha256>, traits_MultiLevelHashSet_sha256_stat >    MultiLevelHashSet_rcu_sht_sha256_stat;
+#endif
 
         //MD5
         typedef MultiLevelHashSet< cds::gc::HP,  key_val<::hashing::md5>, default_traits >    MultiLevelHashSet_hp_md5;
         typedef MultiLevelHashSet< cds::gc::DHP, key_val<::hashing::md5>, default_traits >    MultiLevelHashSet_dhp_md5;
+        typedef MultiLevelHashSet< rcu_gpi, key_val<::hashing::md5>, default_traits >    MultiLevelHashSet_rcu_gpi_md5;
+        typedef MultiLevelHashSet< rcu_gpb, key_val<::hashing::md5>, default_traits >    MultiLevelHashSet_rcu_gpb_md5;
+        typedef MultiLevelHashSet< rcu_gpt, key_val<::hashing::md5>, default_traits >    MultiLevelHashSet_rcu_gpt_md5;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef MultiLevelHashSet< rcu_shb, key_val<::hashing::md5>, default_traits >    MultiLevelHashSet_rcu_shb_md5;
+        typedef MultiLevelHashSet< rcu_sht, key_val<::hashing::md5>, default_traits >    MultiLevelHashSet_rcu_sht_md5;
+#endif
 
         struct traits_MultiLevelHashSet_md5_stat : public default_traits
         {
@@ -142,6 +193,13 @@ namespace set2 {
         };
         typedef MultiLevelHashSet< cds::gc::HP,  key_val<::hashing::md5>, traits_MultiLevelHashSet_md5_stat >    MultiLevelHashSet_hp_md5_stat;
         typedef MultiLevelHashSet< cds::gc::DHP, key_val<::hashing::md5>, traits_MultiLevelHashSet_md5_stat >    MultiLevelHashSet_dhp_md5_stat;
+        typedef MultiLevelHashSet< rcu_gpi, key_val<::hashing::md5>, traits_MultiLevelHashSet_md5_stat >    MultiLevelHashSet_rcu_gpi_md5_stat;
+        typedef MultiLevelHashSet< rcu_gpb, key_val<::hashing::md5>, traits_MultiLevelHashSet_md5_stat >    MultiLevelHashSet_rcu_gpb_md5_stat;
+        typedef MultiLevelHashSet< rcu_gpt, key_val<::hashing::md5>, traits_MultiLevelHashSet_md5_stat >    MultiLevelHashSet_rcu_gpt_md5_stat;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef MultiLevelHashSet< rcu_shb, key_val<::hashing::md5>, traits_MultiLevelHashSet_md5_stat >    MultiLevelHashSet_rcu_shb_md5_stat;
+        typedef MultiLevelHashSet< rcu_sht, key_val<::hashing::md5>, traits_MultiLevelHashSet_md5_stat >    MultiLevelHashSet_rcu_sht_md5_stat;
+#endif
 
         // CityHash
 #if CDS_BUILD_BITS == 64
@@ -151,6 +209,13 @@ namespace set2 {
         };
         typedef MultiLevelHashSet< cds::gc::HP,  key_val<::hashing::city64>, traits_MultiLevelHashSet_city64 >    MultiLevelHashSet_hp_city64;
         typedef MultiLevelHashSet< cds::gc::DHP, key_val<::hashing::city64>, traits_MultiLevelHashSet_city64 >    MultiLevelHashSet_dhp_city64;
+        typedef MultiLevelHashSet< rcu_gpi, key_val<::hashing::city64>, traits_MultiLevelHashSet_city64 >    MultiLevelHashSet_rcu_gpi_city64;
+        typedef MultiLevelHashSet< rcu_gpb, key_val<::hashing::city64>, traits_MultiLevelHashSet_city64 >    MultiLevelHashSet_rcu_gpb_city64;
+        typedef MultiLevelHashSet< rcu_gpt, key_val<::hashing::city64>, traits_MultiLevelHashSet_city64 >    MultiLevelHashSet_rcu_gpt_city64;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef MultiLevelHashSet< rcu_shb, key_val<::hashing::city64>, traits_MultiLevelHashSet_city64 >    MultiLevelHashSet_rcu_shb_city64;
+        typedef MultiLevelHashSet< rcu_sht, key_val<::hashing::city64>, traits_MultiLevelHashSet_city64 >    MultiLevelHashSet_rcu_sht_city64;
+#endif
 
         struct traits_MultiLevelHashSet_city64_stat : public traits_MultiLevelHashSet_city64
         {
@@ -158,6 +223,13 @@ namespace set2 {
         };
         typedef MultiLevelHashSet< cds::gc::HP,  key_val<::hashing::city64>, traits_MultiLevelHashSet_city64_stat >    MultiLevelHashSet_hp_city64_stat;
         typedef MultiLevelHashSet< cds::gc::DHP, key_val<::hashing::city64>, traits_MultiLevelHashSet_city64_stat >    MultiLevelHashSet_dhp_city64_stat;
+        typedef MultiLevelHashSet< rcu_gpi, key_val<::hashing::city64>, traits_MultiLevelHashSet_city64_stat >    MultiLevelHashSet_rcu_gpi_city64_stat;
+        typedef MultiLevelHashSet< rcu_gpb, key_val<::hashing::city64>, traits_MultiLevelHashSet_city64_stat >    MultiLevelHashSet_rcu_gpb_city64_stat;
+        typedef MultiLevelHashSet< rcu_gpt, key_val<::hashing::city64>, traits_MultiLevelHashSet_city64_stat >    MultiLevelHashSet_rcu_gpt_city64_stat;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef MultiLevelHashSet< rcu_shb, key_val<::hashing::city64>, traits_MultiLevelHashSet_city64_stat >    MultiLevelHashSet_rcu_shb_city64_stat;
+        typedef MultiLevelHashSet< rcu_sht, key_val<::hashing::city64>, traits_MultiLevelHashSet_city64_stat >    MultiLevelHashSet_rcu_sht_city64_stat;
+#endif
 
         struct traits_MultiLevelHashSet_city128 : public default_traits
         {
@@ -165,6 +237,13 @@ namespace set2 {
         };
         typedef MultiLevelHashSet< cds::gc::HP,  key_val<::hashing::city128>, traits_MultiLevelHashSet_city128 >    MultiLevelHashSet_hp_city128;
         typedef MultiLevelHashSet< cds::gc::DHP, key_val<::hashing::city128>, traits_MultiLevelHashSet_city128 >    MultiLevelHashSet_dhp_city128;
+        typedef MultiLevelHashSet< rcu_gpi, key_val<::hashing::city128>, traits_MultiLevelHashSet_city128 >    MultiLevelHashSet_rcu_gpi_city128;
+        typedef MultiLevelHashSet< rcu_gpb, key_val<::hashing::city128>, traits_MultiLevelHashSet_city128 >    MultiLevelHashSet_rcu_gpb_city128;
+        typedef MultiLevelHashSet< rcu_gpt, key_val<::hashing::city128>, traits_MultiLevelHashSet_city128 >    MultiLevelHashSet_rcu_gpt_city128;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef MultiLevelHashSet< rcu_shb, key_val<::hashing::city128>, traits_MultiLevelHashSet_city128 >    MultiLevelHashSet_rcu_shb_city128;
+        typedef MultiLevelHashSet< rcu_sht, key_val<::hashing::city128>, traits_MultiLevelHashSet_city128 >    MultiLevelHashSet_rcu_sht_city128;
+#endif
 
         struct traits_MultiLevelHashSet_city128_stat : public traits_MultiLevelHashSet_city128
         {
@@ -172,6 +251,14 @@ namespace set2 {
         };
         typedef MultiLevelHashSet< cds::gc::HP,  key_val<::hashing::city128>, traits_MultiLevelHashSet_city128_stat >    MultiLevelHashSet_hp_city128_stat;
         typedef MultiLevelHashSet< cds::gc::DHP, key_val<::hashing::city128>, traits_MultiLevelHashSet_city128_stat >    MultiLevelHashSet_dhp_city128_stat;
+        typedef MultiLevelHashSet< rcu_gpi, key_val<::hashing::city128>, traits_MultiLevelHashSet_city128_stat >    MultiLevelHashSet_rcu_gpi_city128_stat;
+        typedef MultiLevelHashSet< rcu_gpb, key_val<::hashing::city128>, traits_MultiLevelHashSet_city128_stat >    MultiLevelHashSet_rcu_gpb_city128_stat;
+        typedef MultiLevelHashSet< rcu_gpt, key_val<::hashing::city128>, traits_MultiLevelHashSet_city128_stat >    MultiLevelHashSet_rcu_gpt_city128_stat;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef MultiLevelHashSet< rcu_shb, key_val<::hashing::city128>, traits_MultiLevelHashSet_city128_stat >    MultiLevelHashSet_rcu_shb_city128_stat;
+        typedef MultiLevelHashSet< rcu_sht, key_val<::hashing::city128>, traits_MultiLevelHashSet_city128_stat >    MultiLevelHashSet_rcu_sht_city128_stat;
+#endif
+
 #endif // #if CDS_BUILD_BITS == 64
     };