net: slirp: introduce a wrapper struct for QemuTimer

This struct will be extended in the next few patches to support the
new slirp_handle_timer() call.  For that we need to store an additional
"int" for each SLIRP timer, in addition to the cb_opaque.

Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Reviewed-by: Marc-André Lureau <malureau@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Paolo Bonzini 2022-04-11 09:26:06 +02:00
parent 0c1450e204
commit ad2e5b87d7

View File

@ -184,23 +184,32 @@ static int64_t net_slirp_clock_get_ns(void *opaque)
return qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL);
}
struct SlirpTimer {
QEMUTimer timer;
}
static void *net_slirp_timer_new(SlirpTimerCb cb,
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)
{
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,
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)