From: Fam Zheng <famz@redhat.com>
To: Max Reitz <mreitz@redhat.com>
Cc: "Kevin Wolf" <kwolf@redhat.com>,
"Michael Müller" <mimu@linux.vnet.ibm.com>,
qemu-devel@nongnu.org, "Stefan Hajnoczi" <stefanha@redhat.com>,
"Markus Armbruster" <armbru@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v2 1/3] qemu-io: Add sigraise command
Date: Fri, 5 Dec 2014 15:03:09 +0800 [thread overview]
Message-ID: <20141205070309.GC10827@ad.nay.redhat.com> (raw)
In-Reply-To: <1417704542-18337-2-git-send-email-mreitz@redhat.com>
On Thu, 12/04 15:49, Max Reitz wrote:
> abort() has the sometimes undesirable side-effect of generating a core
> dump. If that is not needed, SIGKILL has the same effect of abruptly
> crash qemu; without a core dump.
>
> Thus, -c abort is not always useful to simulate a qemu-io crash;
> therefore, this patch adds a new sigraise command which allows to raise
> any Unix signal.
>
> Signed-off-by: Max Reitz <mreitz@redhat.com>
> ---
> qemu-io-cmds.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 46 insertions(+)
>
> diff --git a/qemu-io-cmds.c b/qemu-io-cmds.c
> index d94fb1e..942b694 100644
> --- a/qemu-io-cmds.c
> +++ b/qemu-io-cmds.c
> @@ -2048,6 +2048,51 @@ static const cmdinfo_t abort_cmd = {
> .oneline = "simulate a program crash using abort(3)",
> };
>
> +static void sigraise_help(void)
> +{
> + printf(
> +"\n"
> +" raises the given Unix signal\n"
> +"\n"
> +" Example:\n"
> +" 'sigraise 9' - raises SIGKILL\n"
> +"\n"
> +" Invokes raise(signal), where \"signal\" is the mandatory integer argument\n"
> +" given to sigraise.\n"
> +"\n");
> +}
> +
> +static int sigraise_f(BlockDriverState *bs, int argc, char **argv);
> +
> +static const cmdinfo_t sigraise_cmd = {
> + .name = "sigraise",
> + .cfunc = sigraise_f,
> + .argmin = 1,
> + .argmax = 1,
> + .flags = CMD_NOFILE_OK,
> + .args = "signal",
> + .oneline = "raises a Unix signal",
> + .help = sigraise_help,
> +};
> +
> +static int sigraise_f(BlockDriverState *bs, int argc, char **argv)
> +{
> + int sig = cvtnum(argv[1]);
> + if (sig < 0) {
> + printf("non-numeric signal number argument -- %s\n", argv[1]);
> + return 0;
> + }
> +
> + /* Using raise() to kill this process does not necessarily flush all open
> + * streams. At least stdout and stderr (although the latter should be
> + * non-buffered anyway) should be flushed, though. */
> + fflush(stdout);
> + fflush(stderr);
> +
> + raise(sig);
> + return 0;
> +}
> +
> static void sleep_cb(void *opaque)
> {
> bool *expired = opaque;
> @@ -2202,4 +2247,5 @@ static void __attribute((constructor)) init_qemuio_commands(void)
> qemuio_add_command(&wait_break_cmd);
> qemuio_add_command(&abort_cmd);
> qemuio_add_command(&sleep_cmd);
> + qemuio_add_command(&sigraise_cmd);
> }
> --
> 1.9.3
>
>
Reviewed-by: Fam Zheng <famz@redhat.com>
next prev parent reply other threads:[~2014-12-05 7:03 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-04 14:48 [Qemu-devel] [PATCH v2 0/3] iotests: Fix test 039 Max Reitz
2014-12-04 14:49 ` [Qemu-devel] [PATCH v2 1/3] qemu-io: Add sigraise command Max Reitz
2014-12-05 7:03 ` Fam Zheng [this message]
2014-12-05 9:52 ` Markus Armbruster
2014-12-05 10:07 ` Max Reitz
2014-12-05 12:23 ` Markus Armbruster
2014-12-05 13:04 ` Kevin Wolf
2014-12-05 13:05 ` Max Reitz
2014-12-05 13:59 ` Markus Armbruster
2014-12-05 14:12 ` Eric Blake
2014-12-04 14:49 ` [Qemu-devel] [PATCH v2 2/3] iotests: Filter for "Killed" in qemu-io output Max Reitz
2014-12-05 7:04 ` Fam Zheng
2014-12-04 14:49 ` [Qemu-devel] [PATCH v2 3/3] iotests: Fix test 039 Max Reitz
2014-12-05 7:08 ` Fam Zheng
2014-12-05 9:03 ` Max Reitz
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=20141205070309.GC10827@ad.nay.redhat.com \
--to=famz@redhat.com \
--cc=armbru@redhat.com \
--cc=kwolf@redhat.com \
--cc=mimu@linux.vnet.ibm.com \
--cc=mreitz@redhat.com \
--cc=qemu-devel@nongnu.org \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.