Lines Matching refs:devctx

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