openssl/doc/internal/man3
Nikola Pajkovsky 512f176185 hashtable: add option to disable RCU locks
a new config option _no_rcu_ is added into HT_CONFIG. When _no_rcu_ is
set then hashtable can be guarded with any other locking primitives,
and behives as ordinary hashtable. Also, all the impact of the
atomics used internally to the hash table was mitigated.

RCU performance

   # INFO:  @ test/lhash_test.c:747
   # multithread stress runs 40000 ops in 40.779656 seconds

No RCU, guarded with RWLOCK

   # INFO:  @ test/lhash_test.c:747
   # multithread stress runs 40000 ops in 36.976926 seconds

Signed-off-by: Nikola Pajkovsky <nikolap@openssl.org>

Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Neil Horman <nhorman@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/28677)
2025-10-02 08:05:02 -04:00
..
DEFINE_LIST_OF.pod Fix documenation mistakes 2022-11-16 18:02:02 +11:00
DEFINE_PRIORITY_QUEUE_OF.pod Change all references to OpenSSL 3.1 to OpenSSL 3.2 in the master branch 2022-10-07 10:05:50 +02:00
OPENSSL_SA.pod Update copyright year 2021-05-20 14:22:33 +01:00
OPTIONS.pod Update copyright year 2022-05-03 13:34:51 +01:00
OSSL_DEPRECATED.pod Simplify and clarify doc/internal/man7/deprecation.pod 2020-11-01 05:57:42 +01:00
OSSL_METHOD_STORE.pod Removed extra spaces in documentation 2023-12-12 20:00:05 +01:00
OSSL_SAFE_MATH_SIGNED.pod Change all references to OpenSSL 3.1 to OpenSSL 3.2 in the master branch 2022-10-07 10:05:50 +02:00
OSSL_TIME.pod Change all references to OpenSSL 3.1 to OpenSSL 3.2 in the master branch 2022-10-07 10:05:50 +02:00
bn_mul_words.pod Copyright year updates 2025-09-02 13:05:45 +00:00
cms_add1_signing_cert.pod doc: remove end of line whitespace 2021-09-22 16:22:50 +10:00
evp_generic_fetch.pod Copyright year updates 2025-03-12 13:35:59 +00:00
evp_keymgmt_newdata.pod Add public API for gettables and settables for keymanagement, signatures and key exchange. 2020-08-12 11:59:43 +10:00
evp_keymgmt_util_export_to_provider.pod Copyright year updates 2023-09-07 09:59:15 +01:00
evp_md_get_number.pod doc: Fix include syntax 2021-09-22 18:55:34 +10:00
evp_pkey_export_to_provider.pod Update copyright year 2021-03-11 13:27:36 +00:00
evp_pkey_get1_ED25519.pod Hide ECX_KEY again 2020-09-25 12:12:22 +10:00
ossl_DER_w_begin_sequence.pod der: _ossl prefix DER functions 2020-10-01 11:25:12 +10:00
ossl_DER_w_bn.pod der_writer: Use uint32_t instead of long. 2022-06-27 10:58:40 +02:00
ossl_DER_w_precompiled.pod der: _ossl prefix DER functions 2020-10-01 11:25:12 +10:00
ossl_algorithm_do_all.pod Rename OPENSSL_CTX prefix to OSSL_LIB_CTX 2020-10-15 11:59:53 +01:00
ossl_bio_print_hex.pod feat: define and use ossl_bio_print_hex 2024-11-13 11:53:34 +01:00
ossl_cmp_X509_STORE_add1_certs.pod Introduce X509_add_cert[s] simplifying various additions to cert lists 2020-08-12 13:54:37 +02:00
ossl_cmp_asn1_octet_string_set1.pod cmp_util.c: Add OPENSSL_CTX parameter to ossl_cmp_build_cert_chain(), improve its doc 2020-08-21 09:04:12 +02:00
ossl_cmp_certreq_new.pod Copyright year updates 2023-09-07 09:59:15 +01:00
ossl_cmp_ctx_set1_caPubs.pod Certificate Management Protocol (CMP, RFC 4210) extension to OpenSSL 2019-09-27 10:53:11 +01:00
ossl_cmp_hdr_init.pod Update copyright year 2021-07-29 15:41:35 +01:00
ossl_cmp_mock_srv_new.pod Copyright year updates 2023-09-07 09:59:15 +01:00
ossl_cmp_msg_check_update.pod CMP: introduce version 3, while version 2 stays the default 2022-07-01 07:38:50 +01:00
ossl_cmp_msg_create.pod Update copyright year 2021-07-29 15:41:35 +01:00
ossl_cmp_msg_protect.pod Copyright year updates 2023-09-07 09:59:15 +01:00
ossl_cmp_pkisi_get_status.pod Copyright year updates 2023-09-07 09:59:15 +01:00
ossl_cmp_print_log.pod Update copyright year 2020-04-23 13:55:52 +01:00
ossl_cms_sign_encrypt.pod Copyright year updates 2025-03-12 13:35:59 +00:00
ossl_ends_with_dirsep.pod Add ossl_is_absolute_path function to detect absolute paths 2020-11-11 16:06:30 +01:00
ossl_global_properties_no_mirrored.pod Documentation updates for mirroring of global properties 2021-05-20 09:35:41 +01:00
ossl_ht_new.pod hashtable: add option to disable RCU locks 2025-10-02 08:05:02 -04:00
ossl_init_thread_deregister.pod Fix some typos 2019-12-11 19:04:01 +01:00
ossl_lib_ctx_get_data.pod Update copyright year 2022-05-03 13:34:51 +01:00
ossl_method_construct.pod Fix new typos found by codespell 2023-12-29 10:12:05 +01:00
ossl_namemap_new.pod Copyright year updates 2025-09-02 13:05:45 +00:00
ossl_print_attribute_value.pod Support subjectDirectoryAttributes and associatedInformation exts 2024-06-24 15:33:21 +02:00
ossl_provider_add_conf_module.pod Enhance and update the docs of the internal ossl_provider API 2019-06-24 07:57:03 +02:00
ossl_provider_new.pod Copyright year updates 2025-03-12 13:35:59 +00:00
ossl_punycode_decode.pod Copyright year updates 2023-09-07 09:59:15 +01:00
ossl_rand_get_entropy.pod rand: add callbacks to cleanup the user entropy resp. nonce 2023-10-20 09:48:34 +01:00
ossl_random_add_conf_module.pod Update copyright year 2022-05-03 13:34:51 +01:00
ossl_rcu_lock_new.pod Make rcu_thread_key context-aware 2024-04-19 09:22:53 -04:00
ossl_rsa_get0_all_params.pod Update copyright year 2020-10-15 14:10:06 +01:00
ossl_serial_number_print.pod feat: add ossl_serial_number_print 2024-09-16 22:56:02 +02:00
x509v3_cache_extensions.pod Update copyright year 2021-01-28 13:54:57 +01:00