Lines Matching defs:htblp

9402  *	htblp			pointer to hash table
9423 daplka_hash_create(daplka_hash_table_t *htblp, uint_t nbuckets,
9432 _NOTE(NOW_INVISIBLE_TO_OTHER_THREADS(*htblp))
9434 htblp->ht_buckets =
9437 if (htblp->ht_buckets == NULL) {
9442 _NOTE(NOW_INVISIBLE_TO_OTHER_THREADS(htblp->ht_buckets[i]))
9443 htblp->ht_buckets[i].hb_count = 0;
9444 htblp->ht_buckets[i].hb_entries = NULL;
9445 _NOTE(NOW_VISIBLE_TO_OTHER_THREADS(htblp->ht_buckets[i]))
9447 rw_init(&htblp->ht_table_lock, NULL, RW_DRIVER, NULL);
9448 mutex_init(&htblp->ht_key_lock, NULL, MUTEX_DRIVER, NULL);
9450 htblp->ht_count = 0;
9451 htblp->ht_next_hkey = (uint64_t)gethrtime();
9452 htblp->ht_nbuckets = nbuckets;
9453 htblp->ht_free_func = free_func;
9454 htblp->ht_lookup_func = lookup_func;
9455 htblp->ht_initialized = B_TRUE;
9457 _NOTE(NOW_VISIBLE_TO_OTHER_THREADS(*htblp))
9466 * htblp pointer to hash table
9489 daplka_hash_insert(daplka_hash_table_t *htblp, uint64_t *hkeyp, void *objp)
9507 mutex_enter(&htblp->ht_key_lock);
9508 hkey = ++htblp->ht_next_hkey;
9510 hkey = htblp->ht_next_hkey = (uint64_t)gethrtime();
9512 mutex_exit(&htblp->ht_key_lock);
9519 bucket = (uint32_t)(hkey & (htblp->ht_nbuckets - 1));
9521 ASSERT(bucket < htblp->ht_nbuckets);
9523 rw_enter(&htblp->ht_table_lock, RW_WRITER);
9528 hbp = &htblp->ht_buckets[bucket];
9541 rw_exit(&htblp->ht_table_lock);
9547 htblp->ht_count++;
9548 rw_exit(&htblp->ht_table_lock);
9554 D3("hash_insert: htblp 0x%p, hkey = 0x%016llx, bucket = %d\n",
9555 htblp, (longlong_t)*hkeyp, bucket);
9564 * htblp pointer to hash table
9578 daplka_hash_remove(daplka_hash_table_t *htblp, uint64_t hkey, void **objpp)
9584 bucket = (uint32_t)(hkey & (htblp->ht_nbuckets - 1));
9586 rw_enter(&htblp->ht_table_lock, RW_WRITER);
9587 hbp = &htblp->ht_buckets[bucket];
9599 rw_exit(&htblp->ht_table_lock);
9610 htblp->ht_count--;
9613 (longlong_t)hkey, bucket, hbp->hb_count, htblp->ht_count);
9614 rw_exit(&htblp->ht_table_lock);
9624 * htblp pointer to hash table
9642 daplka_hash_walk(daplka_hash_table_t *htblp, int (*func)(void *, void *),
9653 rw_enter(&htblp->ht_table_lock, RW_WRITER);
9655 rw_enter(&htblp->ht_table_lock, RW_READER);
9657 for (bucket = 0; bucket < htblp->ht_nbuckets && retval == 0; bucket++) {
9658 hbp = &htblp->ht_buckets[bucket];
9668 rw_exit(&htblp->ht_table_lock);
9676 * htblp pointer to hash table
9688 daplka_hash_lookup(daplka_hash_table_t *htblp, uint64_t hkey)
9694 bucket = (uint32_t)(hkey & (htblp->ht_nbuckets - 1));
9696 rw_enter(&htblp->ht_table_lock, RW_READER);
9697 curr_hep = htblp->ht_buckets[bucket].hb_entries;
9707 rw_exit(&htblp->ht_table_lock);
9712 if (htblp->ht_lookup_func != NULL) {
9713 (*htblp->ht_lookup_func)(objp);
9715 rw_exit(&htblp->ht_table_lock);
9724 * htblp pointer to hash table
9733 daplka_hash_destroy(daplka_hash_table_t *htblp)
9740 if (!htblp->ht_initialized) {
9745 rw_enter(&htblp->ht_table_lock, RW_WRITER);
9746 for (bucket = 0; bucket < htblp->ht_nbuckets; bucket++) {
9747 hbp = &htblp->ht_buckets[bucket];
9765 ASSERT(total == htblp->ht_count);
9766 D3("hash_destroy: htblp 0x%p, nbuckets %d, freed %d hash entries\n",
9767 htblp, htblp->ht_nbuckets, total);
9768 rw_exit(&htblp->ht_table_lock);
9776 if (htblp->ht_free_func != NULL) {
9777 (*htblp->ht_free_func)(free_hep->he_objp);
9784 kmem_free(htblp->ht_buckets,
9785 sizeof (daplka_hash_bucket_t) * htblp->ht_nbuckets);
9787 rw_enter(&htblp->ht_table_lock, RW_WRITER);
9788 htblp->ht_buckets = NULL;
9789 htblp->ht_count = 0;
9790 htblp->ht_nbuckets = 0;
9791 htblp->ht_free_func = NULL;
9792 htblp->ht_lookup_func = NULL;
9793 htblp->ht_initialized = B_FALSE;
9794 rw_exit(&htblp->ht_table_lock);
9796 mutex_destroy(&htblp->ht_key_lock);
9797 rw_destroy(&htblp->ht_table_lock);
9805 * htblp pointer to hash table
9814 daplka_hash_getsize(daplka_hash_table_t *htblp)
9818 rw_enter(&htblp->ht_table_lock, RW_READER);
9819 sz = htblp->ht_count;
9820 rw_exit(&htblp->ht_table_lock);