Lines Matching refs:drctlp

149 static struct drctl_unit *drctlp = &drctl_state;  variable
156 drctlp->drc_inst = -1; in _init()
157 mutex_init(&drctlp->drc_lock, NULL, MUTEX_DRIVER, NULL); in _init()
158 cv_init(&drctlp->drc_busy_cv, NULL, CV_DRIVER, NULL); in _init()
161 mutex_destroy(&drctlp->drc_lock); in _init()
174 cv_destroy(&drctlp->drc_busy_cv); in _fini()
175 mutex_destroy(&drctlp->drc_lock); in _fini()
198 if (drctlp->drc_inst != -1) { in drctl_do_attach()
202 drctlp->drc_inst = ddi_get_instance(dip); in drctl_do_attach()
205 drctlp->drc_inst, DDI_PSEUDO, 0); in drctl_do_attach()
208 drctlp->drc_inst = -1; in drctl_do_attach()
212 drctlp->drc_dip = dip; in drctl_do_attach()
238 drctlp->drc_inst = -1; in drctl_detach()
461 mutex_enter(&drctlp->drc_lock); in drctl_config_init()
462 if (drctlp->drc_busy != NULL) { in drctl_config_init()
463 mutex_exit(&drctlp->drc_lock); in drctl_config_init()
473 drctlp->drc_busy = (drctl_cookie_t)-1; in drctl_config_init()
474 mutex_exit(&drctlp->drc_lock); in drctl_config_init()
488 drctlp->drc_busy = NULL; in drctl_config_init()
489 cv_broadcast(&drctlp->drc_busy_cv); in drctl_config_init()
491 drctlp->drc_busy = ck; in drctl_config_init()
492 drctlp->drc_cmd = cmd; in drctl_config_init()
493 drctlp->drc_flags = flags; in drctl_config_init()
510 drctlp->drc_cmd = -1; in drctl_config_init()
511 drctlp->drc_flags = 0; in drctl_config_init()
512 drctlp->drc_busy = NULL; in drctl_config_init()
513 cv_broadcast(&drctlp->drc_busy_cv); in drctl_config_init()
529 mutex_enter(&drctlp->drc_lock); in drctl_config_fini()
530 if (drctlp->drc_busy != ck) { in drctl_config_fini()
531 mutex_exit(&drctlp->drc_lock); in drctl_config_fini()
534 mutex_exit(&drctlp->drc_lock); in drctl_config_fini()
536 flags = drctlp->drc_flags; in drctl_config_fini()
541 switch (drctlp->drc_cmd) { in drctl_config_fini()
570 "drctl_config_fini: bad cmd %d\n", drctlp->drc_cmd); in drctl_config_fini()
579 drctlp->drc_cmd = -1; in drctl_config_fini()
580 drctlp->drc_flags = 0; in drctl_config_fini()
581 drctlp->drc_busy = NULL; in drctl_config_fini()
582 cv_broadcast(&drctlp->drc_busy_cv); in drctl_config_fini()
707 mutex_enter(&drctlp->drc_lock); in drctl_block_conditional()
709 if (!should_block && drctlp->drc_busy != NULL) { in drctl_block_conditional()
710 mutex_exit(&drctlp->drc_lock); in drctl_block_conditional()
715 while (drctlp->drc_busy != NULL) in drctl_block_conditional()
716 (void) cv_wait_sig(&drctlp->drc_busy_cv, &drctlp->drc_lock); in drctl_block_conditional()
719 drctlp->drc_busy = (drctl_cookie_t)-1; in drctl_block_conditional()
720 drctlp->drc_cmd = DRCTL_DRC_BLOCK; in drctl_block_conditional()
721 drctlp->drc_flags = 0; in drctl_block_conditional()
722 mutex_exit(&drctlp->drc_lock); in drctl_block_conditional()
752 mutex_enter(&drctlp->drc_lock); in drctl_unblock()
753 drctlp->drc_cmd = -1; in drctl_unblock()
754 drctlp->drc_flags = 0; in drctl_unblock()
755 drctlp->drc_busy = NULL; in drctl_unblock()
756 cv_broadcast(&drctlp->drc_busy_cv); in drctl_unblock()
757 mutex_exit(&drctlp->drc_lock); in drctl_unblock()