Commit 3b4366de399b384d715c631d32f024c2bde3a38a
1 parent
3f05d3dc
Add an opaque parameter to boot_set API, move function to monitor.c
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4763 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
4 changed files
with
17 additions
and
16 deletions
hw/hw.h
| ... | ... | @@ -94,9 +94,8 @@ void qemu_register_reset(QEMUResetHandler *func, void *opaque); |
| 94 | 94 | |
| 95 | 95 | /* handler to set the boot_device for a specific type of QEMUMachine */ |
| 96 | 96 | /* return 0 if success */ |
| 97 | -typedef int QEMUBootSetHandler(const char *boot_device); | |
| 98 | -extern QEMUBootSetHandler *qemu_boot_set_handler; | |
| 99 | -void qemu_register_boot_set(QEMUBootSetHandler *func); | |
| 97 | +typedef int QEMUBootSetHandler(void *opaque, const char *boot_device); | |
| 98 | +void qemu_register_boot_set(QEMUBootSetHandler *func, void *opaque); | |
| 100 | 99 | |
| 101 | 100 | /* These should really be in isa.h, but are here to make pc.h happy. */ |
| 102 | 101 | typedef void (IOPortWriteFunc)(void *opaque, uint32_t address, uint32_t data); | ... | ... |
hw/pc.c
| ... | ... | @@ -192,10 +192,10 @@ static int boot_device2nibble(char boot_device) |
| 192 | 192 | |
| 193 | 193 | /* copy/pasted from cmos_init, should be made a general function |
| 194 | 194 | and used there as well */ |
| 195 | -int pc_boot_set(const char *boot_device) | |
| 195 | +static int pc_boot_set(void *opaque, const char *boot_device) | |
| 196 | 196 | { |
| 197 | 197 | #define PC_MAX_BOOT_DEVICES 3 |
| 198 | - RTCState *s = rtc_state; | |
| 198 | + RTCState *s = (RTCState *)opaque; | |
| 199 | 199 | int nbds, bds[3] = { 0, }; |
| 200 | 200 | int i; |
| 201 | 201 | |
| ... | ... | @@ -741,8 +741,6 @@ static void pc_init1(ram_addr_t ram_size, int vga_ram_size, |
| 741 | 741 | below_4g_mem_size = ram_size; |
| 742 | 742 | } |
| 743 | 743 | |
| 744 | - qemu_register_boot_set(pc_boot_set); | |
| 745 | - | |
| 746 | 744 | linux_boot = (kernel_filename != NULL); |
| 747 | 745 | |
| 748 | 746 | /* init CPUs */ |
| ... | ... | @@ -917,6 +915,8 @@ static void pc_init1(ram_addr_t ram_size, int vga_ram_size, |
| 917 | 915 | |
| 918 | 916 | rtc_state = rtc_init(0x70, i8259[8]); |
| 919 | 917 | |
| 918 | + qemu_register_boot_set(pc_boot_set, rtc_state); | |
| 919 | + | |
| 920 | 920 | register_ioport_read(0x92, 1, 1, ioport92_read, NULL); |
| 921 | 921 | register_ioport_write(0x92, 1, 1, ioport92_write, NULL); |
| 922 | 922 | ... | ... |
monitor.c
| ... | ... | @@ -1044,12 +1044,22 @@ static void do_ioport_read(int count, int format, int size, int addr, int has_in |
| 1044 | 1044 | suffix, addr, size * 2, val); |
| 1045 | 1045 | } |
| 1046 | 1046 | |
| 1047 | +/* boot_set handler */ | |
| 1048 | +static QEMUBootSetHandler *qemu_boot_set_handler = NULL; | |
| 1049 | +static void *boot_opaque; | |
| 1050 | + | |
| 1051 | +void qemu_register_boot_set(QEMUBootSetHandler *func, void *opaque) | |
| 1052 | +{ | |
| 1053 | + qemu_boot_set_handler = func; | |
| 1054 | + boot_opaque = opaque; | |
| 1055 | +} | |
| 1056 | + | |
| 1047 | 1057 | static void do_boot_set(const char *bootdevice) |
| 1048 | 1058 | { |
| 1049 | 1059 | int res; |
| 1050 | 1060 | |
| 1051 | 1061 | if (qemu_boot_set_handler) { |
| 1052 | - res = qemu_boot_set_handler(bootdevice); | |
| 1062 | + res = qemu_boot_set_handler(boot_opaque, bootdevice); | |
| 1053 | 1063 | if (res == 0) |
| 1054 | 1064 | term_printf("boot device list now set to %s\n", bootdevice); |
| 1055 | 1065 | else | ... | ... |
vl.c
| ... | ... | @@ -6908,14 +6908,6 @@ void qemu_system_powerdown_request(void) |
| 6908 | 6908 | cpu_interrupt(cpu_single_env, CPU_INTERRUPT_EXIT); |
| 6909 | 6909 | } |
| 6910 | 6910 | |
| 6911 | -/* boot_set handler */ | |
| 6912 | -QEMUBootSetHandler *qemu_boot_set_handler = NULL; | |
| 6913 | - | |
| 6914 | -void qemu_register_boot_set(QEMUBootSetHandler *func) | |
| 6915 | -{ | |
| 6916 | - qemu_boot_set_handler = func; | |
| 6917 | -} | |
| 6918 | - | |
| 6919 | 6911 | void main_loop_wait(int timeout) |
| 6920 | 6912 | { |
| 6921 | 6913 | IOHandlerRecord *ioh; | ... | ... |