Paolo Bonzini, le mar. 12 avril 2022 14:13:34 +0200, a ecrit: > 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: Samuel Thibault <samuel.thiba...@ens-lyon.org> > --- > 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 > > -- Samuel --- Pour une évaluation indépendante, transparente et rigoureuse ! Je soutiens la Commission d'Évaluation de l'Inria.