Lines Matching refs:devctx
298 struct devmap_ctx *devctx; in devmap_ctxinit() local
310 for (devctx = devmapctx_list; devctx != NULL; devctx = devctx->next) in devmap_ctxinit()
311 if ((devctx->dip == dip) && (devctx->id == id)) in devmap_ctxinit()
314 if (devctx == NULL) { in devmap_ctxinit()
315 devctx = tmp; in devmap_ctxinit()
316 devctx->dip = dip; in devmap_ctxinit()
317 devctx->id = id; in devmap_ctxinit()
318 mutex_init(&devctx->lock, NULL, MUTEX_DEFAULT, NULL); in devmap_ctxinit()
319 cv_init(&devctx->cv, NULL, CV_DEFAULT, NULL); in devmap_ctxinit()
320 devctx->next = devmapctx_list; in devmap_ctxinit()
321 devmapctx_list = devctx; in devmap_ctxinit()
325 mutex_enter(&devctx->lock); in devmap_ctxinit()
326 devctx->refcnt++; in devmap_ctxinit()
327 mutex_exit(&devctx->lock); in devmap_ctxinit()
330 return (devctx); in devmap_ctxinit()
340 struct devmap_ctx *devctx = data; in devmap_ctxto() local
343 "devmap_ctxto:timeout expired, devctx=%p", (void *)devctx); in devmap_ctxto()
344 mutex_enter(&devctx->lock); in devmap_ctxto()
349 devctx->oncpu = 0; in devmap_ctxto()
350 devctx->timeout = 0; in devmap_ctxto()
351 cv_signal(&devctx->cv); in devmap_ctxto()
352 mutex_exit(&devctx->lock); in devmap_ctxto()
2593 struct devmap_ctx *devctx; in devmap_do_ctxmgt() local
2610 devctx = dhp->dh_ctx; in devmap_do_ctxmgt()
2626 devctx, dhp); in devmap_do_ctxmgt()
2628 mutex_enter(&devctx->lock); in devmap_do_ctxmgt()
2629 while (devctx->oncpu) in devmap_do_ctxmgt()
2630 cv_wait(&devctx->cv, &devctx->lock); in devmap_do_ctxmgt()
2631 devctx->oncpu = 1; in devmap_do_ctxmgt()
2632 mutex_exit(&devctx->lock); in devmap_do_ctxmgt()
2651 ret, dhp, devctx); in devmap_do_ctxmgt()
2654 if (devctx->oncpu) { in devmap_do_ctxmgt()
2655 mutex_enter(&devctx->lock); in devmap_do_ctxmgt()
2656 devctx->oncpu = 0; in devmap_do_ctxmgt()
2657 cv_signal(&devctx->cv); in devmap_do_ctxmgt()
2658 mutex_exit(&devctx->lock); in devmap_do_ctxmgt()
2667 mutex_enter(&devctx->lock); in devmap_do_ctxmgt()
2671 devctx->timeout = timeout(devmap_ctxto, in devmap_do_ctxmgt()
2672 devctx, dhp->dh_timeout_length); in devmap_do_ctxmgt()
2680 devctx->oncpu = 0; in devmap_do_ctxmgt()
2681 cv_signal(&devctx->cv); in devmap_do_ctxmgt()
2683 mutex_exit(&devctx->lock); in devmap_do_ctxmgt()
2994 struct devmap_ctx *devctx = dhp->dh_ctx; in devmap_ctx_rele() local
3003 mutex_enter(&devctx->lock); in devmap_ctx_rele()
3005 ASSERT(devctx->refcnt > 0); in devmap_ctx_rele()
3007 devctx->refcnt--; in devmap_ctx_rele()
3012 if (devctx->refcnt == 0) { in devmap_ctx_rele()
3017 if (devctx->timeout != 0) { in devmap_ctx_rele()
3021 tid = devctx->timeout; in devmap_ctx_rele()
3022 mutex_exit(&devctx->lock); in devmap_ctx_rele()
3024 mutex_enter(&devctx->lock); in devmap_ctx_rele()
3027 devctx->oncpu = 0; in devmap_ctx_rele()
3028 cv_signal(&devctx->cv); in devmap_ctx_rele()
3030 if (devmapctx_list == devctx) in devmap_ctx_rele()
3031 devmapctx_list = devctx->next; in devmap_ctx_rele()
3036 if (tmp == devctx) { in devmap_ctx_rele()
3043 mutex_exit(&devctx->lock); in devmap_ctx_rele()
3044 mutex_destroy(&devctx->lock); in devmap_ctx_rele()
3045 cv_destroy(&devctx->cv); in devmap_ctx_rele()
3046 kmem_free(devctx, sizeof (struct devmap_ctx)); in devmap_ctx_rele()
3048 mutex_exit(&devctx->lock); in devmap_ctx_rele()