qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] QEMU Patch
@ 2006-09-03  0:49 Jim Peterson
  0 siblings, 0 replies; only message in thread
From: Jim Peterson @ 2006-09-03  0:49 UTC (permalink / raw)
  To: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 604 bytes --]

  I'm not quite sure where to send this.  I've added a slight modification to 
qemu-0.8.2 that allows the user to specify the desired date and time to which 
to set the real time clock at startup.  The patch is attached.  The date is 
parsed using the getdate(3) function, so the DATEMSK environment variable 
must point to an appropriate file containing the formats to check for.

  My need for this comes about as a side effect from the fact that, for some 
reason, the "-loadvm" command locks up with an XP image on an Opteron 248 
host.  (but it does not seem to lock up on an Pentium 4 host)

--Jim

[-- Attachment #2: qemu-0.8.2-setdate.patch --]
[-- Type: text/x-diff, Size: 2981 bytes --]

diff -ruN qemu-0.8.2/hw/pc.c qemu-0.8.2.new/hw/pc.c
--- qemu-0.8.2/hw/pc.c	2006-07-22 13:23:34.000000000 -0400
+++ qemu-0.8.2.new/hw/pc.c	2006-09-02 15:30:49.000000000 -0400
@@ -163,11 +163,16 @@
     int i;
 
     /* set the CMOS date */
-    time(&ti);
-    if (rtc_utc)
-        tm = gmtime(&ti);
+    if (rtc_use_time)
+        tm = &rtc_tm;
     else
-        tm = localtime(&ti);
+    {
+        time(&ti);
+        if (rtc_utc)
+            tm = gmtime(&ti);
+        else
+            tm = localtime(&ti);
+    }
     rtc_set_date(s, tm);
 
     val = to_bcd(s, (tm->tm_year / 100) + 19);
diff -ruN qemu-0.8.2/vl.c qemu-0.8.2.new/vl.c
--- qemu-0.8.2/vl.c	2006-07-22 13:23:34.000000000 -0400
+++ qemu-0.8.2.new/vl.c	2006-09-02 20:14:44.000000000 -0400
@@ -128,6 +128,8 @@
 QEMUTimer *gui_timer;
 int vm_running;
 int rtc_utc = 1;
+int rtc_use_time = 0;
+struct tm rtc_tm;
 int cirrus_vga_enabled = 1;
 #ifdef TARGET_SPARC
 int graphic_width = 1024;
@@ -5150,6 +5152,7 @@
            "                use -soundhw all to enable all of them\n"
 #endif
            "-localtime      set the real time clock to local time [default=utc]\n"
+           "-date [date]    set the real time clock to given date using getdate(3)\n"
            "-full-screen    start in full screen\n"
 #ifdef TARGET_I386
            "-win2k-hack     use it when installing Windows 2000 to avoid a disk full bug\n"
@@ -5285,6 +5288,7 @@
     QEMU_OPTION_no_code_copy,
     QEMU_OPTION_k,
     QEMU_OPTION_localtime,
+    QEMU_OPTION_setdate,
     QEMU_OPTION_cirrusvga,
     QEMU_OPTION_g,
     QEMU_OPTION_std_vga,
@@ -5362,6 +5366,7 @@
     { "g", 1, QEMU_OPTION_g },
 #endif
     { "localtime", 0, QEMU_OPTION_localtime },
+    { "date", 1, QEMU_OPTION_setdate },
     { "std-vga", 0, QEMU_OPTION_std_vga },
     { "monitor", 1, QEMU_OPTION_monitor },
     { "serial", 1, QEMU_OPTION_serial },
@@ -5607,6 +5612,7 @@
     QEMUMachine *machine;
     char usb_devices[MAX_USB_CMDLINE][128];
     int usb_devices_index;
+    struct tm* tmp_tm;
 
     LIST_INIT (&vm_change_state_head);
 #ifndef _WIN32
@@ -5907,6 +5913,16 @@
             case QEMU_OPTION_localtime:
                 rtc_utc = 0;
                 break;
+            case QEMU_OPTION_setdate:
+                rtc_use_time = 1;
+		tmp_tm = getdate(optarg);
+                if (!tmp_tm)
+		{
+        		fprintf (stderr, "qemu: bad date format '%s'\n",optarg);
+			exit(1);
+		}
+		memcpy(&rtc_tm,tmp_tm,sizeof(rtc_tm));
+                break;
             case QEMU_OPTION_cirrusvga:
                 cirrus_vga_enabled = 1;
                 break;
diff -ruN qemu-0.8.2/vl.h qemu-0.8.2.new/vl.h
--- qemu-0.8.2/vl.h	2006-07-22 13:23:34.000000000 -0400
+++ qemu-0.8.2.new/vl.h	2006-09-02 15:45:25.000000000 -0400
@@ -142,6 +142,8 @@
 extern int ram_size;
 extern int bios_size;
 extern int rtc_utc;
+extern int rtc_use_time;
+extern struct tm rtc_tm;
 extern int cirrus_vga_enabled;
 extern int graphic_width;
 extern int graphic_height;

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2006-09-03  0:49 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-09-03  0:49 [Qemu-devel] QEMU Patch Jim Peterson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).