qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] Speed up hack


From: Vladimir N. Oleynik
Subject: [Qemu-devel] Speed up hack
Date: Mon, 17 May 2004 20:22:28 +0400
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040117

Hi.

I generate little speed up hack:

1) new TICKS_BEFORE_POLL constant from make cpu loop before
call poll().
2) call DMA_run() if sb16 or floppy present
3) also, for extreme overclocker: if change MAX_FD from 2 to 1,
you can make very little speed up also ;-)


--- vl.c~       2004-05-17 20:15:26.000000000 +0400
+++ vl.c        2004-05-17 19:52:44.000000000 +0400
@@ -1634,6 +1634,8 @@
     }
 }

+#define TICKS_BEFORE_POLL 100
+
 int main_loop(void)
 {
 #ifndef _WIN32
@@ -1641,6 +1643,7 @@
     IOHandlerRecord *ioh, *ioh_next;
     uint8_t buf[4096];
     int n, max_size;
+    int tick_before_poll=TICKS_BEFORE_POLL;
 #endif
     int ret, timeout;
     CPUState *env = global_env;
@@ -1670,6 +1673,11 @@
            Sleep(timeout);
 #else

+       if(tick_before_poll!=0 && timeout==0) {
+               tick_before_poll--;
+               goto ltick_before_poll;
+       }
+       tick_before_poll=TICKS_BEFORE_POLL;
        /* poll any events */
        /* XXX: separate device handlers from system ones */
        pf = ufds;
@@ -1741,6 +1749,7 @@
        }
 #endif

+       ltick_before_poll:
 #endif

        if (vm_running) {
@@ -1750,10 +1759,18 @@
            if (audio_enabled) {
                /* XXX: add explicit timer */
                SB16_run();
-           }
+               DMA_run();
+           } else {
+               int i;

-           /* run dma transfers, if any */
-           DMA_run();
+               /* run dma transfers, if any */
+               for(i = 0; i < MAX_FD; i++) {
+                       if(fd_table[i]) {
+                               DMA_run();
+                               break;
+                       }
+               }
+           }
        }

        /* real time timers */


--w
vodz




reply via email to

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