qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [4763] Add an opaque parameter to boot_set API, move functi


From: Blue Swirl
Subject: [Qemu-devel] [4763] Add an opaque parameter to boot_set API, move function to monitor.c
Date: Fri, 20 Jun 2008 16:25:06 +0000

Revision: 4763
          http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=4763
Author:   blueswir1
Date:     2008-06-20 16:25:06 +0000 (Fri, 20 Jun 2008)

Log Message:
-----------
Add an opaque parameter to boot_set API, move function to monitor.c

Modified Paths:
--------------
    trunk/hw/hw.h
    trunk/hw/pc.c
    trunk/monitor.c
    trunk/vl.c

Modified: trunk/hw/hw.h
===================================================================
--- trunk/hw/hw.h       2008-06-20 15:29:38 UTC (rev 4762)
+++ trunk/hw/hw.h       2008-06-20 16:25:06 UTC (rev 4763)
@@ -94,9 +94,8 @@
 
 /* handler to set the boot_device for a specific type of QEMUMachine */
 /* return 0 if success */
-typedef int QEMUBootSetHandler(const char *boot_device);
-extern QEMUBootSetHandler *qemu_boot_set_handler;
-void qemu_register_boot_set(QEMUBootSetHandler *func);
+typedef int QEMUBootSetHandler(void *opaque, const char *boot_device);
+void qemu_register_boot_set(QEMUBootSetHandler *func, void *opaque);
 
 /* These should really be in isa.h, but are here to make pc.h happy.  */
 typedef void (IOPortWriteFunc)(void *opaque, uint32_t address, uint32_t data);

Modified: trunk/hw/pc.c
===================================================================
--- trunk/hw/pc.c       2008-06-20 15:29:38 UTC (rev 4762)
+++ trunk/hw/pc.c       2008-06-20 16:25:06 UTC (rev 4763)
@@ -192,10 +192,10 @@
 
 /* copy/pasted from cmos_init, should be made a general function
  and used there as well */
-int pc_boot_set(const char *boot_device)
+static int pc_boot_set(void *opaque, const char *boot_device)
 {
 #define PC_MAX_BOOT_DEVICES 3
-    RTCState *s = rtc_state;
+    RTCState *s = (RTCState *)opaque;
     int nbds, bds[3] = { 0, };
     int i;
 
@@ -741,8 +741,6 @@
         below_4g_mem_size = ram_size;
     }
 
-    qemu_register_boot_set(pc_boot_set);
-
     linux_boot = (kernel_filename != NULL);
 
     /* init CPUs */
@@ -917,6 +915,8 @@
 
     rtc_state = rtc_init(0x70, i8259[8]);
 
+    qemu_register_boot_set(pc_boot_set, rtc_state);
+
     register_ioport_read(0x92, 1, 1, ioport92_read, NULL);
     register_ioport_write(0x92, 1, 1, ioport92_write, NULL);
 

Modified: trunk/monitor.c
===================================================================
--- trunk/monitor.c     2008-06-20 15:29:38 UTC (rev 4762)
+++ trunk/monitor.c     2008-06-20 16:25:06 UTC (rev 4763)
@@ -1044,12 +1044,22 @@
                 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(const char *bootdevice)
 {
     int res;
 
     if (qemu_boot_set_handler)  {
-        res = qemu_boot_set_handler(bootdevice);
+        res = qemu_boot_set_handler(boot_opaque, bootdevice);
         if (res == 0)
             term_printf("boot device list now set to %s\n", bootdevice);
         else

Modified: trunk/vl.c
===================================================================
--- trunk/vl.c  2008-06-20 15:29:38 UTC (rev 4762)
+++ trunk/vl.c  2008-06-20 16:25:06 UTC (rev 4763)
@@ -6908,14 +6908,6 @@
         cpu_interrupt(cpu_single_env, CPU_INTERRUPT_EXIT);
 }
 
-/* boot_set handler */
-QEMUBootSetHandler *qemu_boot_set_handler = NULL;
-
-void qemu_register_boot_set(QEMUBootSetHandler *func)
-{
-       qemu_boot_set_handler = func;
-}
-
 void main_loop_wait(int timeout)
 {
     IOHandlerRecord *ioh;






reply via email to

[Prev in Thread] Current Thread [Next in Thread]