• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-12-stable/sys/dev/drm2/

Lines Matching refs:names

43 MALLOC_DEFINE(M_GEM_NAMES, "gem_name", "Hash headers for the gem names");
45 static void drm_gem_names_delete_name(struct drm_gem_names *names,
49 drm_gem_names_init(struct drm_gem_names *names)
52 names->unr = new_unrhdr(1, INT_MAX, NULL); /* XXXKIB */
53 names->names_hash = hashinit(1000 /* XXXKIB */, M_GEM_NAMES,
54 &names->hash_mask);
55 mtx_init(&names->lock, "drmnames", NULL, MTX_DEF);
59 drm_gem_names_fini(struct drm_gem_names *names)
64 mtx_lock(&names->lock);
65 for (i = 0; i <= names->hash_mask; i++) {
66 while ((np = LIST_FIRST(&names->names_hash[i])) != NULL) {
67 drm_gem_names_delete_name(names, np);
68 mtx_lock(&names->lock);
71 mtx_unlock(&names->lock);
72 mtx_destroy(&names->lock);
73 hashdestroy(names->names_hash, M_GEM_NAMES, names->hash_mask);
74 delete_unrhdr(names->unr);
78 gem_name_hash_index(struct drm_gem_names *names, int name)
81 return (&names->names_hash[name & names->hash_mask]);
85 drm_gem_name_ref(struct drm_gem_names *names, uint32_t name,
90 mtx_lock(&names->lock);
91 LIST_FOREACH(n, gem_name_hash_index(names, name), link) {
95 mtx_unlock(&names->lock);
99 mtx_unlock(&names->lock);
122 drm_gem_find_name(struct drm_gem_names *names, void *ptr)
128 drm_gem_names_foreach(names, drm_gem_ptr_match, &arg);
133 drm_gem_find_ptr(struct drm_gem_names *names, uint32_t name)
138 mtx_lock(&names->lock);
139 LIST_FOREACH(n, gem_name_hash_index(names, name), link) {
142 mtx_unlock(&names->lock);
146 mtx_unlock(&names->lock);
151 drm_gem_name_create(struct drm_gem_names *names, void *p, uint32_t *name)
160 mtx_lock(&names->lock);
161 np->name = alloc_unr(names->unr);
163 mtx_unlock(&names->lock);
169 LIST_INSERT_HEAD(gem_name_hash_index(names, np->name), np, link);
170 mtx_unlock(&names->lock);
175 drm_gem_names_delete_name(struct drm_gem_names *names, struct drm_gem_name *np)
178 mtx_assert(&names->lock, MA_OWNED);
180 mtx_unlock(&names->lock);
181 free_unr(names->unr, np->name);
186 drm_gem_names_remove(struct drm_gem_names *names, uint32_t name)
191 mtx_lock(&names->lock);
192 LIST_FOREACH(n, gem_name_hash_index(names, name), link) {
195 drm_gem_names_delete_name(names, n);
199 mtx_unlock(&names->lock);
204 drm_gem_names_foreach(struct drm_gem_names *names,
213 mtx_lock(&names->lock);
214 for (i = 0; i <= names->hash_mask; i++) {
215 for (np = LIST_FIRST(&names->names_hash[i]); np != NULL; ) {
221 mtx_unlock(&names->lock);
223 mtx_lock(&names->lock);
230 mtx_unlock(&names->lock);