Lines Matching refs:master
92 struct drm_master *master; in drm_master_create() local
94 master = kzalloc(sizeof(*master), GFP_KERNEL); in drm_master_create()
95 if (!master) in drm_master_create()
98 kref_init(&master->refcount); in drm_master_create()
99 spin_lock_init(&master->lock.spinlock); in drm_master_create()
100 init_waitqueue_head(&master->lock.lock_queue); in drm_master_create()
101 idr_init(&master->magic_map); in drm_master_create()
102 master->minor = minor; in drm_master_create()
104 return master; in drm_master_create()
107 struct drm_master *drm_master_get(struct drm_master *master) in drm_master_get() argument
109 kref_get(&master->refcount); in drm_master_get()
110 return master; in drm_master_get()
116 struct drm_master *master = container_of(kref, struct drm_master, refcount); in drm_master_destroy() local
117 struct drm_device *dev = master->minor->dev; in drm_master_destroy()
122 dev->driver->master_destroy(dev, master); in drm_master_destroy()
125 if (r_list->master == master) { in drm_master_destroy()
132 idr_destroy(&master->magic_map); in drm_master_destroy()
133 kfree(master->unique); in drm_master_destroy()
134 kfree(master); in drm_master_destroy()
137 void drm_master_put(struct drm_master **master) in drm_master_put() argument
139 kref_put(&(*master)->refcount, drm_master_destroy); in drm_master_put()
140 *master = NULL; in drm_master_put()
153 if (file_priv->minor->master) { in drm_setmaster_ioctl()
158 if (!file_priv->master) { in drm_setmaster_ioctl()
168 file_priv->minor->master = drm_master_get(file_priv->master); in drm_setmaster_ioctl()
174 drm_master_put(&file_priv->minor->master); in drm_setmaster_ioctl()
192 if (!file_priv->minor->master) in drm_dropmaster_ioctl()
198 drm_master_put(&file_priv->minor->master); in drm_dropmaster_ioctl()