2 * Stubs for the ptimer-test
4 * Copyright (c) 2016 Dmitry Osipenko <digetx@gmail.com>
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.
11 #include "qemu/osdep.h"
12 #include "qemu/main-loop.h"
13 #include "sysemu/replay.h"
14 #include "migration/vmstate.h"
16 #include "ptimer-test.h"
18 const VMStateInfo vmstate_info_uint8
;
19 const VMStateInfo vmstate_info_uint32
;
20 const VMStateInfo vmstate_info_uint64
;
21 const VMStateInfo vmstate_info_int64
;
22 const VMStateInfo vmstate_info_timer
;
29 QEMUTimerListGroup main_loop_tlg
;
31 int64_t ptimer_test_time_ns
;
33 /* under qtest_enabled(), will not artificially limit period - see hw/core/ptimer.c. */
37 void timer_init_full(QEMUTimer
*ts
,
38 QEMUTimerListGroup
*timer_list_group
, QEMUClockType type
,
39 int scale
, int attributes
,
40 QEMUTimerCB
*cb
, void *opaque
)
42 if (!timer_list_group
) {
43 timer_list_group
= &main_loop_tlg
;
45 ts
->timer_list
= timer_list_group
->tl
[type
];
49 ts
->attributes
= attributes
;
53 void timer_mod(QEMUTimer
*ts
, int64_t expire_time
)
55 QEMUTimerList
*timer_list
= ts
->timer_list
;
56 QEMUTimer
*t
= &timer_list
->active_timers
;
58 while (t
->next
!= NULL
) {
66 ts
->expire_time
= MAX(expire_time
* ts
->scale
, 0);
71 void timer_del(QEMUTimer
*ts
)
73 QEMUTimerList
*timer_list
= ts
->timer_list
;
74 QEMUTimer
*t
= &timer_list
->active_timers
;
76 while (t
->next
!= NULL
) {
86 int64_t qemu_clock_get_ns(QEMUClockType type
)
88 return ptimer_test_time_ns
;
91 int64_t qemu_clock_deadline_ns_all(QEMUClockType type
, int attr_mask
)
93 QEMUTimerList
*timer_list
= main_loop_tlg
.tl
[QEMU_CLOCK_VIRTUAL
];
94 QEMUTimer
*t
= timer_list
->active_timers
.next
;
95 int64_t deadline
= -1;
99 deadline
= t
->expire_time
;
101 deadline
= MIN(deadline
, t
->expire_time
);
110 QEMUBH
*qemu_bh_new_full(QEMUBHFunc
*cb
, void *opaque
, const char *name
)
112 QEMUBH
*bh
= g_new(QEMUBH
, 1);
120 void qemu_bh_delete(QEMUBH
*bh
)