linux/drivers/gpu/drm/nouveau/include/nvkm/core/namedb.h
<<
>>
Prefs
   1#ifndef __NVKM_NAMEDB_H__
   2#define __NVKM_NAMEDB_H__
   3#include <core/parent.h>
   4struct nvkm_handle;
   5
   6struct nvkm_namedb {
   7        struct nvkm_parent parent;
   8        rwlock_t lock;
   9        struct list_head list;
  10};
  11
  12static inline struct nvkm_namedb *
  13nv_namedb(void *obj)
  14{
  15#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
  16        if (unlikely(!nv_iclass(obj, NV_NAMEDB_CLASS)))
  17                nv_assert("BAD CAST -> NvNameDB, %08x", nv_hclass(obj));
  18#endif
  19        return obj;
  20}
  21
  22#define nvkm_namedb_create(p,e,c,v,s,m,d)                                   \
  23        nvkm_namedb_create_((p), (e), (c), (v), (s), (m),                   \
  24                               sizeof(**d), (void **)d)
  25#define nvkm_namedb_init(p)                                                 \
  26        nvkm_parent_init(&(p)->parent)
  27#define nvkm_namedb_fini(p,s)                                               \
  28        nvkm_parent_fini(&(p)->parent, (s))
  29#define nvkm_namedb_destroy(p)                                              \
  30        nvkm_parent_destroy(&(p)->parent)
  31
  32int  nvkm_namedb_create_(struct nvkm_object *, struct nvkm_object *,
  33                            struct nvkm_oclass *, u32 pclass,
  34                            struct nvkm_oclass *, u64 engcls,
  35                            int size, void **);
  36
  37int  _nvkm_namedb_ctor(struct nvkm_object *, struct nvkm_object *,
  38                          struct nvkm_oclass *, void *, u32,
  39                          struct nvkm_object **);
  40#define _nvkm_namedb_dtor _nvkm_parent_dtor
  41#define _nvkm_namedb_init _nvkm_parent_init
  42#define _nvkm_namedb_fini _nvkm_parent_fini
  43
  44int  nvkm_namedb_insert(struct nvkm_namedb *, u32 name, struct nvkm_object *,
  45                        struct nvkm_handle *);
  46void nvkm_namedb_remove(struct nvkm_handle *);
  47
  48struct nvkm_handle *nvkm_namedb_get(struct nvkm_namedb *, u32);
  49struct nvkm_handle *nvkm_namedb_get_class(struct nvkm_namedb *, u16);
  50struct nvkm_handle *nvkm_namedb_get_vinst(struct nvkm_namedb *, u64);
  51struct nvkm_handle *nvkm_namedb_get_cinst(struct nvkm_namedb *, u32);
  52void nvkm_namedb_put(struct nvkm_handle *);
  53#endif
  54