Lines Matching refs:lecp
1696 ldi_ev_callback_impl_t *lecp; in ldi_close() local
1755 for (lecp = list_head(listp); lecp; lecp = list_next(listp, lecp)) { in ldi_close()
1756 if (lecp->lec_lhp != handlep) in ldi_close()
1758 lecp->lec_lhp = NULL; in ldi_close()
1759 lecp->lec_notify = NULL; in ldi_close()
1763 lecp->lec_finalize = NULL; in ldi_close()
3166 ldi_ev_callback_impl_t *lecp = (ldi_ev_callback_impl_t *)arg; in i_ldi_ev_callback() local
3168 ASSERT(lecp != NULL); in i_ldi_ev_callback()
3169 ASSERT(!ldi_native_cookie(lecp->lec_cookie)); in i_ldi_ev_callback()
3170 ASSERT(lecp->lec_lhp); in i_ldi_ev_callback()
3171 ASSERT(lecp->lec_notify == NULL); in i_ldi_ev_callback()
3172 ASSERT(lecp->lec_finalize); in i_ldi_ev_callback()
3175 "ev_data=%p", (void *)lecp->lec_lhp, (void *)event_cookie, in i_ldi_ev_callback()
3176 (void *)lecp->lec_arg, (void *)ev_data)); in i_ldi_ev_callback()
3178 lecp->lec_finalize(lecp->lec_lhp, (ldi_ev_cookie_t)event_cookie, in i_ldi_ev_callback()
3179 lecp->lec_arg, ev_data); in i_ldi_ev_callback()
3187 ldi_ev_callback_impl_t *lecp; in ldi_ev_register_callbacks() local
3227 lecp = kmem_zalloc(sizeof (ldi_ev_callback_impl_t), KM_SLEEP); in ldi_ev_register_callbacks()
3240 kmem_free(lecp, sizeof (ldi_ev_callback_impl_t)); in ldi_ev_register_callbacks()
3246 i_ldi_ev_callback, (void *)lecp, in ldi_ev_register_callbacks()
3247 (ddi_callback_id_t *)&lecp->lec_id) in ldi_ev_register_callbacks()
3249 kmem_free(lecp, sizeof (ldi_ev_callback_impl_t)); in ldi_ev_register_callbacks()
3267 lecp->lec_lhp = lhp; in ldi_ev_register_callbacks()
3268 lecp->lec_dev = lhp->lh_vp->v_rdev; in ldi_ev_register_callbacks()
3269 lecp->lec_spec = VTYP_TO_STYP(lhp->lh_vp->v_type); in ldi_ev_register_callbacks()
3270 lecp->lec_notify = callb->cb_notify; in ldi_ev_register_callbacks()
3271 lecp->lec_finalize = callb->cb_finalize; in ldi_ev_register_callbacks()
3272 lecp->lec_arg = arg; in ldi_ev_register_callbacks()
3273 lecp->lec_cookie = cookie; in ldi_ev_register_callbacks()
3275 lecp->lec_id = (void *)(uintptr_t)(++ldi_ev_id_pool); in ldi_ev_register_callbacks()
3277 ASSERT(lecp->lec_id); in ldi_ev_register_callbacks()
3278 lecp->lec_dip = dip; in ldi_ev_register_callbacks()
3279 list_insert_tail(&ldi_ev_callback_list.le_head, lecp); in ldi_ev_register_callbacks()
3281 *id = (ldi_callback_id_t)lecp->lec_id; in ldi_ev_register_callbacks()
3294 ldi_ev_device_match(ldi_ev_callback_impl_t *lecp, dev_info_t *dip, in ldi_ev_device_match() argument
3297 ASSERT(lecp); in ldi_ev_device_match()
3303 ASSERT(lecp->lec_dip); in ldi_ev_device_match()
3304 ASSERT(lecp->lec_spec == S_IFCHR || lecp->lec_spec == S_IFBLK); in ldi_ev_device_match()
3305 ASSERT(lecp->lec_dev != DDI_DEV_T_ANY); in ldi_ev_device_match()
3306 ASSERT(lecp->lec_dev != DDI_DEV_T_NONE); in ldi_ev_device_match()
3307 ASSERT(lecp->lec_dev != NODEV); in ldi_ev_device_match()
3309 if (dip != lecp->lec_dip) in ldi_ev_device_match()
3313 if (dev != lecp->lec_dev || spec_type != lecp->lec_spec) in ldi_ev_device_match()
3339 ldi_ev_callback_impl_t *lecp; in ldi_invoke_notify() local
3361 for (lecp = list_head(listp); lecp; lecp = in ldi_invoke_notify()
3363 ldi_ev_callback_list.le_walker_next = list_next(listp, lecp); in ldi_invoke_notify()
3366 if (!ldi_ev_device_match(lecp, dip, dev, spec_type)) in ldi_invoke_notify()
3369 if (lecp->lec_lhp == NULL) { in ldi_invoke_notify()
3379 if (lecp->lec_notify == NULL) { in ldi_invoke_notify()
3388 lec_event = ldi_ev_get_type(lecp->lec_cookie); in ldi_invoke_notify()
3395 lecp->lec_lhp->lh_flags |= LH_FLAGS_NOTIFY; in ldi_invoke_notify()
3396 if (lecp->lec_notify(lecp->lec_lhp, lecp->lec_cookie, in ldi_invoke_notify()
3397 lecp->lec_arg, ev_data) != LDI_EV_SUCCESS) { in ldi_invoke_notify()
3418 lecp = list_prev(listp, lecp); in ldi_invoke_notify()
3420 for (; lecp; lecp = ldi_ev_callback_list.le_walker_prev) { in ldi_invoke_notify()
3421 ldi_ev_callback_list.le_walker_prev = list_prev(listp, lecp); in ldi_invoke_notify()
3426 if (!ldi_ev_device_match(lecp, dip, dev, spec_type)) in ldi_invoke_notify()
3430 if (lecp->lec_finalize == NULL) { in ldi_invoke_notify()
3445 lec_event = ldi_ev_get_type(lecp->lec_cookie); in ldi_invoke_notify()
3454 lecp->lec_finalize(lecp->lec_lhp, lecp->lec_cookie, in ldi_invoke_notify()
3455 LDI_EV_FAILURE, lecp->lec_arg, ev_data); in ldi_invoke_notify()
3462 if (lecp->lec_lhp == NULL && in ldi_invoke_notify()
3463 ldi_native_cookie(lecp->lec_cookie)) { in ldi_invoke_notify()
3467 lecp->lec_finalize = NULL; in ldi_invoke_notify()
3570 ldi_ev_callback_impl_t *lecp; in ldi_invoke_finalize() local
3590 for (lecp = list_head(listp); lecp; lecp = in ldi_invoke_finalize()
3592 ldi_ev_callback_list.le_walker_next = list_next(listp, lecp); in ldi_invoke_finalize()
3594 if (lecp->lec_finalize == NULL) { in ldi_invoke_finalize()
3603 if (!ldi_ev_device_match(lecp, dip, dev, spec_type)) in ldi_invoke_finalize()
3615 lec_event = ldi_ev_get_type(lecp->lec_cookie); in ldi_invoke_finalize()
3627 lecp->lec_finalize(lecp->lec_lhp, lecp->lec_cookie, in ldi_invoke_finalize()
3628 ldi_result, lecp->lec_arg, ev_data); in ldi_invoke_finalize()
3635 if (lecp->lec_lhp == NULL && in ldi_invoke_finalize()
3636 ldi_native_cookie(lecp->lec_cookie)) { in ldi_invoke_finalize()
3640 lecp->lec_finalize = NULL; in ldi_invoke_finalize()
3702 ldi_ev_callback_impl_t *lecp; in ldi_ev_remove_callbacks() local
3721 for (lecp = list_head(listp); lecp; lecp = next) { in ldi_ev_remove_callbacks()
3722 next = list_next(listp, lecp); in ldi_ev_remove_callbacks()
3723 if (lecp->lec_id == id) { in ldi_ev_remove_callbacks()
3735 if (ldi_ev_callback_list.le_walker_next == lecp) in ldi_ev_remove_callbacks()
3737 if (ldi_ev_callback_list.le_walker_prev == lecp) in ldi_ev_remove_callbacks()
3741 list_remove(listp, lecp); in ldi_ev_remove_callbacks()
3742 found = lecp; in ldi_ev_remove_callbacks()