Lines Matching defs:names

41 MALLOC_DEFINE(M_GEM_NAMES, "gem_name", "Hash headers for the gem names");
43 static void drm_gem_names_delete_name(struct drm_gem_names *names,
47 drm_gem_names_init(struct drm_gem_names *names)
50 names->unr = new_unrhdr(1, INT_MAX, NULL); /* XXXKIB */
51 names->names_hash = hashinit(1000 /* XXXKIB */, M_GEM_NAMES,
52 &names->hash_mask);
53 mtx_init(&names->lock, "drmnames", NULL, MTX_DEF);
57 drm_gem_names_fini(struct drm_gem_names *names)
62 mtx_lock(&names->lock);
63 for (i = 0; i <= names->hash_mask; i++) {
64 while ((np = LIST_FIRST(&names->names_hash[i])) != NULL) {
65 drm_gem_names_delete_name(names, np);
66 mtx_lock(&names->lock);
69 mtx_unlock(&names->lock);
70 mtx_destroy(&names->lock);
71 hashdestroy(names->names_hash, M_GEM_NAMES, names->hash_mask);
72 delete_unrhdr(names->unr);
76 gem_name_hash_index(struct drm_gem_names *names, int name)
79 return (&names->names_hash[name & names->hash_mask]);
83 drm_gem_name_ref(struct drm_gem_names *names, uint32_t name,
88 mtx_lock(&names->lock);
89 LIST_FOREACH(n, gem_name_hash_index(names, name), link) {
93 mtx_unlock(&names->lock);
97 mtx_unlock(&names->lock);
120 drm_gem_find_name(struct drm_gem_names *names, void *ptr)
126 drm_gem_names_foreach(names, drm_gem_ptr_match, &arg);
131 drm_gem_find_ptr(struct drm_gem_names *names, uint32_t name)
136 mtx_lock(&names->lock);
137 LIST_FOREACH(n, gem_name_hash_index(names, name), link) {
140 mtx_unlock(&names->lock);
144 mtx_unlock(&names->lock);
149 drm_gem_name_create(struct drm_gem_names *names, void *p, uint32_t *name)
158 mtx_lock(&names->lock);
159 np->name = alloc_unr(names->unr);
161 mtx_unlock(&names->lock);
167 LIST_INSERT_HEAD(gem_name_hash_index(names, np->name), np, link);
168 mtx_unlock(&names->lock);
173 drm_gem_names_delete_name(struct drm_gem_names *names, struct drm_gem_name *np)
176 mtx_assert(&names->lock, MA_OWNED);
178 mtx_unlock(&names->lock);
179 free_unr(names->unr, np->name);
184 drm_gem_names_remove(struct drm_gem_names *names, uint32_t name)
189 mtx_lock(&names->lock);
190 LIST_FOREACH(n, gem_name_hash_index(names, name), link) {
193 drm_gem_names_delete_name(names, n);
197 mtx_unlock(&names->lock);
202 drm_gem_names_foreach(struct drm_gem_names *names,
211 mtx_lock(&names->lock);
212 for (i = 0; i <= names->hash_mask; i++) {
213 for (np = LIST_FIRST(&names->names_hash[i]); np != NULL; ) {
219 mtx_unlock(&names->lock);
221 mtx_lock(&names->lock);
228 mtx_unlock(&names->lock);