From: "Alex Bennée" <alex.bennee@linaro.org>
To: qemu-devel@nongnu.org, pbonzini@redhat.com, cota@braap.org,
stefanha@redhat.com, kwolf@redhat.com
Cc: mttcg@listserver.greensocs.com, fred.konrad@greensocs.com,
a.rigo@virtualopensystems.com, bobby.prani@gmail.com,
nikunj@linux.vnet.ibm.com, mark.burton@greensocs.com,
jan.kiszka@siemens.com, serge.fdrv@gmail.com, rth@twiddle.net,
peter.maydell@linaro.org, claudio.fontana@huawei.com,
"Alex Bennée" <alex.bennee@linaro.org>,
"Michael Roth" <mdroth@linux.vnet.ibm.com>
Subject: [Qemu-devel] [PATCH v2 8/9] qga/command: use QEMU atomic primitives
Date: Thu, 22 Sep 2016 11:13:15 +0100 [thread overview]
Message-ID: <20160922101316.13064-9-alex.bennee@linaro.org> (raw)
In-Reply-To: <20160922101316.13064-1-alex.bennee@linaro.org>
The guest client's use of the glib's g_atomic primitives causes newer
GCC's to barf when built on Travis. As QEMU has its own primitives with
well understood semantics we might as well use them.
The use of atomics was a little inconsistent so I've also ensure the
values are correctly set with atomic primitives at the same time.
I also made the usage of bool consistent while I was at it.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
qga/commands.c | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/qga/commands.c b/qga/commands.c
index 50fd26a..edd3e83 100644
--- a/qga/commands.c
+++ b/qga/commands.c
@@ -16,6 +16,7 @@
#include "qapi/qmp/qerror.h"
#include "qemu/base64.h"
#include "qemu/cutils.h"
+#include "qemu/atomic.h"
/* Maximum captured guest-exec out_data/err_data - 16MB */
#define GUEST_EXEC_MAX_OUTPUT (16*1024*1024)
@@ -82,7 +83,7 @@ struct GuestExecIOData {
guchar *data;
gsize size;
gsize length;
- gint closed;
+ bool closed;
bool truncated;
const char *name;
};
@@ -93,7 +94,7 @@ struct GuestExecInfo {
int64_t pid_numeric;
gint status;
bool has_output;
- gint finished;
+ bool finished;
GuestExecIOData in;
GuestExecIOData out;
GuestExecIOData err;
@@ -156,13 +157,13 @@ GuestExecStatus *qmp_guest_exec_status(int64_t pid, Error **err)
ges = g_new0(GuestExecStatus, 1);
- bool finished = g_atomic_int_get(&gei->finished);
+ bool finished = atomic_mb_read(&gei->finished);
/* need to wait till output channels are closed
* to be sure we captured all output at this point */
if (gei->has_output) {
- finished = finished && g_atomic_int_get(&gei->out.closed);
- finished = finished && g_atomic_int_get(&gei->err.closed);
+ finished = finished && atomic_mb_read(&gei->out.closed);
+ finished = finished && atomic_mb_read(&gei->err.closed);
}
ges->exited = finished;
@@ -264,7 +265,7 @@ static void guest_exec_child_watch(GPid pid, gint status, gpointer data)
(int32_t)gpid_to_int64(pid), (uint32_t)status);
gei->status = status;
- gei->finished = true;
+ atomic_mb_set(&gei->finished, true);
g_spawn_close_pid(pid);
}
@@ -320,7 +321,7 @@ static gboolean guest_exec_input_watch(GIOChannel *ch,
done:
g_io_channel_shutdown(ch, true, NULL);
g_io_channel_unref(ch);
- g_atomic_int_set(&p->closed, 1);
+ atomic_mb_set(&p->closed, true);
g_free(p->data);
return false;
@@ -374,7 +375,7 @@ static gboolean guest_exec_output_watch(GIOChannel *ch,
close:
g_io_channel_shutdown(ch, true, NULL);
g_io_channel_unref(ch);
- g_atomic_int_set(&p->closed, 1);
+ atomic_mb_set(&p->closed, true);
return false;
}
--
2.9.3
next prev parent reply other threads:[~2016-09-22 10:14 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-22 10:13 [Qemu-devel] [PATCH v2 0/9] A couple of fixes for ThreadSanitizer Alex Bennée
2016-09-22 10:13 ` [Qemu-devel] [PATCH v2 1/9] ui/vnc-enc-tight: remove switch and have single return Alex Bennée
2016-09-22 10:13 ` [Qemu-devel] [PATCH v2 2/9] tcg/optimize: move default return out of if statement Alex Bennée
2016-09-22 15:35 ` Richard Henderson
2016-09-22 10:13 ` [Qemu-devel] [PATCH v2 3/9] new: blacklist.tsan Alex Bennée
2016-09-22 13:15 ` Eric Blake
2016-09-22 14:11 ` Alex Bennée
2016-09-22 10:13 ` [Qemu-devel] [PATCH v2 4/9] seqlock: use atomic writes for the sequence Alex Bennée
2016-09-22 15:38 ` Richard Henderson
2016-09-22 16:14 ` Paolo Bonzini
2016-09-22 10:13 ` [Qemu-devel] [PATCH v2 5/9] qom/object: update class cache atomically Alex Bennée
2016-09-22 10:13 ` [Qemu-devel] [PATCH v2 6/9] cpu: atomically modify cpu->exit_request Alex Bennée
2016-09-22 10:13 ` [Qemu-devel] [PATCH v2 7/9] util/qht: atomically set b->hashes Alex Bennée
2016-09-27 17:36 ` Emilio G. Cota
2016-09-27 21:03 ` Alex Bennée
2016-09-22 10:13 ` Alex Bennée [this message]
2016-09-22 10:13 ` [Qemu-devel] [PATCH v2 9/9] .travis.yml: add gcc sanitizer build Alex Bennée
2016-09-30 11:32 ` [Qemu-devel] [PATCH v2 0/9] A couple of fixes for ThreadSanitizer Paolo Bonzini
2016-09-30 21:31 ` Alex Bennée
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160922101316.13064-9-alex.bennee@linaro.org \
--to=alex.bennee@linaro.org \
--cc=a.rigo@virtualopensystems.com \
--cc=bobby.prani@gmail.com \
--cc=claudio.fontana@huawei.com \
--cc=cota@braap.org \
--cc=fred.konrad@greensocs.com \
--cc=jan.kiszka@siemens.com \
--cc=kwolf@redhat.com \
--cc=mark.burton@greensocs.com \
--cc=mdroth@linux.vnet.ibm.com \
--cc=mttcg@listserver.greensocs.com \
--cc=nikunj@linux.vnet.ibm.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
--cc=serge.fdrv@gmail.com \
--cc=stefanha@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).