|
@@ -184,23 +184,32 @@ static int64_t net_slirp_clock_get_ns(void *opaque)
|
|
return qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL);
|
|
return qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+struct SlirpTimer {
|
|
|
|
+ QEMUTimer timer;
|
|
|
|
+}
|
|
|
|
+
|
|
static void *net_slirp_timer_new(SlirpTimerCb cb,
|
|
static void *net_slirp_timer_new(SlirpTimerCb cb,
|
|
void *cb_opaque, void *opaque)
|
|
void *cb_opaque, void *opaque)
|
|
{
|
|
{
|
|
- return timer_new_full(NULL, QEMU_CLOCK_VIRTUAL,
|
|
|
|
- SCALE_MS, QEMU_TIMER_ATTR_EXTERNAL,
|
|
|
|
- cb, cb_opaque);
|
|
|
|
|
|
+ SlirpTimer *t = g_new(SlirpTimer, 1);
|
|
|
|
+ timer_init_full(&t->timer, NULL, QEMU_CLOCK_VIRTUAL,
|
|
|
|
+ SCALE_MS, QEMU_TIMER_ATTR_EXTERNAL,
|
|
|
|
+ cb, cb_opaque);
|
|
|
|
+ return t;
|
|
}
|
|
}
|
|
|
|
|
|
static void net_slirp_timer_free(void *timer, void *opaque)
|
|
static void net_slirp_timer_free(void *timer, void *opaque)
|
|
{
|
|
{
|
|
- timer_free(timer);
|
|
|
|
|
|
+ SlirpTimer *t = timer;
|
|
|
|
+ timer_del(&t->timer);
|
|
|
|
+ g_free(t);
|
|
}
|
|
}
|
|
|
|
|
|
static void net_slirp_timer_mod(void *timer, int64_t expire_timer,
|
|
static void net_slirp_timer_mod(void *timer, int64_t expire_timer,
|
|
void *opaque)
|
|
void *opaque)
|
|
{
|
|
{
|
|
- timer_mod(timer, expire_timer);
|
|
|
|
|
|
+ SlirpTimer *t = timer;
|
|
|
|
+ timer_mod(&t->timer, expire_timer);
|
|
}
|
|
}
|
|
|
|
|
|
static void net_slirp_register_poll_fd(int fd, void *opaque)
|
|
static void net_slirp_register_poll_fd(int fd, void *opaque)
|