monitor: use dynamic cast in monitor_qmp_requests_pop_any_with_lock
This eliminates a use of monitor_is_qmp() from the QMP coroutine dispatch path. Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Tested-by: Peter Krempa <pkrempa@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> Message-ID: <20260706135824.2623960-17-berrange@redhat.com> Signed-off-by: Markus Armbruster <armbru@redhat.com>
Daniel P. Berrangé committed
Jul 6, 2026 at 14:58 UTC
d32de72a739fc4fd38c7422f933ed150480d8d98
1 file changed
+3
-2
monitor/qmp.c
+3
-2
@@ -277,11 +277,12 @@ static QMPRequest *monitor_qmp_requests_pop_any_with_lock(void)
277
MonitorQMP *qmp_mon;
278
279
QTAILQ_FOREACH(mon, &mon_list, entry) {
280
- if (!monitor_is_qmp(mon)) {
280
+ qmp_mon = MONITOR_QMP(
281
+ object_dynamic_cast(OBJECT(mon), TYPE_MONITOR_QMP));
282
+ if (!qmp_mon) {
283
continue;
284
}
285
284
- qmp_mon = container_of(mon, MonitorQMP, parent_obj);
286
qemu_mutex_lock(&qmp_mon->qmp_queue_lock);
287
req_obj = g_queue_pop_head(qmp_mon->qmp_requests);
288
if (req_obj) {