[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PULL 39/40] monitor: Use QEMU_CLOCK_VIRTUAL for the event
From: |
Kevin Wolf |
Subject: |
[Qemu-block] [PULL 39/40] monitor: Use QEMU_CLOCK_VIRTUAL for the event queue in qtest mode |
Date: |
Mon, 14 Mar 2016 18:37:40 +0100 |
From: Alberto Garcia <address@hidden>
This allows us to perform tests on the monitor queues to verify that
the rate limits are enforced.
Signed-off-by: Alberto Garcia <address@hidden>
Reviewed-by: Max Reitz <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>
---
monitor.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/monitor.c b/monitor.c
index c9fe862..894f862 100644
--- a/monitor.c
+++ b/monitor.c
@@ -76,6 +76,7 @@
#include "qapi-event.h"
#include "qmp-introspect.h"
#include "sysemu/block-backend.h"
+#include "sysemu/qtest.h"
/* for hmp_info_irq/pic */
#if defined(TARGET_SPARC)
@@ -232,6 +233,8 @@ static const mon_cmd_t qmp_cmds[];
Monitor *cur_mon;
+static QEMUClockType event_clock_type = QEMU_CLOCK_REALTIME;
+
static void monitor_command_cb(void *opaque, const char *cmdline,
void *readline_opaque);
@@ -513,7 +516,7 @@ monitor_qapi_event_queue(QAPIEvent event, QDict *qdict,
Error **errp)
* monitor_qapi_event_handler() in evconf->rate ns. Any
* events arriving before then will be delayed until then.
*/
- int64_t now = qemu_clock_get_ns(QEMU_CLOCK_REALTIME);
+ int64_t now = qemu_clock_get_ns(event_clock_type);
monitor_qapi_event_emit(event, qdict);
@@ -522,7 +525,7 @@ monitor_qapi_event_queue(QAPIEvent event, QDict *qdict,
Error **errp)
evstate->data = data;
QINCREF(evstate->data);
evstate->qdict = NULL;
- evstate->timer = timer_new_ns(QEMU_CLOCK_REALTIME,
+ evstate->timer = timer_new_ns(event_clock_type,
monitor_qapi_event_handler,
evstate);
g_hash_table_add(monitor_qapi_event_state, evstate);
@@ -547,7 +550,7 @@ static void monitor_qapi_event_handler(void *opaque)
qemu_mutex_lock(&monitor_lock);
if (evstate->qdict) {
- int64_t now = qemu_clock_get_ns(QEMU_CLOCK_REALTIME);
+ int64_t now = qemu_clock_get_ns(event_clock_type);
monitor_qapi_event_emit(evstate->event, evstate->qdict);
QDECREF(evstate->qdict);
@@ -603,6 +606,10 @@ static gboolean qapi_event_throttle_equal(const void *a,
const void *b)
static void monitor_qapi_event_init(void)
{
+ if (qtest_enabled()) {
+ event_clock_type = QEMU_CLOCK_VIRTUAL;
+ }
+
monitor_qapi_event_state = g_hash_table_new(qapi_event_throttle_hash,
qapi_event_throttle_equal);
qmp_event_set_func_emit(monitor_qapi_event_queue);
--
1.8.3.1
- [Qemu-block] [PULL 36/40] iotests: Correct 081's reference output, (continued)
- [Qemu-block] [PULL 36/40] iotests: Correct 081's reference output, Kevin Wolf, 2016/03/14
- [Qemu-block] [PULL 26/40] sheepdog: Use BB functions in .bdrv_create(), Kevin Wolf, 2016/03/14
- [Qemu-block] [PULL 33/40] typedefs: Add BdrvDirtyBitmap, Kevin Wolf, 2016/03/14
- [Qemu-block] [PULL 35/40] block: Remove unused typedef of BlockDriverDirtyHandler, Kevin Wolf, 2016/03/14
- [Qemu-block] [PULL 37/40] quorum: Fix crash in quorum_aio_cb(), Kevin Wolf, 2016/03/14
- [Qemu-block] [PULL 34/40] block: Move block dirty bitmap code to separate files, Kevin Wolf, 2016/03/14
- [Qemu-block] [PULL 30/40] vpc: Use BB functions in .bdrv_create(), Kevin Wolf, 2016/03/14
- [Qemu-block] [PULL 31/40] backup: Use Bitmap to replace "s->bitmap", Kevin Wolf, 2016/03/14
- [Qemu-block] [PULL 32/40] block: Include hbitmap.h in block.h, Kevin Wolf, 2016/03/14
- [Qemu-block] [PULL 38/40] monitor: Separate QUORUM_REPORT_BAD events according to the node name, Kevin Wolf, 2016/03/14
- [Qemu-block] [PULL 39/40] monitor: Use QEMU_CLOCK_VIRTUAL for the event queue in qtest mode,
Kevin Wolf <=
- [Qemu-block] [PULL 40/40] iotests: Add test for QMP event rates, Kevin Wolf, 2016/03/14
- Re: [Qemu-block] [Qemu-devel] [PULL 00/40] Block patches, Peter Maydell, 2016/03/15