Lines Matching full:master
104 struct drm_master *master; in drm_master_create() local
106 master = malloc(sizeof(*master), DRM_MEM_KMS, M_NOWAIT | M_ZERO); in drm_master_create()
107 if (!master) in drm_master_create()
110 refcount_init(&master->refcount, 1); in drm_master_create()
111 mtx_init(&master->lock.spinlock, "drm_master__lock__spinlock", in drm_master_create()
113 DRM_INIT_WAITQUEUE(&master->lock.lock_queue); in drm_master_create()
114 drm_ht_create(&master->magiclist, DRM_MAGIC_HASH_ORDER); in drm_master_create()
115 INIT_LIST_HEAD(&master->magicfree); in drm_master_create()
116 master->minor = minor; in drm_master_create()
118 list_add_tail(&master->head, &minor->master_list); in drm_master_create()
120 return master; in drm_master_create()
123 struct drm_master *drm_master_get(struct drm_master *master) in drm_master_get() argument
125 refcount_acquire(&master->refcount); in drm_master_get()
126 return master; in drm_master_get()
130 static void drm_master_destroy(struct drm_master *master) in drm_master_destroy() argument
133 struct drm_device *dev = master->minor->dev; in drm_master_destroy()
136 list_del(&master->head); in drm_master_destroy()
139 dev->driver->master_destroy(dev, master); in drm_master_destroy()
142 if (r_list->master == master) { in drm_master_destroy()
148 if (master->unique) { in drm_master_destroy()
149 free(master->unique, DRM_MEM_DRIVER); in drm_master_destroy()
150 master->unique = NULL; in drm_master_destroy()
151 master->unique_len = 0; in drm_master_destroy()
154 list_for_each_entry_safe(pt, next, &master->magicfree, head) { in drm_master_destroy()
156 drm_ht_remove_item(&master->magiclist, &pt->hash_item); in drm_master_destroy()
160 drm_ht_remove(&master->magiclist); in drm_master_destroy()
162 free(master, DRM_MEM_KMS); in drm_master_destroy()
165 void drm_master_put(struct drm_master **master) in drm_master_put() argument
167 if (refcount_release(&(*master)->refcount)) in drm_master_put()
168 drm_master_destroy(*master); in drm_master_put()
169 *master = NULL; in drm_master_put()
181 if (file_priv->minor->master && file_priv->minor->master != file_priv->master) in drm_setmaster_ioctl()
184 if (!file_priv->master) in drm_setmaster_ioctl()
187 if (file_priv->minor->master) in drm_setmaster_ioctl()
191 file_priv->minor->master = drm_master_get(file_priv->master); in drm_setmaster_ioctl()
197 drm_master_put(&file_priv->minor->master); in drm_setmaster_ioctl()
211 if (!file_priv->minor->master) in drm_dropmaster_ioctl()
217 drm_master_put(&file_priv->minor->master); in drm_dropmaster_ioctl()