]> Git Repo - qemu.git/blob - tests/ptimer-test-stubs.c
Merge remote-tracking branch 'remotes/lalrae/tags/mips-20160923' into staging
[qemu.git] / tests / ptimer-test-stubs.c
1 /*
2  * Stubs for the ptimer-test
3  *
4  * Author: Dmitry Osipenko <[email protected]>
5  *
6  * This work is licensed under the terms of the GNU GPL, version 2 or later.
7  * See the COPYING file in the top-level directory.
8  *
9  */
10
11 #include "qemu/osdep.h"
12 #include "qemu/main-loop.h"
13 #include "sysemu/replay.h"
14
15 #include "ptimer-test.h"
16
17 struct QEMUBH {
18     QEMUBHFunc *cb;
19     void *opaque;
20 };
21
22 QEMUTimerListGroup main_loop_tlg;
23
24 int64_t ptimer_test_time_ns;
25
26 void timer_init_tl(QEMUTimer *ts,
27                    QEMUTimerList *timer_list, int scale,
28                    QEMUTimerCB *cb, void *opaque)
29 {
30     ts->timer_list = timer_list;
31     ts->cb = cb;
32     ts->opaque = opaque;
33     ts->scale = scale;
34     ts->expire_time = -1;
35 }
36
37 void timer_mod(QEMUTimer *ts, int64_t expire_time)
38 {
39     QEMUTimerList *timer_list = ts->timer_list;
40     QEMUTimer *t = &timer_list->active_timers;
41
42     while (t->next != NULL) {
43         if (t->next == ts) {
44             break;
45         }
46
47         t = t->next;
48     }
49
50     ts->expire_time = MAX(expire_time * ts->scale, 0);
51     ts->next = NULL;
52     t->next = ts;
53 }
54
55 void timer_del(QEMUTimer *ts)
56 {
57     QEMUTimerList *timer_list = ts->timer_list;
58     QEMUTimer *t = &timer_list->active_timers;
59
60     while (t->next != NULL) {
61         if (t->next == ts) {
62             t->next = ts->next;
63             return;
64         }
65
66         t = t->next;
67     }
68 }
69
70 int64_t qemu_clock_get_ns(QEMUClockType type)
71 {
72     return ptimer_test_time_ns;
73 }
74
75 int64_t qemu_clock_deadline_ns_all(QEMUClockType type)
76 {
77     QEMUTimerList *timer_list = main_loop_tlg.tl[type];
78     QEMUTimer *t = timer_list->active_timers.next;
79     int64_t deadline = -1;
80
81     while (t != NULL) {
82         if (deadline == -1) {
83             deadline = t->expire_time;
84         } else {
85             deadline = MIN(deadline, t->expire_time);
86         }
87
88         t = t->next;
89     }
90
91     return deadline;
92 }
93
94 QEMUBH *qemu_bh_new(QEMUBHFunc *cb, void *opaque)
95 {
96     QEMUBH *bh = g_new(QEMUBH, 1);
97
98     bh->cb = cb;
99     bh->opaque = opaque;
100
101     return bh;
102 }
103
104 void replay_bh_schedule_event(QEMUBH *bh)
105 {
106     bh->cb(bh->opaque);
107 }
This page took 0.029365 seconds and 4 git commands to generate.