diff options
Diffstat (limited to 'hw/watchdog.c')
-rw-r--r-- | hw/watchdog.c | 26 |
1 files changed, 6 insertions, 20 deletions
diff --git a/hw/watchdog.c b/hw/watchdog.c index 359c3185e3..adba872533 100644 --- a/hw/watchdog.c +++ b/hw/watchdog.c @@ -20,6 +20,8 @@ */ #include "qemu-common.h" +#include "qemu-option.h" +#include "qemu-config.h" #include "sys-queue.h" #include "sysemu.h" #include "hw/watchdog.h" @@ -32,7 +34,6 @@ #define WDT_DEBUG 5 /* Prints a message and continues running. */ #define WDT_NONE 6 /* Do nothing. */ -static WatchdogTimerModel *watchdog; static int watchdog_action = WDT_RESET; static LIST_HEAD(watchdog_list, WatchdogTimerModel) watchdog_list; @@ -49,12 +50,7 @@ void watchdog_add_model(WatchdogTimerModel *model) int select_watchdog(const char *p) { WatchdogTimerModel *model; - - if (watchdog) { - fprintf(stderr, - "qemu: only one watchdog option may be given\n"); - return 1; - } + QemuOpts *opts; /* -watchdog ? lists available devices and exits cleanly. */ if (strcmp(p, "?") == 0) { @@ -67,7 +63,9 @@ int select_watchdog(const char *p) LIST_FOREACH(model, &watchdog_list, entry) { if (strcasecmp(model->wdt_name, p) == 0) { - watchdog = model; + /* add the device */ + opts = qemu_opts_create(&qemu_device_opts, NULL, 0); + qemu_opt_set(opts, "driver", p); return 0; } } @@ -130,15 +128,3 @@ void watchdog_perform_action(void) break; } } - -void watchdog_pc_init(PCIBus *pci_bus) -{ - if (watchdog) - watchdog->wdt_pc_init(pci_bus); -} - -void register_watchdogs(void) -{ - wdt_ib700_init(); - wdt_i6300esb_init(); -} |