31 #ifdef NOUVEAU_OBJECT_MAGIC
40 int size,
void **pobject)
51 object->oclass->handle |= pclass;
55 #ifdef NOUVEAU_OBJECT_MAGIC
57 spin_lock(&_objlist_lock);
58 list_add(&object->
list, &_objlist);
59 spin_unlock(&_objlist_lock);
74 *pobject = nv_object(
object);
84 #ifdef NOUVEAU_OBJECT_MAGIC
85 spin_lock(&_objlist_lock);
87 spin_unlock(&_objlist_lock);
126 .ctor = _nouveau_object_ctor,
127 .dtor = _nouveau_object_dtor,
128 .init = _nouveau_object_init,
129 .fini = _nouveau_object_fini,
143 ret = ofuncs->
ctor(parent, engine, oclass, data, size, pobject);
146 nv_error(parent,
"failed to create 0x%08x, %d\n",
151 ofuncs->
dtor(*pobject);
166 nv_ofuncs(
object)->dtor(
object);
181 nouveau_object_dtor(*ref);
189 u16 _oclass,
void *data,
u32 size,
203 nv_error(client,
"parent 0x%08x not found\n", _parent);
208 nv_error(parent,
"cannot have children\n");
216 nv_debug(parent,
"illegal class 0x%04x\n", _oclass);
233 if (engine && nv_engine(engine)->cclass) {
235 nv_engine(engine)->cclass,
236 data, size, &engctx);
311 nv_trace(
object,
"initialising...\n");
315 nv_error(
object,
"parent failed, %d\n", ret);
325 nv_error(
object,
"engine failed, %d\n", ret);
330 ret = nv_ofuncs(
object)->init(
object);
332 nv_error(
object,
"init failed, %d\n", ret);
360 ret = nv_ofuncs(
object)->fini(
object,
false);
362 nv_warn(
object,
"failed fini, %d\n", ret);
382 nv_trace(
object,
"suspending...\n");
384 ret = nv_ofuncs(
object)->fini(
object,
true);
386 nv_error(
object,
"failed suspend, %d\n", ret);
395 nv_warn(
object,
"engine failed suspend, %d\n", ret);
403 nv_warn(
object,
"parent failed suspend, %d\n", ret);
417 nv_fatal(
object,
"engine failed to reinit, %d\n", rret);
421 rret = nv_ofuncs(
object)->init(
object);
423 nv_fatal(
object,
"failed to reinit, %d\n", rret);
438 ret = nouveau_object_decs(
object);
440 ret = nouveau_object_decf(
object);
454 #ifdef NOUVEAU_OBJECT_MAGIC
456 if (!list_empty(&_objlist)) {
457 nv_fatal(
NULL,
"*******************************************\n");
459 nv_fatal(
NULL,
"*******************************************\n");