qemu-arm
[Top][All Lists]
Advanced

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

[Qemu-arm] [PATCH v10 4/7] hw/ptimer: Support "on the fly" timer mode sw


From: Dmitry Osipenko
Subject: [Qemu-arm] [PATCH v10 4/7] hw/ptimer: Support "on the fly" timer mode switch
Date: Sat, 9 Jan 2016 20:39:52 +0300

Allow to switch between periodic <-> oneshot modes while timer is running.

Signed-off-by: Dmitry Osipenko <address@hidden>
---
 hw/core/ptimer.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/hw/core/ptimer.c b/hw/core/ptimer.c
index 0a54212..6960738 100644
--- a/hw/core/ptimer.c
+++ b/hw/core/ptimer.c
@@ -167,16 +167,16 @@ void ptimer_set_count(ptimer_state *s, uint64_t count)
 
 void ptimer_run(ptimer_state *s, int oneshot)
 {
-    if (s->enabled) {
-        return;
-    }
-    if (s->period == 0) {
+    int was_disabled = !s->enabled;
+    if (was_disabled && s->period == 0) {
         fprintf(stderr, "Timer with period zero, disabling\n");
         return;
     }
     s->enabled = oneshot ? 2 : 1;
-    s->next_event = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL);
-    ptimer_reload(s);
+    if (was_disabled) {
+        s->next_event = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL);
+        ptimer_reload(s);
+    }
 }
 
 /* Pause a timer.  Note that this may cause it to "lose" time, even if it
-- 
2.6.4




reply via email to

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