Lines Matching refs:devctx

300 	struct devmap_ctx	*devctx;  in devmap_ctxinit()  local
312 for (devctx = devmapctx_list; devctx != NULL; devctx = devctx->next) in devmap_ctxinit()
313 if ((devctx->dip == dip) && (devctx->id == id)) in devmap_ctxinit()
316 if (devctx == NULL) { in devmap_ctxinit()
317 devctx = tmp; in devmap_ctxinit()
318 devctx->dip = dip; in devmap_ctxinit()
319 devctx->id = id; in devmap_ctxinit()
320 mutex_init(&devctx->lock, NULL, MUTEX_DEFAULT, NULL); in devmap_ctxinit()
321 cv_init(&devctx->cv, NULL, CV_DEFAULT, NULL); in devmap_ctxinit()
322 devctx->next = devmapctx_list; in devmap_ctxinit()
323 devmapctx_list = devctx; in devmap_ctxinit()
327 mutex_enter(&devctx->lock); in devmap_ctxinit()
328 devctx->refcnt++; in devmap_ctxinit()
329 mutex_exit(&devctx->lock); in devmap_ctxinit()
332 return (devctx); in devmap_ctxinit()
342 struct devmap_ctx *devctx = data; in devmap_ctxto() local
345 "devmap_ctxto:timeout expired, devctx=%p", (void *)devctx); in devmap_ctxto()
346 mutex_enter(&devctx->lock); in devmap_ctxto()
351 devctx->oncpu = 0; in devmap_ctxto()
352 devctx->timeout = 0; in devmap_ctxto()
353 cv_signal(&devctx->cv); in devmap_ctxto()
354 mutex_exit(&devctx->lock); in devmap_ctxto()
2596 struct devmap_ctx *devctx; in devmap_do_ctxmgt() local
2613 devctx = dhp->dh_ctx; in devmap_do_ctxmgt()
2629 devctx, dhp); in devmap_do_ctxmgt()
2631 mutex_enter(&devctx->lock); in devmap_do_ctxmgt()
2632 while (devctx->oncpu) in devmap_do_ctxmgt()
2633 cv_wait(&devctx->cv, &devctx->lock); in devmap_do_ctxmgt()
2634 devctx->oncpu = 1; in devmap_do_ctxmgt()
2635 mutex_exit(&devctx->lock); in devmap_do_ctxmgt()
2654 ret, dhp, devctx); in devmap_do_ctxmgt()
2657 if (devctx->oncpu) { in devmap_do_ctxmgt()
2658 mutex_enter(&devctx->lock); in devmap_do_ctxmgt()
2659 devctx->oncpu = 0; in devmap_do_ctxmgt()
2660 cv_signal(&devctx->cv); in devmap_do_ctxmgt()
2661 mutex_exit(&devctx->lock); in devmap_do_ctxmgt()
2670 mutex_enter(&devctx->lock); in devmap_do_ctxmgt()
2674 devctx->timeout = timeout(devmap_ctxto, in devmap_do_ctxmgt()
2675 devctx, dhp->dh_timeout_length); in devmap_do_ctxmgt()
2683 devctx->oncpu = 0; in devmap_do_ctxmgt()
2684 cv_signal(&devctx->cv); in devmap_do_ctxmgt()
2686 mutex_exit(&devctx->lock); in devmap_do_ctxmgt()
2999 struct devmap_ctx *devctx = dhp->dh_ctx; in devmap_ctx_rele() local
3008 mutex_enter(&devctx->lock); in devmap_ctx_rele()
3010 ASSERT(devctx->refcnt > 0); in devmap_ctx_rele()
3012 devctx->refcnt--; in devmap_ctx_rele()
3017 if (devctx->refcnt == 0) { in devmap_ctx_rele()
3022 if (devctx->timeout != 0) { in devmap_ctx_rele()
3026 tid = devctx->timeout; in devmap_ctx_rele()
3027 mutex_exit(&devctx->lock); in devmap_ctx_rele()
3029 mutex_enter(&devctx->lock); in devmap_ctx_rele()
3032 devctx->oncpu = 0; in devmap_ctx_rele()
3033 cv_signal(&devctx->cv); in devmap_ctx_rele()
3035 if (devmapctx_list == devctx) in devmap_ctx_rele()
3036 devmapctx_list = devctx->next; in devmap_ctx_rele()
3041 if (tmp == devctx) { in devmap_ctx_rele()
3048 mutex_exit(&devctx->lock); in devmap_ctx_rele()
3049 mutex_destroy(&devctx->lock); in devmap_ctx_rele()
3050 cv_destroy(&devctx->cv); in devmap_ctx_rele()
3051 kmem_free(devctx, sizeof (struct devmap_ctx)); in devmap_ctx_rele()
3053 mutex_exit(&devctx->lock); in devmap_ctx_rele()