diff options
| author | Peter Maydell <peter.maydell@linaro.org> | 2018-05-04 13:49:08 +0100 |
|---|---|---|
| committer | Peter Maydell <peter.maydell@linaro.org> | 2018-05-04 13:49:08 +0100 |
| commit | 7c867af89a43e4be56ea25dd9691196eb1818fe6 (patch) | |
| tree | ce2da0f65f3408a71fb30ec086e15e3fd6a44d77 /monitor.c | |
| parent | 46e04dacd3a6e7e453fb0b76b144b5fc67f52349 (diff) | |
| parent | 6ffa3ab453b431ec047ff1fc87120059b5266014 (diff) | |
| download | focaccia-qemu-7c867af89a43e4be56ea25dd9691196eb1818fe6.tar.gz focaccia-qemu-7c867af89a43e4be56ea25dd9691196eb1818fe6.zip | |
Merge remote-tracking branch 'remotes/armbru/tags/pull-qapi-2018-05-04' into staging
QAPI patches for 2018-05-04 # gpg: Signature made Fri 04 May 2018 08:59:16 BST # gpg: using RSA key 3870B400EB918653 # gpg: Good signature from "Markus Armbruster <armbru@redhat.com>" # gpg: aka "Markus Armbruster <armbru@pond.sub.org>" # Primary key fingerprint: 354B C8B3 D7EB 2A6B 6867 4E5F 3870 B400 EB91 8653 * remotes/armbru/tags/pull-qapi-2018-05-04: qapi: deprecate CpuInfoFast.arch qapi: discriminate CpuInfoFast on SysEmuTarget, not CpuInfoArch qapi: change the type of TargetInfo.arch from string to enum SysEmuTarget qapi: add SysEmuTarget to "common.json" qapi: fill in CpuInfoFast.arch in query-cpus-fast qobject: Modify qobject_ref() to return obj qobject: Replace qobject_incref/QINCREF qobject_decref/QDECREF qobject: use a QObjectBase_ struct qobject: Ensure base is at offset 0 qobject: Use qobject_to() instead of type cast Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'monitor.c')
| -rw-r--r-- | monitor.c | 58 |
1 files changed, 26 insertions, 32 deletions
diff --git a/monitor.c b/monitor.c index 39f8ee17ba..46814af533 100644 --- a/monitor.c +++ b/monitor.c @@ -329,8 +329,8 @@ int monitor_read_password(Monitor *mon, ReadLineFunc *readline_func, static void qmp_request_free(QMPRequest *req) { - qobject_decref(req->id); - qobject_decref(req->req); + qobject_unref(req->id); + qobject_unref(req->req); g_free(req); } @@ -346,7 +346,7 @@ static void monitor_qmp_cleanup_req_queue_locked(Monitor *mon) static void monitor_qmp_cleanup_resp_queue_locked(Monitor *mon) { while (!g_queue_is_empty(mon->qmp.qmp_responses)) { - qobject_decref(g_queue_pop_head(mon->qmp.qmp_responses)); + qobject_unref((QObject *)g_queue_pop_head(mon->qmp.qmp_responses)); } } @@ -391,14 +391,14 @@ static void monitor_flush_locked(Monitor *mon) rc = qemu_chr_fe_write(&mon->chr, (const uint8_t *) buf, len); if ((rc < 0 && errno != EAGAIN) || (rc == len)) { /* all flushed or error */ - QDECREF(mon->outbuf); + qobject_unref(mon->outbuf); mon->outbuf = qstring_new(); return; } if (rc > 0) { /* partial write */ QString *tmp = qstring_from_str(buf + rc); - QDECREF(mon->outbuf); + qobject_unref(mon->outbuf); mon->outbuf = tmp; } if (mon->out_watch == 0) { @@ -482,7 +482,7 @@ static void monitor_json_emitter_raw(Monitor *mon, qstring_append_chr(json, '\n'); monitor_puts(mon, qstring_get_str(json)); - QDECREF(json); + qobject_unref(json); } static void monitor_json_emitter(Monitor *mon, QObject *data) @@ -494,9 +494,8 @@ static void monitor_json_emitter(Monitor *mon, QObject *data) * caller won't free the data (which will be finally freed in * responder thread). */ - qobject_incref(data); qemu_mutex_lock(&mon->qmp.qmp_queue_lock); - g_queue_push_tail(mon->qmp.qmp_responses, (void *)data); + g_queue_push_tail(mon->qmp.qmp_responses, qobject_ref(data)); qemu_mutex_unlock(&mon->qmp.qmp_queue_lock); qemu_bh_schedule(mon_global.qmp_respond_bh); } else { @@ -546,7 +545,7 @@ static void monitor_qmp_bh_responder(void *opaque) break; } monitor_json_emitter_raw(response.mon, response.data); - qobject_decref(response.data); + qobject_unref(response.data); } } @@ -613,9 +612,8 @@ monitor_qapi_event_queue(QAPIEvent event, QDict *qdict, Error **errp) * last send. Store event for sending when timer fires, * replacing a prior stored event if any. */ - QDECREF(evstate->qdict); - evstate->qdict = qdict; - QINCREF(evstate->qdict); + qobject_unref(evstate->qdict); + evstate->qdict = qobject_ref(qdict); } else { /* * Last send was (at least) evconf->rate ns ago. @@ -629,8 +627,7 @@ monitor_qapi_event_queue(QAPIEvent event, QDict *qdict, Error **errp) evstate = g_new(MonitorQAPIEventState, 1); evstate->event = event; - evstate->data = data; - QINCREF(evstate->data); + evstate->data = qobject_ref(data); evstate->qdict = NULL; evstate->timer = timer_new_ns(event_clock_type, monitor_qapi_event_handler, @@ -660,12 +657,12 @@ static void monitor_qapi_event_handler(void *opaque) int64_t now = qemu_clock_get_ns(event_clock_type); monitor_qapi_event_emit(evstate->event, evstate->qdict); - QDECREF(evstate->qdict); + qobject_unref(evstate->qdict); evstate->qdict = NULL; timer_mod_ns(evstate->timer, now + evconf->rate); } else { g_hash_table_remove(monitor_qapi_event_state, evstate); - QDECREF(evstate->data); + qobject_unref(evstate->data); timer_free(evstate->timer); g_free(evstate); } @@ -747,7 +744,7 @@ static void monitor_data_destroy(Monitor *mon) json_message_parser_destroy(&mon->qmp.parser); } readline_free(mon->rs); - QDECREF(mon->outbuf); + qobject_unref(mon->outbuf); qemu_mutex_destroy(&mon->out_lock); qemu_mutex_destroy(&mon->qmp.qmp_queue_lock); monitor_qmp_cleanup_req_queue_locked(mon); @@ -3362,7 +3359,7 @@ static QDict *monitor_parse_arguments(Monitor *mon, return qdict; fail: - QDECREF(qdict); + qobject_unref(qdict); g_free(key); return NULL; } @@ -3387,7 +3384,7 @@ static void handle_hmp_command(Monitor *mon, const char *cmdline) } cmd->cmd(mon, qdict); - QDECREF(qdict); + qobject_unref(qdict); } static void cmd_completion(Monitor *mon, const char *name, const char *list) @@ -4048,16 +4045,14 @@ static void monitor_qmp_respond(Monitor *mon, QObject *rsp, if (rsp) { if (id) { - /* This is for the qdict below. */ - qobject_incref(id); - qdict_put_obj(qobject_to(QDict, rsp), "id", id); + qdict_put_obj(qobject_to(QDict, rsp), "id", qobject_ref(id)); } monitor_json_emitter(mon, rsp); } - qobject_decref(id); - qobject_decref(rsp); + qobject_unref(id); + qobject_unref(rsp); } /* @@ -4080,7 +4075,7 @@ static void monitor_qmp_dispatch_one(QMPRequest *req_obj) if (trace_event_get_state_backends(TRACE_HANDLE_QMP_COMMAND)) { QString *req_json = qobject_to_json(req); trace_handle_qmp_command(mon, qstring_get_str(req_json)); - QDECREF(req_json); + qobject_unref(req_json); } old_mon = cur_mon; @@ -4098,7 +4093,7 @@ static void monitor_qmp_dispatch_one(QMPRequest *req_obj) monitor_resume(mon); } - qobject_decref(req); + qobject_unref(req); } /* @@ -4190,15 +4185,14 @@ static void handle_qmp_command(JSONMessageParser *parser, GQueue *tokens) goto err; } - qobject_incref(id); - qdict_del(qdict, "id"); - req_obj = g_new0(QMPRequest, 1); req_obj->mon = mon; - req_obj->id = id; + req_obj->id = qobject_ref(id); req_obj->req = req; req_obj->need_resume = false; + qdict_del(qdict, "id"); + if (qmp_is_oob(qdict)) { /* Out-Of-Band (OOB) requests are executed directly in parser. */ trace_monitor_qmp_cmd_out_of_band(qobject_get_try_str(req_obj->id) @@ -4245,7 +4239,7 @@ static void handle_qmp_command(JSONMessageParser *parser, GQueue *tokens) err: monitor_qmp_respond(mon, NULL, err, NULL); - qobject_decref(req); + qobject_unref(req); } static void monitor_qmp_read(void *opaque, const uint8_t *buf, int size) @@ -4364,7 +4358,7 @@ static void monitor_qmp_event(void *opaque, int event) monitor_qmp_caps_reset(mon); data = get_qmp_greeting(mon); monitor_json_emitter(mon, data); - qobject_decref(data); + qobject_unref(data); mon_refcount++; break; case CHR_EVENT_CLOSED: |