summaryrefslogtreecommitdiff
path: root/emulators/kqemu-kmod-devel/files/patch-kqemu-timeout
blob: ed53e1a18b69e42b827c70b8251678ee89c861a6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Index: common/kernel.c
@@ -1079,6 +1079,10 @@ long kqemu_exec(struct kqemu_state *s)
     uint16_t saved_ds, saved_es;
     unsigned long fs_base, gs_base;
 #endif
+#if defined(__FreeBSD__)
+    extern int ticks;
+    int tstart = ticks;
+#endif
     
 #ifdef PROFILE
     s->nb_profile_ts = 0;
@@ -1252,7 +1256,11 @@ long kqemu_exec(struct kqemu_state *s)
                 /* if interrupting user code, we schedule to give time
                    to the other processes. We can be interrupted by a
                    signal a that case. */
-                if (kqemu_schedule()) {
+                if (kqemu_schedule()
+#if defined(__FreeBSD__)
+                    || ticks - tstart > 1
+#endif
+                    ) {
                     restore_cpu_state_from_regs(s, r);
                     ret = KQEMU_RET_INTR;
                     break;