Revision 7f23f812 hw/qdev.c

b/hw/qdev.c
222 222
    return qdev;
223 223
}
224 224

  
225
static void qdev_reset(void *opaque)
226
{
227
    DeviceState *dev = opaque;
228
    if (dev->info->reset)
229
        dev->info->reset(dev);
230
}
231

  
225 232
/* Initialize a device.  Device properties should be set before calling
226 233
   this function.  IRQs and MMIO regions should be connected/mapped after
227 234
   calling this function.  */
......
233 240
    rc = dev->info->init(dev, dev->info);
234 241
    if (rc < 0)
235 242
        return rc;
236
    if (dev->info->reset)
237
        qemu_register_reset(dev->info->reset, dev);
243
    qemu_register_reset(qdev_reset, dev);
238 244
    if (dev->info->vmsd)
239 245
        vmstate_register(-1, dev->info->vmsd, dev);
240 246
    dev->state = DEV_STATE_INITIALIZED;
......
273 279
        if (dev->info->vmsd)
274 280
            vmstate_unregister(dev->info->vmsd, dev);
275 281
#endif
276
        if (dev->info->reset)
277
            qemu_unregister_reset(dev->info->reset, dev);
278 282
        if (dev->info->exit)
279 283
            dev->info->exit(dev);
280 284
        if (dev->opts)
281 285
            qemu_opts_del(dev->opts);
282 286
    }
287
    qemu_unregister_reset(qdev_reset, dev);
283 288
    QLIST_REMOVE(dev, sibling);
284 289
    qemu_free(dev);
285 290
}

Also available in: Unified diff