Lines Matching refs:names
41 static void drm_gem_names_delete_name(struct drm_gem_names *names,
45 drm_gem_names_init(struct drm_gem_names *names) in drm_gem_names_init() argument
48 names->unr = new_unrhdr(1, INT_MAX, NULL); /* XXXKIB */ in drm_gem_names_init()
49 names->names_hash = hashinit(1000 /* XXXKIB */, M_GEM_NAMES, in drm_gem_names_init()
50 &names->hash_mask); in drm_gem_names_init()
51 mtx_init(&names->lock, "drmnames", NULL, MTX_DEF); in drm_gem_names_init()
55 drm_gem_names_fini(struct drm_gem_names *names) in drm_gem_names_fini() argument
60 mtx_lock(&names->lock); in drm_gem_names_fini()
61 for (i = 0; i <= names->hash_mask; i++) { in drm_gem_names_fini()
62 while ((np = LIST_FIRST(&names->names_hash[i])) != NULL) { in drm_gem_names_fini()
63 drm_gem_names_delete_name(names, np); in drm_gem_names_fini()
64 mtx_lock(&names->lock); in drm_gem_names_fini()
67 mtx_unlock(&names->lock); in drm_gem_names_fini()
68 mtx_destroy(&names->lock); in drm_gem_names_fini()
69 hashdestroy(names->names_hash, M_GEM_NAMES, names->hash_mask); in drm_gem_names_fini()
70 delete_unrhdr(names->unr); in drm_gem_names_fini()
74 gem_name_hash_index(struct drm_gem_names *names, int name) in gem_name_hash_index() argument
77 return (&names->names_hash[name & names->hash_mask]); in gem_name_hash_index()
81 drm_gem_name_ref(struct drm_gem_names *names, uint32_t name, in drm_gem_name_ref() argument
86 mtx_lock(&names->lock); in drm_gem_name_ref()
87 LIST_FOREACH(n, gem_name_hash_index(names, name), link) { in drm_gem_name_ref()
91 mtx_unlock(&names->lock); in drm_gem_name_ref()
95 mtx_unlock(&names->lock); in drm_gem_name_ref()
118 drm_gem_find_name(struct drm_gem_names *names, void *ptr) in drm_gem_find_name() argument
124 drm_gem_names_foreach(names, drm_gem_ptr_match, &arg); in drm_gem_find_name()
129 drm_gem_find_ptr(struct drm_gem_names *names, uint32_t name) in drm_gem_find_ptr() argument
134 mtx_lock(&names->lock); in drm_gem_find_ptr()
135 LIST_FOREACH(n, gem_name_hash_index(names, name), link) { in drm_gem_find_ptr()
138 mtx_unlock(&names->lock); in drm_gem_find_ptr()
142 mtx_unlock(&names->lock); in drm_gem_find_ptr()
147 drm_gem_name_create(struct drm_gem_names *names, void *p, uint32_t *name) in drm_gem_name_create() argument
156 mtx_lock(&names->lock); in drm_gem_name_create()
157 np->name = alloc_unr(names->unr); in drm_gem_name_create()
159 mtx_unlock(&names->lock); in drm_gem_name_create()
165 LIST_INSERT_HEAD(gem_name_hash_index(names, np->name), np, link); in drm_gem_name_create()
166 mtx_unlock(&names->lock); in drm_gem_name_create()
171 drm_gem_names_delete_name(struct drm_gem_names *names, struct drm_gem_name *np) in drm_gem_names_delete_name() argument
174 mtx_assert(&names->lock, MA_OWNED); in drm_gem_names_delete_name()
176 mtx_unlock(&names->lock); in drm_gem_names_delete_name()
177 free_unr(names->unr, np->name); in drm_gem_names_delete_name()
182 drm_gem_names_remove(struct drm_gem_names *names, uint32_t name) in drm_gem_names_remove() argument
187 mtx_lock(&names->lock); in drm_gem_names_remove()
188 LIST_FOREACH(n, gem_name_hash_index(names, name), link) { in drm_gem_names_remove()
191 drm_gem_names_delete_name(names, n); in drm_gem_names_remove()
195 mtx_unlock(&names->lock); in drm_gem_names_remove()
200 drm_gem_names_foreach(struct drm_gem_names *names, in drm_gem_names_foreach() argument
209 mtx_lock(&names->lock); in drm_gem_names_foreach()
210 for (i = 0; i <= names->hash_mask; i++) { in drm_gem_names_foreach()
211 for (np = LIST_FIRST(&names->names_hash[i]); np != NULL; ) { in drm_gem_names_foreach()
217 mtx_unlock(&names->lock); in drm_gem_names_foreach()
219 mtx_lock(&names->lock); in drm_gem_names_foreach()
226 mtx_unlock(&names->lock); in drm_gem_names_foreach()