Lines Matching refs:la

399     smb_lavl_t	*la,  in smb_lavl_constructor()  argument
404 rw_init(&la->la_lock, NULL, RW_DEFAULT, NULL); in smb_lavl_constructor()
405 mutex_init(&la->la_mutex, NULL, MUTEX_DEFAULT, NULL); in smb_lavl_constructor()
406 avl_create(&la->la_tree, compar, size, offset); in smb_lavl_constructor()
407 list_create(&la->la_deleteq, sizeof (smb_dtor_t), in smb_lavl_constructor()
409 la->la_wrop = 0; in smb_lavl_constructor()
410 la->la_deleteq_count = 0; in smb_lavl_constructor()
411 la->la_flushing = B_FALSE; in smb_lavl_constructor()
419 smb_lavl_t *la) in smb_lavl_destructor() argument
421 smb_lavl_flush(la); in smb_lavl_destructor()
423 ASSERT(la->la_deleteq_count == 0); in smb_lavl_destructor()
424 ASSERT0(avl_numnodes(&la->la_tree)); in smb_lavl_destructor()
426 rw_destroy(&la->la_lock); in smb_lavl_destructor()
427 avl_destroy(&la->la_tree); in smb_lavl_destructor()
428 list_destroy(&la->la_deleteq); in smb_lavl_destructor()
429 mutex_destroy(&la->la_mutex); in smb_lavl_destructor()
437 smb_lavl_enter(smb_lavl_t *la, krw_t mode) in smb_lavl_enter() argument
439 rw_enter(&la->la_lock, mode); in smb_lavl_enter()
449 smb_lavl_post(smb_lavl_t *la, void *object, smb_dtorproc_t dtorproc) in smb_lavl_post() argument
461 mutex_enter(&la->la_mutex); in smb_lavl_post()
462 list_insert_tail(&la->la_deleteq, dtor); in smb_lavl_post()
463 ++la->la_deleteq_count; in smb_lavl_post()
464 mutex_exit(&la->la_mutex); in smb_lavl_post()
471 smb_lavl_exit(smb_lavl_t *la) in smb_lavl_exit() argument
473 rw_exit(&la->la_lock); in smb_lavl_exit()
474 smb_lavl_flush(la); in smb_lavl_exit()
483 smb_lavl_flush(smb_lavl_t *la) in smb_lavl_flush() argument
487 mutex_enter(&la->la_mutex); in smb_lavl_flush()
488 if (la->la_flushing) { in smb_lavl_flush()
489 mutex_exit(&la->la_mutex); in smb_lavl_flush()
492 la->la_flushing = B_TRUE; in smb_lavl_flush()
494 dtor = list_head(&la->la_deleteq); in smb_lavl_flush()
498 list_remove(&la->la_deleteq, dtor); in smb_lavl_flush()
499 --la->la_deleteq_count; in smb_lavl_flush()
500 mutex_exit(&la->la_mutex); in smb_lavl_flush()
506 mutex_enter(&la->la_mutex); in smb_lavl_flush()
507 dtor = list_head(&la->la_deleteq); in smb_lavl_flush()
509 la->la_flushing = B_FALSE; in smb_lavl_flush()
511 mutex_exit(&la->la_mutex); in smb_lavl_flush()
525 smb_lavl_t *la) in smb_lavl_upgrade() argument
529 if (rw_tryupgrade(&la->la_lock) != 0) { in smb_lavl_upgrade()
532 wrop = la->la_wrop; in smb_lavl_upgrade()
533 rw_exit(&la->la_lock); in smb_lavl_upgrade()
534 rw_enter(&la->la_lock, RW_WRITER); in smb_lavl_upgrade()
535 return (wrop != la->la_wrop); in smb_lavl_upgrade()
546 smb_lavl_t *la, in smb_lavl_insert() argument
549 avl_add(&la->la_tree, obj); in smb_lavl_insert()
550 ++la->la_wrop; in smb_lavl_insert()
561 smb_lavl_t *la, in smb_lavl_remove() argument
564 avl_remove(&la->la_tree, obj); in smb_lavl_remove()
565 ++la->la_wrop; in smb_lavl_remove()
575 smb_lavl_t *la) in smb_lavl_get_count() argument
577 return ((uint32_t)avl_numnodes(&la->la_tree)); in smb_lavl_get_count()