mirror of https://gitee.com/openkylin/qemu.git
monitor: rename *_pop_one to *_pop_any
The old names are confusing since both of the old functions are popping an item from multiple queues rather than a single queue. In that sense, *_pop_any() suites better than *_pop_one(). Since at it, touch up the function monitor_qmp_response_pop_any() a bit to let the callers pass in a QMPResponse struct instead of returning a struct. Change the return value to boolean to mark whether we have popped a valid response instead. Suggested-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Peter Xu <peterx@redhat.com> Message-Id: <20180620073223.31964-3-peterx@redhat.com> Signed-off-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
parent
d88610111b
commit
40687eb741
20
monitor.c
20
monitor.c
|
@ -542,10 +542,10 @@ struct QMPResponse {
|
||||||
typedef struct QMPResponse QMPResponse;
|
typedef struct QMPResponse QMPResponse;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return one QMPResponse. The response is only valid if
|
* Pop a QMPResponse from any monitor's response queue into @response.
|
||||||
* response.data is not NULL.
|
* Return false if all the queues are empty; else true.
|
||||||
*/
|
*/
|
||||||
static QMPResponse monitor_qmp_response_pop_one(void)
|
static bool monitor_qmp_response_pop_any(QMPResponse *response)
|
||||||
{
|
{
|
||||||
Monitor *mon;
|
Monitor *mon;
|
||||||
QObject *data = NULL;
|
QObject *data = NULL;
|
||||||
|
@ -556,22 +556,20 @@ static QMPResponse monitor_qmp_response_pop_one(void)
|
||||||
data = g_queue_pop_head(mon->qmp.qmp_responses);
|
data = g_queue_pop_head(mon->qmp.qmp_responses);
|
||||||
qemu_mutex_unlock(&mon->qmp.qmp_queue_lock);
|
qemu_mutex_unlock(&mon->qmp.qmp_queue_lock);
|
||||||
if (data) {
|
if (data) {
|
||||||
|
response->mon = mon;
|
||||||
|
response->data = data;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
qemu_mutex_unlock(&monitor_lock);
|
qemu_mutex_unlock(&monitor_lock);
|
||||||
return (QMPResponse) { .mon = mon, .data = data };
|
return data != NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void monitor_qmp_bh_responder(void *opaque)
|
static void monitor_qmp_bh_responder(void *opaque)
|
||||||
{
|
{
|
||||||
QMPResponse response;
|
QMPResponse response;
|
||||||
|
|
||||||
while (true) {
|
while (monitor_qmp_response_pop_any(&response)) {
|
||||||
response = monitor_qmp_response_pop_one();
|
|
||||||
if (!response.data) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
monitor_json_emitter_raw(response.mon, response.data);
|
monitor_json_emitter_raw(response.mon, response.data);
|
||||||
qobject_unref(response.data);
|
qobject_unref(response.data);
|
||||||
}
|
}
|
||||||
|
@ -4199,7 +4197,7 @@ static void monitor_qmp_dispatch_one(QMPRequest *req_obj)
|
||||||
* when we process one request on a specific monitor, we put that
|
* when we process one request on a specific monitor, we put that
|
||||||
* monitor to the end of mon_list queue.
|
* monitor to the end of mon_list queue.
|
||||||
*/
|
*/
|
||||||
static QMPRequest *monitor_qmp_requests_pop_one(void)
|
static QMPRequest *monitor_qmp_requests_pop_any(void)
|
||||||
{
|
{
|
||||||
QMPRequest *req_obj = NULL;
|
QMPRequest *req_obj = NULL;
|
||||||
Monitor *mon;
|
Monitor *mon;
|
||||||
|
@ -4231,7 +4229,7 @@ static QMPRequest *monitor_qmp_requests_pop_one(void)
|
||||||
|
|
||||||
static void monitor_qmp_bh_dispatcher(void *data)
|
static void monitor_qmp_bh_dispatcher(void *data)
|
||||||
{
|
{
|
||||||
QMPRequest *req_obj = monitor_qmp_requests_pop_one();
|
QMPRequest *req_obj = monitor_qmp_requests_pop_any();
|
||||||
|
|
||||||
if (req_obj) {
|
if (req_obj) {
|
||||||
trace_monitor_qmp_cmd_in_band(qobject_get_try_str(req_obj->id) ?: "");
|
trace_monitor_qmp_cmd_in_band(qobject_get_try_str(req_obj->id) ?: "");
|
||||||
|
|
Loading…
Reference in New Issue