qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] trace: forbid floating point types


From: Philippe Mathieu-Daudé
Subject: Re: [Qemu-devel] [PATCH] trace: forbid floating point types
Date: Thu, 21 Jun 2018 12:09:18 -0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0

On 06/21/2018 12:02 PM, Stefan Hajnoczi wrote:
> Only one existing trace event uses a floating point type.  Unfortunately
> float and double cannot be supported since SystemTap does not have
> floating point types.
> 
> Remove float and double from the whitelist and document this limitation.
> Update the migrate_transferred trace event to use uint64_t instead of
> double.
> 
> Cc: Dr. David Alan Gilbert <address@hidden>
> Cc: Daniel P. Berrangé <address@hidden>
> Cc: Peter Maydell <address@hidden>
> Signed-off-by: Stefan Hajnoczi <address@hidden>

Reviewed-by: Philippe Mathieu-Daudé <address@hidden>

> ---
>  docs/devel/tracing.txt        | 5 +++++
>  migration/trace-events        | 2 +-
>  qapi/trace-events             | 2 +-
>  scripts/tracetool/__init__.py | 2 --
>  4 files changed, 7 insertions(+), 4 deletions(-)
> 
> diff --git a/docs/devel/tracing.txt b/docs/devel/tracing.txt
> index 07abbb345c..6f815ecbd7 100644
> --- a/docs/devel/tracing.txt
> +++ b/docs/devel/tracing.txt
> @@ -104,6 +104,11 @@ Trace events should use types as follows:
>   * For everything else, use primitive scalar types (char, int, long) with the
>     appropriate signedness.
>  
> + * Avoid floating point types (float and double) because SystemTap does not
> +   support them.  In most cases it is possible to round to an integer type
> +   instead.  This may require scaling the value first by multiplying it by 
> 1000
> +   or the like when digits after the decimal point need to be preserved.
> +
>  Format strings should reflect the types defined in the trace event.  Take
>  special care to use PRId64 and PRIu64 for int64_t and uint64_t types,
>  respectively.  This ensures portability between 32- and 64-bit platforms.
> diff --git a/migration/trace-events b/migration/trace-events
> index 3f67758893..7ea522e453 100644
> --- a/migration/trace-events
> +++ b/migration/trace-events
> @@ -133,7 +133,7 @@ migrate_global_state_post_load(const char *state) "loaded 
> state: %s"
>  migrate_global_state_pre_save(const char *state) "saved state: %s"
>  migration_thread_low_pending(uint64_t pending) "%" PRIu64
>  migrate_state_too_big(void) ""
> -migrate_transferred(uint64_t tranferred, uint64_t time_spent, double 
> bandwidth, uint64_t size) "transferred %" PRIu64 " time_spent %" PRIu64 " 
> bandwidth %g max_size %" PRId64
> +migrate_transferred(uint64_t tranferred, uint64_t time_spent, uint64_t 
> bandwidth, uint64_t size) "transferred %" PRIu64 " time_spent %" PRIu64 " 
> bandwidth %" PRIu64 " max_size %" PRId64
>  process_incoming_migration_co_end(int ret, int ps) "ret=%d postcopy-state=%d"
>  process_incoming_migration_co_postcopy_end_main(void) ""
>  migration_set_incoming_channel(void *ioc, const char *ioctype) "ioc=%p 
> ioctype=%s"
> diff --git a/qapi/trace-events b/qapi/trace-events
> index 9e9008a1dc..70e049ea80 100644
> --- a/qapi/trace-events
> +++ b/qapi/trace-events
> @@ -29,6 +29,6 @@ visit_type_int64(void *v, const char *name, int64_t *obj) 
> "v=%p name=%s obj=%p"
>  visit_type_size(void *v, const char *name, uint64_t *obj) "v=%p name=%s 
> obj=%p"
>  visit_type_bool(void *v, const char *name, bool *obj) "v=%p name=%s obj=%p"
>  visit_type_str(void *v, const char *name, char **obj) "v=%p name=%s obj=%p"
> -visit_type_number(void *v, const char *name, double *obj) "v=%p name=%s 
> obj=%p"
> +visit_type_number(void *v, const char *name, void *obj) "v=%p name=%s obj=%p"
>  visit_type_any(void *v, const char *name, void *obj) "v=%p name=%s obj=%p"
>  visit_type_null(void *v, const char *name, void *obj) "v=%p name=%s obj=%p"
> diff --git a/scripts/tracetool/__init__.py b/scripts/tracetool/__init__.py
> index b20fac34a3..0e3c9e146c 100644
> --- a/scripts/tracetool/__init__.py
> +++ b/scripts/tracetool/__init__.py
> @@ -53,8 +53,6 @@ ALLOWED_TYPES = [
>      "bool",
>      "unsigned",
>      "signed",
> -    "float",
> -    "double",
>      "int8_t",
>      "uint8_t",
>      "int16_t",
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]