Lines Matching refs:file_priv
284 static void drm_master_release(struct drm_device *dev, struct drm_file *file_priv) in drm_master_release() argument
287 if (drm_i_have_hw_lock(dev, file_priv)) { in drm_master_release()
289 file_priv, _DRM_LOCKING_CONTEXT(file_priv->master->lock.hw_lock->lock)); in drm_master_release()
290 drm_lock_free(&file_priv->master->lock, in drm_master_release()
291 _DRM_LOCKING_CONTEXT(file_priv->master->lock.hw_lock->lock)); in drm_master_release()
295 static void drm_events_release(struct drm_file *file_priv) in drm_events_release() argument
297 struct drm_device *dev = file_priv->minor->dev; in drm_events_release()
306 if (v->base.file_priv == file_priv) { in drm_events_release()
313 list_for_each_entry_safe(e, et, &file_priv->event_list, link) in drm_events_release()
333 struct drm_file *file_priv = data; in drm_release() local
334 struct drm_device *dev = file_priv->minor->dev; in drm_release()
341 dev->driver->preclose(dev, file_priv); in drm_release()
349 (long)file_priv->minor->device, in drm_release()
354 if (file_priv->magic) in drm_release()
355 (void) drm_remove_magic(file_priv->master, file_priv->magic); in drm_release()
358 if (file_priv->minor->master) in drm_release()
359 drm_master_release(dev, file_priv); in drm_release()
362 drm_core_reclaim_buffers(dev, file_priv); in drm_release()
364 drm_events_release(file_priv); in drm_release()
366 seldrain(&file_priv->event_poll); in drm_release()
369 drm_fb_release(file_priv); in drm_release()
372 drm_gem_release(dev, file_priv); in drm_release()
380 if (pos->tag == file_priv && in drm_release()
399 if (file_priv->is_master) { in drm_release()
400 struct drm_master *master = file_priv->master; in drm_release()
403 if ((temp->master == file_priv->master) && in drm_release()
404 (temp != file_priv)) in drm_release()
417 master->lock.file_priv = NULL; in drm_release()
421 if (file_priv->minor->master == file_priv->master) { in drm_release()
424 dev->driver->master_drop(dev, file_priv, true); in drm_release()
425 drm_master_put(&file_priv->minor->master); in drm_release()
430 drm_master_put(&file_priv->master); in drm_release()
431 file_priv->is_master = 0; in drm_release()
432 list_del(&file_priv->lhead); in drm_release()
436 dev->driver->postclose(dev, file_priv); in drm_release()
440 drm_prime_destroy_file_private(&file_priv->prime); in drm_release()
443 free(file_priv, DRM_MEM_FILES); in drm_release()
463 drm_dequeue_event(struct drm_file *file_priv, struct uio *uio, in drm_dequeue_event() argument
473 if (list_empty(&file_priv->event_list)) in drm_dequeue_event()
475 e = list_first_entry(&file_priv->event_list, in drm_dequeue_event()
480 file_priv->event_space += e->event->length; in drm_dequeue_event()
493 struct drm_file *file_priv; in drm_read() local
498 error = devfs_get_cdevpriv((void **)&file_priv); in drm_read()
506 while (list_empty(&file_priv->event_list)) { in drm_read()
511 error = msleep(&file_priv->event_space, &dev->event_lock, in drm_read()
517 while (drm_dequeue_event(file_priv, uio, &e)) { in drm_read()
538 struct drm_file *file_priv; in drm_event_wakeup() local
541 file_priv = e->file_priv; in drm_event_wakeup()
542 dev = file_priv->minor->dev; in drm_event_wakeup()
545 wakeup(&file_priv->event_space); in drm_event_wakeup()
546 selwakeup(&file_priv->event_poll); in drm_event_wakeup()
552 struct drm_file *file_priv; in drm_poll() local
556 error = devfs_get_cdevpriv((void **)&file_priv); in drm_poll()
567 if (list_empty(&file_priv->event_list)) { in drm_poll()
569 selrecord(td, &file_priv->event_poll); in drm_poll()