1 /* 2 * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. 3 * 4 * Licensed under the OpenSSL license (the "License"). You may not use 5 * this file except in compliance with the License. You can obtain a copy 6 * in the file LICENSE in the source distribution or at 7 * https://www.openssl.org/source/license.html 8 */ 9 #include <openssl/crypto.h> 10 11 #include "internal/tsan_assist.h" 12 13 struct lhash_node_st { 14 void *data; 15 struct lhash_node_st *next; 16 unsigned long hash; 17 }; 18 19 struct lhash_st { 20 OPENSSL_LH_NODE **b; 21 OPENSSL_LH_COMPFUNC comp; 22 OPENSSL_LH_HASHFUNC hash; 23 unsigned int num_nodes; 24 unsigned int num_alloc_nodes; 25 unsigned int p; 26 unsigned int pmax; 27 unsigned long up_load; /* load times 256 */ 28 unsigned long down_load; /* load times 256 */ 29 unsigned long num_items; 30 unsigned long num_expands; 31 unsigned long num_expand_reallocs; 32 unsigned long num_contracts; 33 unsigned long num_contract_reallocs; 34 TSAN_QUALIFIER unsigned long num_hash_calls; 35 TSAN_QUALIFIER unsigned long num_comp_calls; 36 unsigned long num_insert; 37 unsigned long num_replace; 38 unsigned long num_delete; 39 unsigned long num_no_delete; 40 TSAN_QUALIFIER unsigned long num_retrieve; 41 TSAN_QUALIFIER unsigned long num_retrieve_miss; 42 TSAN_QUALIFIER unsigned long num_hash_comps; 43 int error; 44 }; 45