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:
parent
0c1450e204
commit
ad2e5b87d7
19
net/slirp.c
19
net/slirp.c
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user