Commit 3b4366de399b384d715c631d32f024c2bde3a38a

Authored by blueswir1
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
... ... @@ -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);
... ...
... ... @@ -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
... ...
... ... @@ -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;
... ...