From: Richard Henderson <rth@twiddle.net>
To: alex.bennee@linaro.org, qemu-devel@nongnu.org
Cc: Yeongkyoon Lee <yeongkyoon.lee@samsung.com>,
Alexander Graf <agraf@suse.de>,
Kirill Batuzov <batuzovk@ispras.ru>,
Blue Swirl <blauwirbel@gmail.com>,
Stefan Weil <weil@mail.berlios.de>,
Anthony Liguori <aliguori@amazon.com>,
Amit Shah <amit.shah@redhat.com>,
Matthew Fernandez <matthew.fernandez@gmail.com>
Subject: Re: [Qemu-devel] [RFC PATCH] tcg: add ability to dump /tmp/perf-<pid>.map files
Date: Thu, 27 Mar 2014 12:51:31 -0700 [thread overview]
Message-ID: <53348143.5060902@twiddle.net> (raw)
In-Reply-To: <1395938253-9225-1-git-send-email-alex.bennee@linaro.org>
On 03/27/2014 09:37 AM, alex.bennee@linaro.org wrote:
> From: Alex Bennée <alex.bennee@linaro.org>
>
> This allows the perf tool to map samples to each individual translation
> block. This could be expanded for user space but currently it gives
> enough information to find any hotblocks by other means.
Plausible, I suppose.
> TCGOpDef tcg_op_defs[] = {
> #define DEF(s, oargs, iargs, cargs, flags) { #s, oargs, iargs, cargs, iargs + oargs + cargs, flags },
> @@ -2575,6 +2579,8 @@ static inline int tcg_gen_code_common(TCGContext *s, uint64_t target_pc,
> the_end:
> /* Generate TB finalization at the end of block */
> tcg_out_tb_finalize(s);
> +
> + tcg_write_perfmap(gen_code_buf, s->code_ptr - gen_code_buf, target_pc);
> return -1;
> }
>
> @@ -2666,6 +2672,21 @@ void tcg_dump_info(FILE *f, fprintf_function cpu_fprintf)
> }
> #endif
>
> +static FILE *tcg_perfmap = NULL;
> +void qemu_tcg_enable_perfmap(void) {
> + gchar * map_file = g_strdup_printf("/tmp/perf-%d.map", getpid());
> + tcg_perfmap = g_fopen(map_file, "w");
> + g_free(map_file);
> +}
> +
> +static void tcg_write_perfmap(uint8_t *start, uint64_t size, uint64_t target_pc)
> +{
> + if (tcg_perfmap) {
> + g_fprintf(tcg_perfmap, "%lx %lx subject-0x%lx\n",
> + (uint64_t) start, size, target_pc);
> + }
> +}
Why oh why do you feel the need to use g_fprintf? That's just gratuitous glib
obfuscation, that.
For this small of a single-use function, I think it would be clearer to just do
the printf directly in tcg_gen_code_common. Certainly no need to use uint64_t
all over the place; ptrdiff_t and target_ulong are exactly the right thing.
r~
next prev parent reply other threads:[~2014-03-27 19:51 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-27 16:37 [Qemu-devel] [RFC PATCH] tcg: add ability to dump /tmp/perf-<pid>.map files alex.bennee
2014-03-27 19:51 ` Richard Henderson [this message]
2014-03-28 11:12 ` Alex Bennée
2014-03-28 13:29 ` Richard Henderson
2014-03-28 13:30 ` Richard Henderson
2014-03-28 12:29 ` Kirill Batuzov
2014-03-28 16:34 ` Alex Bennée
2014-03-28 20:04 ` Kirill Batuzov
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=53348143.5060902@twiddle.net \
--to=rth@twiddle.net \
--cc=agraf@suse.de \
--cc=alex.bennee@linaro.org \
--cc=aliguori@amazon.com \
--cc=amit.shah@redhat.com \
--cc=batuzovk@ispras.ru \
--cc=blauwirbel@gmail.com \
--cc=matthew.fernandez@gmail.com \
--cc=qemu-devel@nongnu.org \
--cc=weil@mail.berlios.de \
--cc=yeongkyoon.lee@samsung.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).