Lines Matching refs:nv

126 mdb_nv_create(mdb_nv_t *nv, uint_t um_flags)  in mdb_nv_create()  argument
128 nv->nv_hash = mdb_zalloc(sizeof (mdb_var_t *) * NV_HASHSZ, um_flags); in mdb_nv_create()
130 if (nv->nv_hash == NULL) in mdb_nv_create()
133 nv->nv_hashsz = NV_HASHSZ; in mdb_nv_create()
134 nv->nv_nelems = 0; in mdb_nv_create()
135 nv->nv_iter_elt = NULL; in mdb_nv_create()
136 nv->nv_iter_bucket = 0; in mdb_nv_create()
137 nv->nv_um_flags = um_flags; in mdb_nv_create()
139 return (nv); in mdb_nv_create()
143 mdb_nv_destroy(mdb_nv_t *nv) in mdb_nv_destroy() argument
148 if (nv->nv_um_flags & UM_GC) in mdb_nv_destroy()
151 for (i = 0; i < nv->nv_hashsz; i++) { in mdb_nv_destroy()
152 for (v = nv->nv_hash[i]; v != NULL; v = w) { in mdb_nv_destroy()
154 nv_var_free(v, nv->nv_um_flags); in mdb_nv_destroy()
158 mdb_free(nv->nv_hash, sizeof (mdb_var_t *) * nv->nv_hashsz); in mdb_nv_destroy()
162 mdb_nv_lookup(mdb_nv_t *nv, const char *name) in mdb_nv_lookup() argument
164 size_t i = nv_hashstring(name) % nv->nv_hashsz; in mdb_nv_lookup()
167 for (v = nv->nv_hash[i]; v != NULL; v = v->v_next) { in mdb_nv_lookup()
180 nv_var_interpos(mdb_nv_t *nv, size_t i, mdb_var_t *v, mdb_var_t *w) in nv_var_interpos() argument
182 mdb_var_t **pvp = &nv->nv_hash[i]; in nv_var_interpos()
213 nv_resize(mdb_nv_t *nv) in nv_resize() argument
215 size_t i, bucket, new_hashsz = (nv->nv_hashsz << 1) - 1; in nv_resize()
217 mdb_zalloc(sizeof (mdb_var_t *) * new_hashsz, nv->nv_um_flags); in nv_resize()
225 ASSERT(nv->nv_um_flags & UM_NOSLEEP); in nv_resize()
236 for (i = 0; i < nv->nv_hashsz; i++) { in nv_resize()
237 for (v = nv->nv_hash[i]; v != NULL; v = w) { in nv_resize()
250 mdb_free(nv->nv_hash, sizeof (mdb_var_t *) * nv->nv_hashsz); in nv_resize()
251 nv->nv_hash = new_hash; in nv_resize()
252 nv->nv_hashsz = new_hashsz; in nv_resize()
259 mdb_nv_insert(mdb_nv_t *nv, const char *name, const mdb_nv_disc_t *disc, in mdb_nv_insert() argument
268 if (nv->nv_nelems > nv->nv_hashsz && nv->nv_iter_elt == NULL) { in mdb_nv_insert()
269 nv_resize(nv); in mdb_nv_insert()
272 i = nv_hashstring(name) % nv->nv_hashsz; in mdb_nv_insert()
280 for (v = nv->nv_hash[i]; v != NULL; v = v->v_next) { in mdb_nv_insert()
284 value, flags, nv->nv_um_flags, NULL); in mdb_nv_insert()
287 ASSERT(nv->nv_um_flags & UM_NOSLEEP); in mdb_nv_insert()
292 v = nv_var_interpos(nv, i, v, w); in mdb_nv_insert()
313 v = nv_var_alloc(name, disc, value, flags, nv->nv_um_flags, in mdb_nv_insert()
314 nv->nv_hash[i]); in mdb_nv_insert()
317 ASSERT(nv->nv_um_flags & UM_NOSLEEP); in mdb_nv_insert()
321 nv->nv_hash[i] = v; in mdb_nv_insert()
322 nv->nv_nelems++; in mdb_nv_insert()
346 mdb_nv_remove(mdb_nv_t *nv, mdb_var_t *corpse) in mdb_nv_remove() argument
349 size_t i = nv_hashstring(cname) % nv->nv_hashsz; in mdb_nv_remove()
350 mdb_var_t *v = nv->nv_hash[i]; in mdb_nv_remove()
363 nv->nv_um_flags); in mdb_nv_remove()
379 pvp = &nv->nv_hash[i]; in mdb_nv_remove()
387 nv->nv_nelems--; in mdb_nv_remove()
390 nv_var_free(corpse, nv->nv_um_flags); in mdb_nv_remove()
395 (void *)corpse, cname, (void *)nv, (ulong_t)i); in mdb_nv_remove()
399 mdb_nv_rewind(mdb_nv_t *nv) in mdb_nv_rewind() argument
403 for (i = 0; i < nv->nv_hashsz; i++) { in mdb_nv_rewind()
404 if (nv->nv_hash[i] != NULL) in mdb_nv_rewind()
408 nv->nv_iter_elt = i < nv->nv_hashsz ? nv->nv_hash[i] : NULL; in mdb_nv_rewind()
409 nv->nv_iter_bucket = i; in mdb_nv_rewind()
413 mdb_nv_advance(mdb_nv_t *nv) in mdb_nv_advance() argument
415 mdb_var_t *v = nv->nv_iter_elt; in mdb_nv_advance()
422 nv->nv_iter_elt = v->v_next; in mdb_nv_advance()
426 for (i = nv->nv_iter_bucket + 1; i < nv->nv_hashsz; i++) { in mdb_nv_advance()
427 if (nv->nv_hash[i] != NULL) in mdb_nv_advance()
431 nv->nv_iter_elt = i < nv->nv_hashsz ? nv->nv_hash[i] : NULL; in mdb_nv_advance()
432 nv->nv_iter_bucket = i; in mdb_nv_advance()
438 mdb_nv_peek(mdb_nv_t *nv) in mdb_nv_peek() argument
440 return (nv->nv_iter_elt); in mdb_nv_peek()
444 mdb_nv_size(mdb_nv_t *nv) in mdb_nv_size() argument
446 return (nv->nv_nelems); in mdb_nv_size()
456 mdb_nv_sort_iter(mdb_nv_t *nv, int (*func)(mdb_var_t *, void *), in mdb_nv_sort_iter() argument
460 mdb_alloc(nv->nv_nelems * sizeof (mdb_var_t *), um_flags); in mdb_nv_sort_iter()
462 if (nv->nv_nelems != 0 && vps != NULL) { in mdb_nv_sort_iter()
466 for (mdb_nv_rewind(nv); (v = mdb_nv_advance(nv)) != NULL; ) in mdb_nv_sort_iter()
469 qsort(vps, nv->nv_nelems, sizeof (mdb_var_t *), in mdb_nv_sort_iter()
472 for (vpp = vps, i = 0; i < nv->nv_nelems; i++) { in mdb_nv_sort_iter()
478 mdb_free(vps, nv->nv_nelems * sizeof (mdb_var_t *)); in mdb_nv_sort_iter()