On Thu, May 5, 2022 at 1:02 AM Paolo Bonzini <pbonz...@redhat.com> wrote:
> 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. > > Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> > Reviewed-by: Marc-André Lureau <marcandre.lur...@redhat.com> --- > net/slirp.c | 19 ++++++++++++++----- > 1 file changed, 14 insertions(+), 5 deletions(-) > > diff --git a/net/slirp.c b/net/slirp.c > index bc5e9e4f77..f1e25d741f 100644 > --- a/net/slirp.c > +++ b/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) > -- > 2.35.1 > > > -- Marc-André Lureau