void kobj_class_free(kobj_class_t cls) { int i; kobj_method_t *m; void* ops = NULL; KOBJ_ASSERT(MA_NOTOWNED); KOBJ_LOCK(); /* * Protect against a race between kobj_create and * kobj_delete. */ if (cls->refs == 0) { /* * Unregister any methods which are no longer used. */ for (i = 0, m = cls->methods; m->desc; i++, m++) kobj_unregister_method(m->desc); /* * Free memory and clean up. */ ops = cls->ops; cls->ops = NULL; } KOBJ_UNLOCK(); if (ops) free(ops, M_KOBJ); }
void kobj_class_free(kobj_class_t cls) { int i; kobj_method_t *m; /* * Unregister any methods which are no longer used. */ for (i = 0, m = cls->methods; m->desc; i++, m++) kobj_unregister_method(m->desc); /* * Free memory and clean up. */ free(cls->ops, M_KOBJ); cls->ops = 0; }