Lines Matching refs:master

99 	struct drm_master *master;  in drm_master_create()  local
101 master = kzalloc(sizeof(*master), GFP_KERNEL); in drm_master_create()
102 if (!master) in drm_master_create()
105 kref_init(&master->refcount); in drm_master_create()
106 spin_lock_init(&master->lock.spinlock); in drm_master_create()
107 init_waitqueue_head(&master->lock.lock_queue); in drm_master_create()
108 if (drm_ht_create(&master->magiclist, DRM_MAGIC_HASH_ORDER)) { in drm_master_create()
109 kfree(master); in drm_master_create()
112 INIT_LIST_HEAD(&master->magicfree); in drm_master_create()
113 master->minor = minor; in drm_master_create()
115 return master; in drm_master_create()
118 struct drm_master *drm_master_get(struct drm_master *master) in drm_master_get() argument
120 kref_get(&master->refcount); in drm_master_get()
121 return master; in drm_master_get()
127 struct drm_master *master = container_of(kref, struct drm_master, refcount); in drm_master_destroy() local
128 struct drm_device *dev = master->minor->dev; in drm_master_destroy()
133 dev->driver->master_destroy(dev, master); in drm_master_destroy()
136 if (r_list->master == master) { in drm_master_destroy()
142 if (master->unique) { in drm_master_destroy()
143 kfree(master->unique); in drm_master_destroy()
144 master->unique = NULL; in drm_master_destroy()
145 master->unique_len = 0; in drm_master_destroy()
148 drm_ht_remove(&master->magiclist); in drm_master_destroy()
151 kfree(master); in drm_master_destroy()
154 void drm_master_put(struct drm_master **master) in drm_master_put() argument
156 kref_put(&(*master)->refcount, drm_master_destroy); in drm_master_put()
157 *master = NULL; in drm_master_put()
170 if (file_priv->minor->master) { in drm_setmaster_ioctl()
175 if (!file_priv->master) { in drm_setmaster_ioctl()
180 file_priv->minor->master = drm_master_get(file_priv->master); in drm_setmaster_ioctl()
186 drm_master_put(&file_priv->minor->master); in drm_setmaster_ioctl()
204 if (!file_priv->minor->master) in drm_dropmaster_ioctl()
210 drm_master_put(&file_priv->minor->master); in drm_dropmaster_ioctl()