Lines Matching refs:master

106 	struct drm_master *master;  in drm_master_create()  local
108 master = malloc(sizeof(*master), DRM_MEM_KMS, M_NOWAIT | M_ZERO); in drm_master_create()
109 if (!master) in drm_master_create()
112 refcount_init(&master->refcount, 1); in drm_master_create()
113 mtx_init(&master->lock.spinlock, "drm_master__lock__spinlock", in drm_master_create()
115 DRM_INIT_WAITQUEUE(&master->lock.lock_queue); in drm_master_create()
116 drm_ht_create(&master->magiclist, DRM_MAGIC_HASH_ORDER); in drm_master_create()
117 INIT_LIST_HEAD(&master->magicfree); in drm_master_create()
118 master->minor = minor; in drm_master_create()
120 list_add_tail(&master->head, &minor->master_list); in drm_master_create()
122 return master; in drm_master_create()
125 struct drm_master *drm_master_get(struct drm_master *master) in drm_master_get() argument
127 refcount_acquire(&master->refcount); in drm_master_get()
128 return master; in drm_master_get()
132 static void drm_master_destroy(struct drm_master *master) in drm_master_destroy() argument
135 struct drm_device *dev = master->minor->dev; in drm_master_destroy()
138 list_del(&master->head); in drm_master_destroy()
141 dev->driver->master_destroy(dev, master); in drm_master_destroy()
144 if (r_list->master == master) { in drm_master_destroy()
150 if (master->unique) { in drm_master_destroy()
151 free(master->unique, DRM_MEM_DRIVER); in drm_master_destroy()
152 master->unique = NULL; in drm_master_destroy()
153 master->unique_len = 0; in drm_master_destroy()
156 list_for_each_entry_safe(pt, next, &master->magicfree, head) { in drm_master_destroy()
158 drm_ht_remove_item(&master->magiclist, &pt->hash_item); in drm_master_destroy()
162 drm_ht_remove(&master->magiclist); in drm_master_destroy()
164 free(master, DRM_MEM_KMS); in drm_master_destroy()
167 void drm_master_put(struct drm_master **master) in drm_master_put() argument
169 if (refcount_release(&(*master)->refcount)) in drm_master_put()
170 drm_master_destroy(*master); in drm_master_put()
171 *master = NULL; in drm_master_put()
183 if (file_priv->minor->master && file_priv->minor->master != file_priv->master) in drm_setmaster_ioctl()
186 if (!file_priv->master) in drm_setmaster_ioctl()
189 if (file_priv->minor->master) in drm_setmaster_ioctl()
193 file_priv->minor->master = drm_master_get(file_priv->master); in drm_setmaster_ioctl()
199 drm_master_put(&file_priv->minor->master); in drm_setmaster_ioctl()
213 if (!file_priv->minor->master) in drm_dropmaster_ioctl()
219 drm_master_put(&file_priv->minor->master); in drm_dropmaster_ioctl()