Lines Matching refs:usp

36 fmd_ustat_chunk_init(fmd_ustat_t *usp, fmd_stat_t *base, uint_t len)  in fmd_ustat_chunk_init()  argument
45 ASSERT(RW_WRITE_HELD(&usp->us_lock)); in fmd_ustat_chunk_init()
46 fmd_list_append(&usp->us_chunks, cp); in fmd_ustat_chunk_init()
52 fmd_ustat_chunk_hold(fmd_ustat_t *usp, fmd_ustat_chunk_t *cp) in fmd_ustat_chunk_hold() argument
54 ASSERT(RW_WRITE_HELD(&usp->us_lock)); in fmd_ustat_chunk_hold()
60 fmd_ustat_chunk_rele(fmd_ustat_t *usp, fmd_ustat_chunk_t *cp) in fmd_ustat_chunk_rele() argument
62 ASSERT(RW_WRITE_HELD(&usp->us_lock)); in fmd_ustat_chunk_rele()
72 fmd_list_delete(&usp->us_chunks, cp); in fmd_ustat_chunk_rele()
80 fmd_ustat_t *usp = fmd_zalloc(sizeof (fmd_ustat_t), FMD_SLEEP); in fmd_ustat_create() local
82 (void) pthread_rwlock_init(&usp->us_lock, NULL); in fmd_ustat_create()
83 usp->us_hashlen = fmd.d_str_buckets; in fmd_ustat_create()
84 usp->us_hash = fmd_zalloc(sizeof (void *) * usp->us_hashlen, FMD_SLEEP); in fmd_ustat_create()
86 return (usp); in fmd_ustat_create()
90 fmd_ustat_destroy(fmd_ustat_t *usp) in fmd_ustat_destroy() argument
95 (void) pthread_rwlock_wrlock(&usp->us_lock); in fmd_ustat_destroy()
97 for (i = 0; i < usp->us_hashlen; i++) { in fmd_ustat_destroy()
98 for (ep = usp->us_hash[i]; ep != NULL; ep = np) { in fmd_ustat_destroy()
103 fmd_ustat_chunk_rele(usp, ep->use_chunk); in fmd_ustat_destroy()
110 ASSERT(usp->us_chunks.l_next == NULL); in fmd_ustat_destroy()
111 ASSERT(usp->us_chunks.l_prev == NULL); in fmd_ustat_destroy()
113 fmd_free(usp->us_hash, sizeof (void *) * usp->us_hashlen); in fmd_ustat_destroy()
114 fmd_free(usp, sizeof (fmd_ustat_t)); in fmd_ustat_destroy()
118 fmd_ustat_snapshot(fmd_ustat_t *usp, fmd_ustat_snap_t *uss) in fmd_ustat_snapshot() argument
124 (void) pthread_rwlock_wrlock(&usp->us_lock); in fmd_ustat_snapshot()
126 uss->uss_buf = sp = malloc(sizeof (fmd_stat_t) * usp->us_nelems); in fmd_ustat_snapshot()
127 uss->uss_len = usp->us_nelems; in fmd_ustat_snapshot()
130 (void) pthread_rwlock_unlock(&usp->us_lock); in fmd_ustat_snapshot()
134 for (i = 0; i < usp->us_hashlen; i++) { in fmd_ustat_snapshot()
135 for (ep = usp->us_hash[i]; ep != NULL; ep = ep->use_next) { in fmd_ustat_snapshot()
145 (void) pthread_rwlock_unlock(&usp->us_lock); in fmd_ustat_snapshot()
150 fmd_ustat_delete_locked(fmd_ustat_t *usp, uint_t n, fmd_stat_t *sp, int strfree) in fmd_ustat_delete_locked() argument
152 ASSERT(RW_WRITE_HELD(&usp->us_lock)); in fmd_ustat_delete_locked()
155 uint_t h = fmd_strhash(sp->fmds_name) % usp->us_hashlen; in fmd_ustat_delete_locked()
156 fmd_ustat_elem_t *ep, **pp = &usp->us_hash[h]; in fmd_ustat_delete_locked()
172 fmd_ustat_chunk_rele(usp, ep->use_chunk); in fmd_ustat_delete_locked()
176 usp->us_nelems--; in fmd_ustat_delete_locked()
181 fmd_ustat_insert(fmd_ustat_t *usp, uint_t flags, in fmd_ustat_insert() argument
198 (void) pthread_rwlock_wrlock(&usp->us_lock); in fmd_ustat_insert()
201 cp = fmd_ustat_chunk_init(usp, stats, n); in fmd_ustat_insert()
240 h = fmd_strhash(sp->fmds_name) % usp->us_hashlen; in fmd_ustat_insert()
242 for (ep = usp->us_hash[h]; ep != NULL; ep = ep->use_next) { in fmd_ustat_insert()
256 ep->use_next = usp->us_hash[h]; in fmd_ustat_insert()
257 usp->us_hash[h] = ep; in fmd_ustat_insert()
262 fmd_ustat_chunk_hold(usp, cp); in fmd_ustat_insert()
264 usp->us_nelems++; in fmd_ustat_insert()
275 fmd_ustat_delete_locked(usp, i, stats, FMD_B_FALSE); in fmd_ustat_insert()
296 fmd_ustat_chunk_rele(usp, cp); in fmd_ustat_insert()
298 (void) pthread_rwlock_unlock(&usp->us_lock); in fmd_ustat_insert()
303 fmd_ustat_delete(fmd_ustat_t *usp, uint_t n, fmd_stat_t *sp) in fmd_ustat_delete() argument
305 (void) pthread_rwlock_wrlock(&usp->us_lock); in fmd_ustat_delete()
306 fmd_ustat_delete_locked(usp, n, sp, FMD_B_TRUE); in fmd_ustat_delete()
307 (void) pthread_rwlock_unlock(&usp->us_lock); in fmd_ustat_delete()
315 fmd_ustat_delete_references(fmd_ustat_t *usp) in fmd_ustat_delete_references() argument
320 (void) pthread_rwlock_wrlock(&usp->us_lock); in fmd_ustat_delete_references()
322 for (i = 0; i < usp->us_hashlen; i++) { in fmd_ustat_delete_references()
323 for (pp = &usp->us_hash[i], ep = *pp; ep != NULL; ep = *pp) { in fmd_ustat_delete_references()
334 usp->us_nelems--; in fmd_ustat_delete_references()
338 (void) pthread_rwlock_unlock(&usp->us_lock); in fmd_ustat_delete_references()