diff options
author | Jan Kiszka <jan.kiszka@siemens.com> | 2009-07-02 00:19:02 +0200 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2009-07-16 08:28:12 -0500 |
commit | 76e30d0f13a8eb1f4dee86273b50b17b81dad9f4 (patch) | |
tree | 283ca815fad48064469d10374648d0696cef1ea7 | |
parent | ef3adf68f802da54b2096da8aa3ce97bde54be2e (diff) |
Move boot_set callback backend
Move registration function for the boot_set callback handler and provide
qemu_boot_set so that it can also be used outside the monitor code.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
-rw-r--r-- | hw/hw.h | 5 | ||||
-rw-r--r-- | monitor.c | 23 | ||||
-rw-r--r-- | vl.c | 17 |
3 files changed, 25 insertions, 20 deletions
@@ -262,9 +262,10 @@ typedef void QEMUResetHandler(void *opaque); void qemu_register_reset(QEMUResetHandler *func, void *opaque); -/* handler to set the boot_device for a specific type of QEMUMachine */ +/* handler to set the boot_device order for a specific type of QEMUMachine */ /* return 0 if success */ -typedef int QEMUBootSetHandler(void *opaque, const char *boot_device); +typedef int QEMUBootSetHandler(void *opaque, const char *boot_devices); void qemu_register_boot_set(QEMUBootSetHandler *func, void *opaque); +int qemu_boot_set(const char *boot_devices); #endif @@ -1185,28 +1185,15 @@ static void do_ioport_read(Monitor *mon, int count, int format, int size, suffix, addr, size * 2, val); } -/* boot_set handler */ -static QEMUBootSetHandler *qemu_boot_set_handler = NULL; -static void *boot_opaque; - -void qemu_register_boot_set(QEMUBootSetHandler *func, void *opaque) -{ - qemu_boot_set_handler = func; - boot_opaque = opaque; -} - static void do_boot_set(Monitor *mon, const char *bootdevice) { int res; - if (qemu_boot_set_handler) { - res = qemu_boot_set_handler(boot_opaque, bootdevice); - if (res == 0) - monitor_printf(mon, "boot device list now set to %s\n", - bootdevice); - else - monitor_printf(mon, "setting boot device list failed with " - "error %i\n", res); + res = qemu_boot_set(bootdevice); + if (res == 0) { + monitor_printf(mon, "boot device list now set to %s\n", bootdevice); + } else if (res > 0) { + monitor_printf(mon, "setting boot device list failed\n"); } else { monitor_printf(mon, "no function defined to set boot device list for " "this architecture\n"); @@ -274,6 +274,9 @@ static QEMUTimer *nographic_timer; uint8_t qemu_uuid[16]; +static QEMUBootSetHandler *boot_set_handler; +static void *boot_set_opaque; + /***********************************************************/ /* x86 ISA bus support */ @@ -2356,6 +2359,20 @@ int drive_init(struct drive_opt *arg, int snapshot, void *opaque) return drives_table_idx; } +void qemu_register_boot_set(QEMUBootSetHandler *func, void *opaque) +{ + boot_set_handler = func; + boot_set_opaque = opaque; +} + +int qemu_boot_set(const char *boot_devices) +{ + if (!boot_set_handler) { + return -EINVAL; + } + return boot_set_handler(boot_set_opaque, boot_devices); +} + static int parse_bootdevices(char *devices) { /* We just do some generic consistency checks */ |