All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 06/17] qsp: Simplify how qsp_report() prints
Date: Fri, 12 Apr 2019 18:25:48 +0100	[thread overview]
Message-ID: <20190412172548.GL2906@work-vm> (raw)
In-Reply-To: <20190411152520.10061-7-armbru@redhat.com>

* Markus Armbruster (armbru@redhat.com) wrote:
> qsp_report() takes an fprintf()-like callback and a FILE * to pass to
> it.
> 
> Its only caller hmp_sync_profile() passes monitor_fprintf() and the
> current monitor cast to FILE *.  monitor_fprintf() casts it right
> back, and is otherwise identical to monitor_printf().  The
> type-punning is ugly.
> 
> Drop the callback, and call qemu_printf() instead.
> 
> Signed-off-by: Markus Armbruster <armbru@redhat.com>

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>

> ---
>  include/block/qapi.h |  1 +
>  include/qemu/qsp.h   |  6 ++----
>  monitor.c            |  2 +-
>  util/qsp.c           | 21 +++++++++++----------
>  4 files changed, 15 insertions(+), 15 deletions(-)
> 
> diff --git a/include/block/qapi.h b/include/block/qapi.h
> index 83bdb098bd..a891f43b9c 100644
> --- a/include/block/qapi.h
> +++ b/include/block/qapi.h
> @@ -27,6 +27,7 @@
>  
>  #include "block/block.h"
>  #include "block/snapshot.h"
> +#include "qemu/fprintf-fn.h"
>  
>  BlockDeviceInfo *bdrv_block_device_info(BlockBackend *blk,
>                                          BlockDriverState *bs, Error **errp);
> diff --git a/include/qemu/qsp.h b/include/qemu/qsp.h
> index a94c464f90..bf36aabfa8 100644
> --- a/include/qemu/qsp.h
> +++ b/include/qemu/qsp.h
> @@ -11,15 +11,13 @@
>  #ifndef QEMU_QSP_H
>  #define QEMU_QSP_H
>  
> -#include "qemu/fprintf-fn.h"
> -
>  enum QSPSortBy {
>      QSP_SORT_BY_TOTAL_WAIT_TIME,
>      QSP_SORT_BY_AVG_WAIT_TIME,
>  };
>  
> -void qsp_report(FILE *f, fprintf_function cpu_fprintf, size_t max,
> -                enum QSPSortBy sort_by, bool callsite_coalesce);
> +void qsp_report(size_t max, enum QSPSortBy sort_by,
> +                bool callsite_coalesce);
>  
>  bool qsp_is_enabled(void);
>  void qsp_enable(void);
> diff --git a/monitor.c b/monitor.c
> index 7573689585..1650ceec3a 100644
> --- a/monitor.c
> +++ b/monitor.c
> @@ -1336,7 +1336,7 @@ static void hmp_info_sync_profile(Monitor *mon, const QDict *qdict)
>      enum QSPSortBy sort_by;
>  
>      sort_by = mean ? QSP_SORT_BY_AVG_WAIT_TIME : QSP_SORT_BY_TOTAL_WAIT_TIME;
> -    qsp_report((FILE *)mon, monitor_fprintf, max, sort_by, coalesce);
> +    qsp_report(max, sort_by, coalesce);
>  }
>  
>  static void hmp_info_history(Monitor *mon, const QDict *qdict)
> diff --git a/util/qsp.c b/util/qsp.c
> index 410f1ba004..5264c97342 100644
> --- a/util/qsp.c
> +++ b/util/qsp.c
> @@ -56,7 +56,9 @@
>   *   Critical-Section Execution to Improve the Performance of Multithreaded
>   *   Applications", USENIX ATC'12.
>   */
> +
>  #include "qemu/osdep.h"
> +#include "qemu/qemu-print.h"
>  #include "qemu/thread.h"
>  #include "qemu/timer.h"
>  #include "qemu/qht.h"
> @@ -678,8 +680,7 @@ static gboolean qsp_tree_report(gpointer key, gpointer value, gpointer udata)
>      return FALSE;
>  }
>  
> -static void
> -pr_report(const QSPReport *rep, FILE *f, fprintf_function pr)
> +static void pr_report(const QSPReport *rep)
>  {
>      char *dashes;
>      size_t max_len = 0;
> @@ -702,15 +703,15 @@ pr_report(const QSPReport *rep, FILE *f, fprintf_function pr)
>      /* white space to leave to the right of "Call site" */
>      callsite_rspace = callsite_len - strlen("Call site");
>  
> -    pr(f, "Type               Object  Call site%*s  Wait Time (s)  "
> -       "       Count  Average (us)\n", callsite_rspace, "");
> +    qemu_printf("Type               Object  Call site%*s  Wait Time (s)  "
> +                "       Count  Average (us)\n", callsite_rspace, "");
>  
>      /* build a horizontal rule with dashes */
>      n_dashes = 79 + callsite_rspace;
>      dashes = g_malloc(n_dashes + 1);
>      memset(dashes, '-', n_dashes);
>      dashes[n_dashes] = '\0';
> -    pr(f, "%s\n", dashes);
> +    qemu_printf("%s\n", dashes);
>  
>      for (i = 0; i < rep->n_entries; i++) {
>          const QSPReportEntry *e = &rep->entries[i];
> @@ -726,11 +727,11 @@ pr_report(const QSPReport *rep, FILE *f, fprintf_function pr)
>                                 e->callsite_at,
>                                 callsite_len - (int)strlen(e->callsite_at), "",
>                                 e->time_s, e->n_acqs, e->ns_avg * 1e-3);
> -        pr(f, "%s", s->str);
> +        qemu_printf("%s", s->str);
>          g_string_free(s, TRUE);
>      }
>  
> -    pr(f, "%s\n", dashes);
> +    qemu_printf("%s\n", dashes);
>      g_free(dashes);
>  }
>  
> @@ -746,8 +747,8 @@ static void report_destroy(QSPReport *rep)
>      g_free(rep->entries);
>  }
>  
> -void qsp_report(FILE *f, fprintf_function cpu_fprintf, size_t max,
> -                enum QSPSortBy sort_by, bool callsite_coalesce)
> +void qsp_report(size_t max, enum QSPSortBy sort_by,
> +                bool callsite_coalesce)
>  {
>      GTree *tree = g_tree_new_full(qsp_tree_cmp, &sort_by, g_free, NULL);
>      QSPReport rep;
> @@ -762,7 +763,7 @@ void qsp_report(FILE *f, fprintf_function cpu_fprintf, size_t max,
>      g_tree_foreach(tree, qsp_tree_report, &rep);
>      g_tree_destroy(tree);
>  
> -    pr_report(&rep, f, cpu_fprintf);
> +    pr_report(&rep);
>      report_destroy(&rep);
>  }
>  
> -- 
> 2.17.2
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

  reply	other threads:[~2019-04-12 17:25 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-11 15:25 [Qemu-devel] [PATCH 00/17] Clean up and simplify around fprintf_function Markus Armbruster
2019-04-11 15:25 ` [Qemu-devel] [PATCH 01/17] include: Include fprintf-fn.h only where needed Markus Armbruster
2019-04-12 16:53   ` Dr. David Alan Gilbert
2019-04-11 15:25 ` [Qemu-devel] [PATCH 02/17] trace: Simplify how st_print_trace_file_status() prints Markus Armbruster
2019-04-12 16:55   ` Dr. David Alan Gilbert
2019-04-11 15:25 ` [Qemu-devel] [PATCH 03/17] tcg: Simplify how dump_opcount_info() prints Markus Armbruster
2019-04-12 16:58   ` Dr. David Alan Gilbert
2019-04-11 15:25 ` [Qemu-devel] [PATCH 04/17] tcg: Simplify how dump_exec_info() prints Markus Armbruster
2019-04-12 17:09   ` Dr. David Alan Gilbert
2019-04-11 15:25 ` [Qemu-devel] [PATCH 05/17] tcg: Simplify how dump_drift_info() prints Markus Armbruster
2019-04-12 17:18   ` Dr. David Alan Gilbert
2019-04-11 15:25 ` [Qemu-devel] [PATCH 06/17] qsp: Simplify how qsp_report() prints Markus Armbruster
2019-04-12 17:25   ` Dr. David Alan Gilbert [this message]
2019-04-11 15:25 ` [Qemu-devel] [PATCH 07/17] block/qapi: Clean up how we print to monitor or stdout Markus Armbruster
2019-04-12 17:59   ` Dr. David Alan Gilbert
2019-04-11 15:25 ` [Qemu-devel] [PATCH 08/17] memory: Clean up how mtree_info() prints Markus Armbruster
2019-04-12 17:44   ` Dr. David Alan Gilbert
2019-04-12 18:25     ` Markus Armbruster
2019-04-11 15:25 ` [Qemu-devel] [PATCH 09/17] target: Simplify how the TARGET_cpu_list() print Markus Armbruster
2019-04-15 15:43   ` Dr. David Alan Gilbert
2019-04-16  6:14     ` Markus Armbruster
2019-04-16  8:20       ` Dr. David Alan Gilbert
2019-04-11 15:25 ` [Qemu-devel] [PATCH 10/17] target: Clean up how the dump_mmu() print Markus Armbruster
2019-04-15 15:53   ` Dr. David Alan Gilbert
2019-04-16  6:23     ` Markus Armbruster
2019-04-16  6:23       ` Markus Armbruster
2019-04-11 15:25 ` [Qemu-devel] [PATCH 11/17] target/i386: Simplify how x86_cpu_dump_local_apic_state() prints Markus Armbruster
2019-04-12 17:49   ` Dr. David Alan Gilbert
2019-04-11 15:25 ` [Qemu-devel] [PATCH 12/17] qom/cpu: Simplify how CPUClass::dump_statistics() prints Markus Armbruster
2019-04-12 17:50   ` Dr. David Alan Gilbert
2019-04-11 15:25 ` [Qemu-devel] [PATCH 13/17] qemu-print: New qemu_fprintf(), qemu_vfprintf() Markus Armbruster
2019-04-12 17:53   ` Dr. David Alan Gilbert
2019-04-11 15:25 ` [Qemu-devel] [PATCH 14/17] qom/cpu: Simplify how CPUClass:cpu_dump_state() prints Markus Armbruster
2019-04-15 16:47   ` Dr. David Alan Gilbert
2019-04-16  6:32     ` Markus Armbruster
2019-04-11 15:25 ` [Qemu-devel] [PATCH 15/17] monitor: Clean up how monitor_disas() funnels output to monitor Markus Armbruster
2019-04-12 18:01   ` Dr. David Alan Gilbert
2019-04-11 15:25 ` [Qemu-devel] [PATCH 16/17] disas: Rename include/disas/bfd.h back to include/disas/dis-asm.h Markus Armbruster
2019-04-11 15:25   ` Markus Armbruster
2019-04-11 15:25 ` [Qemu-devel] [PATCH 17/17] include: Move fprintf_function to disas/ Markus Armbruster
2019-04-12 18:39   ` Dr. David Alan Gilbert
2019-04-13  4:59     ` Markus Armbruster
2019-04-11 15:49 ` [Qemu-devel] [PATCH 00/17] Clean up and simplify around fprintf_function no-reply

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=20190412172548.GL2906@work-vm \
    --to=dgilbert@redhat.com \
    --cc=armbru@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /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.