Lines Matching refs:devctx
299 struct devmap_ctx *devctx; in devmap_ctxinit() local
311 for (devctx = devmapctx_list; devctx != NULL; devctx = devctx->next) in devmap_ctxinit()
312 if ((devctx->dip == dip) && (devctx->id == id)) in devmap_ctxinit()
315 if (devctx == NULL) { in devmap_ctxinit()
316 devctx = tmp; in devmap_ctxinit()
317 devctx->dip = dip; in devmap_ctxinit()
318 devctx->id = id; in devmap_ctxinit()
319 mutex_init(&devctx->lock, NULL, MUTEX_DEFAULT, NULL); in devmap_ctxinit()
320 cv_init(&devctx->cv, NULL, CV_DEFAULT, NULL); in devmap_ctxinit()
321 devctx->next = devmapctx_list; in devmap_ctxinit()
322 devmapctx_list = devctx; in devmap_ctxinit()
326 mutex_enter(&devctx->lock); in devmap_ctxinit()
327 devctx->refcnt++; in devmap_ctxinit()
328 mutex_exit(&devctx->lock); in devmap_ctxinit()
331 return (devctx); in devmap_ctxinit()
341 struct devmap_ctx *devctx = data; in devmap_ctxto() local
344 "devmap_ctxto:timeout expired, devctx=%p", (void *)devctx); in devmap_ctxto()
345 mutex_enter(&devctx->lock); in devmap_ctxto()
350 devctx->oncpu = 0; in devmap_ctxto()
351 devctx->timeout = 0; in devmap_ctxto()
352 cv_signal(&devctx->cv); in devmap_ctxto()
353 mutex_exit(&devctx->lock); in devmap_ctxto()
2594 struct devmap_ctx *devctx; in devmap_do_ctxmgt() local
2611 devctx = dhp->dh_ctx; in devmap_do_ctxmgt()
2627 devctx, dhp); in devmap_do_ctxmgt()
2629 mutex_enter(&devctx->lock); in devmap_do_ctxmgt()
2630 while (devctx->oncpu) in devmap_do_ctxmgt()
2631 cv_wait(&devctx->cv, &devctx->lock); in devmap_do_ctxmgt()
2632 devctx->oncpu = 1; in devmap_do_ctxmgt()
2633 mutex_exit(&devctx->lock); in devmap_do_ctxmgt()
2652 ret, dhp, devctx); in devmap_do_ctxmgt()
2655 if (devctx->oncpu) { in devmap_do_ctxmgt()
2656 mutex_enter(&devctx->lock); in devmap_do_ctxmgt()
2657 devctx->oncpu = 0; in devmap_do_ctxmgt()
2658 cv_signal(&devctx->cv); in devmap_do_ctxmgt()
2659 mutex_exit(&devctx->lock); in devmap_do_ctxmgt()
2668 mutex_enter(&devctx->lock); in devmap_do_ctxmgt()
2672 devctx->timeout = timeout(devmap_ctxto, in devmap_do_ctxmgt()
2673 devctx, dhp->dh_timeout_length); in devmap_do_ctxmgt()
2681 devctx->oncpu = 0; in devmap_do_ctxmgt()
2682 cv_signal(&devctx->cv); in devmap_do_ctxmgt()
2684 mutex_exit(&devctx->lock); in devmap_do_ctxmgt()
2995 struct devmap_ctx *devctx = dhp->dh_ctx; in devmap_ctx_rele() local
3004 mutex_enter(&devctx->lock); in devmap_ctx_rele()
3006 ASSERT(devctx->refcnt > 0); in devmap_ctx_rele()
3008 devctx->refcnt--; in devmap_ctx_rele()
3013 if (devctx->refcnt == 0) { in devmap_ctx_rele()
3018 if (devctx->timeout != 0) { in devmap_ctx_rele()
3022 tid = devctx->timeout; in devmap_ctx_rele()
3023 mutex_exit(&devctx->lock); in devmap_ctx_rele()
3025 mutex_enter(&devctx->lock); in devmap_ctx_rele()
3028 devctx->oncpu = 0; in devmap_ctx_rele()
3029 cv_signal(&devctx->cv); in devmap_ctx_rele()
3031 if (devmapctx_list == devctx) in devmap_ctx_rele()
3032 devmapctx_list = devctx->next; in devmap_ctx_rele()
3037 if (tmp == devctx) { in devmap_ctx_rele()
3044 mutex_exit(&devctx->lock); in devmap_ctx_rele()
3045 mutex_destroy(&devctx->lock); in devmap_ctx_rele()
3046 cv_destroy(&devctx->cv); in devmap_ctx_rele()
3047 kmem_free(devctx, sizeof (struct devmap_ctx)); in devmap_ctx_rele()
3049 mutex_exit(&devctx->lock); in devmap_ctx_rele()