May 25, 2025 at 10:56 PM, "Julian Ganz" wrote:
> Richard Henderson wrote:
> > On 5/19/25 16:19, Julian Ganz wrote:
> >  +QEMU_DISABLE_CFI
> >  +static void plugin_vcpu_cb__discon(CPUState *cpu,
> >  + enum qemu_plugin_discon_type type,
> >  + uint64_t from)
> >  +{
> >  + struct qemu_plugin_cb *cb, *next;
> >  + enum qemu_plugin_event ev;
> >  + uint64_t to = cpu->cc->get_pc(cpu);
> >  +
> >  + if (cpu->cpu_index < plugin.num_vcpus) {
> >  + switch (type) {
> >  + case QEMU_PLUGIN_DISCON_INTERRUPT:
> >  + ev = QEMU_PLUGIN_EV_VCPU_INTERRUPT;
> >  + break;
> >  + case QEMU_PLUGIN_DISCON_EXCEPTION:
> >  + ev = QEMU_PLUGIN_EV_VCPU_EXCEPTION;
> >  + break;
> >  + case QEMU_PLUGIN_DISCON_HOSTCALL:
> >  + ev = QEMU_PLUGIN_EV_VCPU_HOSTCALL;
> >  + break;
> >  
> >  No point passing in QEMU_PLUGIN_DISCON_* only to covert it to 
> > QEMU_PLUGIN_EV_*.
> > 
> It easily looks that way, and I myself stubled upon this at least one or two
> times, but `type` is the enum we pass to the callback a few lines down and 
> part
> of the public plugin API. `ev` on the other hand is the offset in the 
> `cb_list`.
> So some translation is neccessary, unfortunately.

I just realized that you probably meant that we should pass ev as a
parameter to plugin_vcpu_cb__discon. This we can obviously do.

Regards,
Julian

Reply via email to