Revision ec990eb6 hw/qdev.c

b/hw/qdev.c
257 257
    return qdev;
258 258
}
259 259

  
260
static void qdev_reset(void *opaque)
261
{
262
    DeviceState *dev = opaque;
263
    if (dev->info->reset)
264
        dev->info->reset(dev);
265
}
266

  
267 260
/* Initialize a device.  Device properties should be set before calling
268 261
   this function.  IRQs and MMIO regions should be connected/mapped after
269 262
   calling this function.
......
279 272
        qdev_free(dev);
280 273
        return rc;
281 274
    }
282
    qemu_register_reset(qdev_reset, dev);
283 275
    if (dev->info->vmsd) {
284 276
        vmstate_register_with_alias_id(dev, -1, dev->info->vmsd, dev,
285 277
                                       dev->instance_id_alias,
......
308 300
    return dev->info->unplug(dev);
309 301
}
310 302

  
303
static int qdev_reset_one(DeviceState *dev, void *opaque)
304
{
305
    if (dev->info->reset) {
306
        dev->info->reset(dev);
307
    }
308

  
309
    return 0;
310
}
311

  
312
BusState *sysbus_get_default(void)
313
{
314
    return main_system_bus;
315
}
316

  
317
void qbus_reset_all(BusState *bus)
318
{
319
    qbus_walk_children(bus, qdev_reset_one, NULL, NULL);
320
}
321

  
311 322
/* can be used as ->unplug() callback for the simple cases */
312 323
int qdev_simple_unplug_cb(DeviceState *dev)
313 324
{
......
351 362
        if (dev->opts)
352 363
            qemu_opts_del(dev->opts);
353 364
    }
354
    qemu_unregister_reset(qdev_reset, dev);
355 365
    QLIST_REMOVE(dev, sibling);
356 366
    for (prop = dev->info->props; prop && prop->name; prop++) {
357 367
        if (prop->info->free) {

Also available in: Unified diff