> The TraceEvent struct contains a "bool sstate" field which track whether
> a trace event was disabled statically. i.e. at build time via the
> "disable" property annotation in trace-events.
> 
> The only runtime use of this field is to let "trace-event-get-state"
> report that an event is "unavailable" instead of reporting an error for
> an unknown trace event.
> 
> Trace events are not ABI so their names can change and the event can
> come and go at any time. Thus there is little utility in reporting the
> existence of a disabled event that cannot ever be used at runtime.
> 
> Removing the "bool sstate" field from TraceEvent saves 8 bytes of
> space in the struct, adding up to approx 64 KB across all current
> events.
> 
> Signed-off-by: Daniel P. Berrangé <[email protected]>
> Message-ID: <[email protected]>

Need a tracing.rst documentation update too.

>
> diff --git a/qapi/trace.json b/qapi/trace.json
> index de369dae6b53..a5aaf2cab0ea 100644
> --- a/qapi/trace.json
> +++ b/qapi/trace.json
> @@ -17,8 +17,6 @@
>  #
>  # State of a tracing event.
>  #
> -# @unavailable: The event is statically disabled.
> -#
>  # @disabled: The event is dynamically disabled.
>  #
>  # @enabled: The event is dynamically enabled.
> @@ -26,7 +24,7 @@
>  # Since: 2.2
>  ##
>  { 'enum': 'TraceEventState',
> -  'data': ['unavailable', 'disabled', 'enabled'] }
> +  'data': ['disabled', 'enabled'] }

>  
>  ##
>  # @TraceEventInfo:
> @@ -73,6 +71,7 @@
>  # @enable: Whether to enable tracing.
>  #
>  # @ignore-unavailable: Do not match unavailable events with @name.
> +#      Deprecated: since 11.2
>  #
>  # Since: 2.2
>  #

> diff --git a/scripts/tracetool/format/c.py b/scripts/tracetool/format/c.py
> index 5f6669c917c7..9f06894623e2 100644
> --- a/scripts/tracetool/format/c.py
> +++ b/scripts/tracetool/format/c.py
> @@ -39,12 +39,10 @@ def generate(events, backend, group):
>                  '    .id = 0,',
>                  '#endif',
>                  '    .name = \"%(name)s\",',
> -                '    .sstate = %(sstate)s,',
>                  '    .dstate = &%(dstate)s',
>                  '};',
>                  event = e.api(e.QEMU_EVENT),
>                  name = e.name,
> -                sstate = "TRACE_%s_ENABLED" % e.name.upper(),
>                  dstate = e.api(e.QEMU_DSTATE))
>  
>          out('TraceEvent *%(group)s_trace_events[] = {',
> diff --git a/scripts/tracetool/format/h.py b/scripts/tracetool/format/h.py
> index 6ffb7256e314..3ca92ba5fbe8 100644
> --- a/scripts/tracetool/format/h.py
> +++ b/scripts/tracetool/format/h.py
> @@ -38,14 +38,6 @@ def generate(events, backend, group):
>          for e in events:
>              out('#define %s 0' % e.api(e.QEMU_DSTATE))
>  
> -    # static state
> -    for e in events:
> -        if 'disable' in e.properties:
> -            enabled = 0
> -        else:
> -            enabled = 1
> -        out('#define TRACE_%s_ENABLED %d' % (e.name.upper(), enabled))
> -
>      backend.generate_begin(events, group)
>  
>      for e in events:
> diff --git a/stubs/trace-control.c b/stubs/trace-control.c
> index 3f196835db00..6016307ed8b0 100644
> --- a/stubs/trace-control.c
> +++ b/stubs/trace-control.c
> @@ -14,7 +14,6 @@
>  void trace_event_set_state_dynamic(TraceEvent *ev, bool state)
>  {
>      bool state_pre;
> -    assert(trace_event_get_state_static(ev));
>  
>      /*
>       * We ignore the "vcpu" property here, since there's no target code. Then
> diff --git a/tests/tracetool/all.c b/tests/tracetool/all.c
> index 3b8d4d32d172..670f9f06e855 100644
> --- a/tests/tracetool/all.c
> +++ b/tests/tracetool/all.c
> @@ -12,7 +12,6 @@ TraceEvent _TRACE_TEST_BLAH_EVENT = {
>      .id = 0,
>  #endif
>      .name = "test_blah",
> -    .sstate = TRACE_TEST_BLAH_ENABLED,
>      .dstate = &_TRACE_TEST_BLAH_DSTATE
>  };
>  TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
> @@ -20,7 +19,6 @@ TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
>      .id = 0,
>  #endif
>      .name = "test_wibble",
> -    .sstate = TRACE_TEST_WIBBLE_ENABLED,
>      .dstate = &_TRACE_TEST_WIBBLE_DSTATE
>  };
>  TraceEvent *testsuite_trace_events[] = {
> diff --git a/tests/tracetool/all.h b/tests/tracetool/all.h
> index a2c2d40388e7..6eed86edb4d8 100644
> --- a/tests/tracetool/all.h
> +++ b/tests/tracetool/all.h
> @@ -10,8 +10,6 @@ extern TraceEvent _TRACE_TEST_BLAH_EVENT;
>  extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
>  extern uint8_t _TRACE_TEST_BLAH_DSTATE;
>  extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
> -#define TRACE_TEST_BLAH_ENABLED 1
> -#define TRACE_TEST_WIBBLE_ENABLED 1
>  #ifndef SDT_USE_VARIADIC
>  #define SDT_USE_VARIADIC 1
>  #endif
> @@ -59,16 +57,16 @@ static inline void trace_test_blah(void *context, const 
> char *filename)
>      if (trace_event_get_state(TRACE_TEST_BLAH)) {
>  #line 4 "trace-events"
>          ftrace_write("test_blah " "Blah context=%p filename=%s" "\n" , 
> context, filename);
> -#line 62 "all.h"
> +#line 60 "all.h"
>          if (qemu_loglevel_mask(LOG_TRACE)) {
>  #line 4 "trace-events"
>              qemu_log("test_blah " "Blah context=%p filename=%s" "\n", 
> context, filename);
> -#line 66 "all.h"
> +#line 64 "all.h"
>          }
>          _simple_trace_test_blah(context, filename);
>  #line 4 "trace-events"
>          syslog(LOG_INFO, "test_blah " "Blah context=%p filename=%s" , 
> context, filename);
> -#line 71 "all.h"
> +#line 69 "all.h"
>      }
>  }
>  
> @@ -89,16 +87,16 @@ static inline void trace_test_wibble(void *context, int 
> value)
>      if (trace_event_get_state(TRACE_TEST_WIBBLE)) {
>  #line 5 "trace-events"
>          ftrace_write("test_wibble " "Wibble context=%p value=%d" "\n" , 
> context, value);
> -#line 91 "all.h"
> +#line 89 "all.h"
>          if (qemu_loglevel_mask(LOG_TRACE)) {
>  #line 5 "trace-events"
>              qemu_log("test_wibble " "Wibble context=%p value=%d" "\n", 
> context, value);
> -#line 95 "all.h"
> +#line 93 "all.h"
>          }
>          _simple_trace_test_wibble(context, value);
>  #line 5 "trace-events"
>          syslog(LOG_INFO, "test_wibble " "Wibble context=%p value=%d" , 
> context, value);
> -#line 100 "all.h"
> +#line 98 "all.h"
>      }
>  }
>  #endif /* TRACE_TESTSUITE_GENERATED_TRACERS_H */
> diff --git a/tests/tracetool/dtrace.c b/tests/tracetool/dtrace.c
> index f83d06252eaa..d51ba85503a8 100644
> --- a/tests/tracetool/dtrace.c
> +++ b/tests/tracetool/dtrace.c
> @@ -12,7 +12,6 @@ TraceEvent _TRACE_TEST_BLAH_EVENT = {
>      .id = 0,
>  #endif
>      .name = "test_blah",
> -    .sstate = TRACE_TEST_BLAH_ENABLED,
>      .dstate = &_TRACE_TEST_BLAH_DSTATE
>  };
>  TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
> @@ -20,7 +19,6 @@ TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
>      .id = 0,
>  #endif
>      .name = "test_wibble",
> -    .sstate = TRACE_TEST_WIBBLE_ENABLED,
>      .dstate = &_TRACE_TEST_WIBBLE_DSTATE
>  };
>  TraceEvent *testsuite_trace_events[] = {
> diff --git a/tests/tracetool/dtrace.h b/tests/tracetool/dtrace.h
> index 0b5b47089e81..b9283851eb03 100644
> --- a/tests/tracetool/dtrace.h
> +++ b/tests/tracetool/dtrace.h
> @@ -10,8 +10,6 @@ extern TraceEvent _TRACE_TEST_BLAH_EVENT;
>  extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
>  extern uint8_t _TRACE_TEST_BLAH_DSTATE;
>  extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
> -#define TRACE_TEST_BLAH_ENABLED 1
> -#define TRACE_TEST_WIBBLE_ENABLED 1
>  #ifndef SDT_USE_VARIADIC
>  #define SDT_USE_VARIADIC 1
>  #endif
> diff --git a/tests/tracetool/ftrace.c b/tests/tracetool/ftrace.c
> index f83d06252eaa..d51ba85503a8 100644
> --- a/tests/tracetool/ftrace.c
> +++ b/tests/tracetool/ftrace.c
> @@ -12,7 +12,6 @@ TraceEvent _TRACE_TEST_BLAH_EVENT = {
>      .id = 0,
>  #endif
>      .name = "test_blah",
> -    .sstate = TRACE_TEST_BLAH_ENABLED,
>      .dstate = &_TRACE_TEST_BLAH_DSTATE
>  };
>  TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
> @@ -20,7 +19,6 @@ TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
>      .id = 0,
>  #endif
>      .name = "test_wibble",
> -    .sstate = TRACE_TEST_WIBBLE_ENABLED,
>      .dstate = &_TRACE_TEST_WIBBLE_DSTATE
>  };
>  TraceEvent *testsuite_trace_events[] = {
> diff --git a/tests/tracetool/ftrace.h b/tests/tracetool/ftrace.h
> index b34eef17d10e..4eba6b4d5991 100644
> --- a/tests/tracetool/ftrace.h
> +++ b/tests/tracetool/ftrace.h
> @@ -10,8 +10,6 @@ extern TraceEvent _TRACE_TEST_BLAH_EVENT;
>  extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
>  extern uint8_t _TRACE_TEST_BLAH_DSTATE;
>  extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
> -#define TRACE_TEST_BLAH_ENABLED 1
> -#define TRACE_TEST_WIBBLE_ENABLED 1
>  #include "trace/ftrace.h"
>  
>  
> @@ -24,7 +22,7 @@ static inline void trace_test_blah(void *context, const 
> char *filename)
>      if (trace_event_get_state(TRACE_TEST_BLAH)) {
>  #line 4 "trace-events"
>          ftrace_write("test_blah " "Blah context=%p filename=%s" "\n" , 
> context, filename);
> -#line 28 "ftrace.h"
> +#line 26 "ftrace.h"
>      }
>  }
>  
> @@ -37,7 +35,7 @@ static inline void trace_test_wibble(void *context, int 
> value)
>      if (trace_event_get_state(TRACE_TEST_WIBBLE)) {
>  #line 5 "trace-events"
>          ftrace_write("test_wibble " "Wibble context=%p value=%d" "\n" , 
> context, value);
> -#line 41 "ftrace.h"
> +#line 39 "ftrace.h"
>      }
>  }
>  #endif /* TRACE_TESTSUITE_GENERATED_TRACERS_H */
> diff --git a/tests/tracetool/log.c b/tests/tracetool/log.c
> index f83d06252eaa..d51ba85503a8 100644
> --- a/tests/tracetool/log.c
> +++ b/tests/tracetool/log.c
> @@ -12,7 +12,6 @@ TraceEvent _TRACE_TEST_BLAH_EVENT = {
>      .id = 0,
>  #endif
>      .name = "test_blah",
> -    .sstate = TRACE_TEST_BLAH_ENABLED,
>      .dstate = &_TRACE_TEST_BLAH_DSTATE
>  };
>  TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
> @@ -20,7 +19,6 @@ TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
>      .id = 0,
>  #endif
>      .name = "test_wibble",
> -    .sstate = TRACE_TEST_WIBBLE_ENABLED,
>      .dstate = &_TRACE_TEST_WIBBLE_DSTATE
>  };
>  TraceEvent *testsuite_trace_events[] = {
> diff --git a/tests/tracetool/log.h b/tests/tracetool/log.h
> index fe08277887f7..cf37ed3ce263 100644
> --- a/tests/tracetool/log.h
> +++ b/tests/tracetool/log.h
> @@ -10,8 +10,6 @@ extern TraceEvent _TRACE_TEST_BLAH_EVENT;
>  extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
>  extern uint8_t _TRACE_TEST_BLAH_DSTATE;
>  extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
> -#define TRACE_TEST_BLAH_ENABLED 1
> -#define TRACE_TEST_WIBBLE_ENABLED 1
>  #include "qemu/log-for-trace.h"
>  
>  
> @@ -26,7 +24,7 @@ static inline void trace_test_blah(void *context, const 
> char *filename)
>          if (qemu_loglevel_mask(LOG_TRACE)) {
>  #line 4 "trace-events"
>              qemu_log("test_blah " "Blah context=%p filename=%s" "\n", 
> context, filename);
> -#line 29 "log.h"
> +#line 27 "log.h"
>          }
>      }
>  }
> @@ -42,7 +40,7 @@ static inline void trace_test_wibble(void *context, int 
> value)
>          if (qemu_loglevel_mask(LOG_TRACE)) {
>  #line 5 "trace-events"
>              qemu_log("test_wibble " "Wibble context=%p value=%d" "\n", 
> context, value);
> -#line 44 "log.h"
> +#line 42 "log.h"
>          }
>      }
>  }
> diff --git a/tests/tracetool/nop.h b/tests/tracetool/nop.h
> index 64b6b0056841..007715779438 100644
> --- a/tests/tracetool/nop.h
> +++ b/tests/tracetool/nop.h
> @@ -8,8 +8,6 @@
>  
>  #define _TRACE_TEST_BLAH_DSTATE 0
>  #define _TRACE_TEST_WIBBLE_DSTATE 0
> -#define TRACE_TEST_BLAH_ENABLED 1
> -#define TRACE_TEST_WIBBLE_ENABLED 1
>  
>  #define TRACE_TEST_BLAH_BACKEND_DSTATE() ( \
>      false)
> diff --git a/tests/tracetool/simple.c b/tests/tracetool/simple.c
> index 3b8d4d32d172..670f9f06e855 100644
> --- a/tests/tracetool/simple.c
> +++ b/tests/tracetool/simple.c
> @@ -12,7 +12,6 @@ TraceEvent _TRACE_TEST_BLAH_EVENT = {
>      .id = 0,
>  #endif
>      .name = "test_blah",
> -    .sstate = TRACE_TEST_BLAH_ENABLED,
>      .dstate = &_TRACE_TEST_BLAH_DSTATE
>  };
>  TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
> @@ -20,7 +19,6 @@ TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
>      .id = 0,
>  #endif
>      .name = "test_wibble",
> -    .sstate = TRACE_TEST_WIBBLE_ENABLED,
>      .dstate = &_TRACE_TEST_WIBBLE_DSTATE
>  };
>  TraceEvent *testsuite_trace_events[] = {
> diff --git a/tests/tracetool/simple.h b/tests/tracetool/simple.h
> index 735cb21d9113..9b066364b0ae 100644
> --- a/tests/tracetool/simple.h
> +++ b/tests/tracetool/simple.h
> @@ -10,8 +10,6 @@ extern TraceEvent _TRACE_TEST_BLAH_EVENT;
>  extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
>  extern uint8_t _TRACE_TEST_BLAH_DSTATE;
>  extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
> -#define TRACE_TEST_BLAH_ENABLED 1
> -#define TRACE_TEST_WIBBLE_ENABLED 1
>  void _simple_trace_test_blah(void *context, const char *filename);
>  void _simple_trace_test_wibble(void *context, int value);
>  
> diff --git a/tests/tracetool/syslog.c b/tests/tracetool/syslog.c
> index f83d06252eaa..d51ba85503a8 100644
> --- a/tests/tracetool/syslog.c
> +++ b/tests/tracetool/syslog.c
> @@ -12,7 +12,6 @@ TraceEvent _TRACE_TEST_BLAH_EVENT = {
>      .id = 0,
>  #endif
>      .name = "test_blah",
> -    .sstate = TRACE_TEST_BLAH_ENABLED,
>      .dstate = &_TRACE_TEST_BLAH_DSTATE
>  };
>  TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
> @@ -20,7 +19,6 @@ TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
>      .id = 0,
>  #endif
>      .name = "test_wibble",
> -    .sstate = TRACE_TEST_WIBBLE_ENABLED,
>      .dstate = &_TRACE_TEST_WIBBLE_DSTATE
>  };
>  TraceEvent *testsuite_trace_events[] = {
> diff --git a/tests/tracetool/syslog.h b/tests/tracetool/syslog.h
> index 4203b8b37dcc..6a9304489f6c 100644
> --- a/tests/tracetool/syslog.h
> +++ b/tests/tracetool/syslog.h
> @@ -10,8 +10,6 @@ extern TraceEvent _TRACE_TEST_BLAH_EVENT;
>  extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
>  extern uint8_t _TRACE_TEST_BLAH_DSTATE;
>  extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
> -#define TRACE_TEST_BLAH_ENABLED 1
> -#define TRACE_TEST_WIBBLE_ENABLED 1
>  #include <syslog.h>
>  
>  
> @@ -24,7 +22,7 @@ static inline void trace_test_blah(void *context, const 
> char *filename)
>      if (trace_event_get_state(TRACE_TEST_BLAH)) {
>  #line 4 "trace-events"
>          syslog(LOG_INFO, "test_blah " "Blah context=%p filename=%s" , 
> context, filename);
> -#line 28 "syslog.h"
> +#line 26 "syslog.h"
>      }
>  }
>  
> @@ -37,7 +35,7 @@ static inline void trace_test_wibble(void *context, int 
> value)
>      if (trace_event_get_state(TRACE_TEST_WIBBLE)) {
>  #line 5 "trace-events"
>          syslog(LOG_INFO, "test_wibble " "Wibble context=%p value=%d" , 
> context, value);
> -#line 41 "syslog.h"
> +#line 39 "syslog.h"
>      }
>  }
>  #endif /* TRACE_TESTSUITE_GENERATED_TRACERS_H */
> diff --git a/tests/tracetool/ust.c b/tests/tracetool/ust.c
> index f83d06252eaa..d51ba85503a8 100644
> --- a/tests/tracetool/ust.c
> +++ b/tests/tracetool/ust.c
> @@ -12,7 +12,6 @@ TraceEvent _TRACE_TEST_BLAH_EVENT = {
>      .id = 0,
>  #endif
>      .name = "test_blah",
> -    .sstate = TRACE_TEST_BLAH_ENABLED,
>      .dstate = &_TRACE_TEST_BLAH_DSTATE
>  };
>  TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
> @@ -20,7 +19,6 @@ TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
>      .id = 0,
>  #endif
>      .name = "test_wibble",
> -    .sstate = TRACE_TEST_WIBBLE_ENABLED,
>      .dstate = &_TRACE_TEST_WIBBLE_DSTATE
>  };
>  TraceEvent *testsuite_trace_events[] = {
> diff --git a/tests/tracetool/ust.h b/tests/tracetool/ust.h
> index 079b2c744917..c6c5d6d7c1cf 100644
> --- a/tests/tracetool/ust.h
> +++ b/tests/tracetool/ust.h
> @@ -10,8 +10,6 @@ extern TraceEvent _TRACE_TEST_BLAH_EVENT;
>  extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
>  extern uint8_t _TRACE_TEST_BLAH_DSTATE;
>  extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
> -#define TRACE_TEST_BLAH_ENABLED 1
> -#define TRACE_TEST_WIBBLE_ENABLED 1
>  #include <lttng/tracepoint.h>
>  #include "trace-ust-testsuite.h"
>  
> diff --git a/trace/control-internal.h b/trace/control-internal.h
> index f626b0472644..9a95e6714bb4 100644
> --- a/trace/control-internal.h
> +++ b/trace/control-internal.h
> @@ -33,12 +33,6 @@ static inline const char * trace_event_get_name(TraceEvent 
> *ev)
>      return ev->name;
>  }
>  
> -static inline bool trace_event_get_state_static(TraceEvent *ev)
> -{
> -    assert(ev != NULL);
> -    return ev->sstate;
> -}
> -
>  /* it's on fast path, avoid consistency checks (asserts) */
>  #define trace_event_get_state_dynamic_by_id(id) \
>      (unlikely(trace_events_enabled_count) && _ ## id ## _DSTATE)
> diff --git a/trace/control-target.c b/trace/control-target.c
> index 87b0f5037df1..348125a5822b 100644
> --- a/trace/control-target.c
> +++ b/trace/control-target.c
> @@ -12,8 +12,6 @@
>  
>  void trace_event_set_state_dynamic(TraceEvent *ev, bool state)
>  {
> -    assert(trace_event_get_state_static(ev));
> -
>      bool state_pre = *ev->dstate;
>      if (state_pre != state) {
>          if (state) {
> diff --git a/trace/control.c b/trace/control.c
> index 947b220056ac..d414b1a90725 100644
> --- a/trace/control.c
> +++ b/trace/control.c
> @@ -167,15 +167,6 @@ static void do_trace_enable_events(const char *line_buf)
>  
>      trace_event_iter_init_pattern(&iter, line_ptr);
>      while ((ev = trace_event_iter_next(&iter)) != NULL) {
> -        if (!trace_event_get_state_static(ev)) {
> -            if (!is_pattern) {
> -                warn_report("trace event '%s' is not traceable",
> -                            line_ptr);
> -                return;
> -            }
> -            continue;
> -        }
> -
>          /* start tracing */
>          trace_event_set_state_dynamic(ev, enable);
>          if (!is_pattern) {
> diff --git a/trace/control.h b/trace/control.h
> index e77c07a8e68e..80eb2bd14e6f 100644
> --- a/trace/control.h
> +++ b/trace/control.h
> @@ -107,13 +107,13 @@ static const char * trace_event_get_name(TraceEvent 
> *ev);
>   * impact.
>   */
>  #define trace_event_get_state(id)                       \
> -    ((id ##_ENABLED) && trace_event_get_state_dynamic_by_id(id))
> +    (trace_event_get_state_dynamic_by_id(id))
>  
>  /**
>   * trace_event_get_state_backends:
>   * @id: Event identifier name.
>   *
> - * Get the tracing state of an event, both static and dynamic state from all
> + * Get the tracing state of an event from all
>   * compiled-in backends.
>   *
>   * If the event has the disabled property, the check will have no performance
> @@ -123,18 +123,7 @@ static const char * trace_event_get_name(TraceEvent *ev);
>   * does not have the disabled property.
>   */

It should also drop the mention of "disabled property"

>  #define trace_event_get_state_backends(id)              \
> -    ((id ##_ENABLED) && id ##_BACKEND_DSTATE())
> -
> -/**
> - * trace_event_get_state_static:
> - * @id: Event identifier.
> - *
> - * Get the static tracing state of an event.
> - *
> - * Use the define 'TRACE_${EVENT_NAME}_ENABLED' for compile-time checks (it 
> will
> - * be set to 1 or 0 according to the presence of the disabled property).
> - */
> -static bool trace_event_get_state_static(TraceEvent *ev);
> +    (id ##_BACKEND_DSTATE())
>  
>  /**
>   * trace_event_get_state_dynamic:
> @@ -148,7 +137,6 @@ static bool trace_event_get_state_dynamic(TraceEvent *ev);
>   *
>   * Set the dynamic tracing state of an event.
>   *
> - * Pre-condition: trace_event_get_state_static(ev) == true
>   */
>  void trace_event_set_state_dynamic(TraceEvent *ev, bool state);
>  
> diff --git a/trace/event-internal.h b/trace/event-internal.h
> index ad1578aa2c53..40f06691063a 100644
> --- a/trace/event-internal.h
> +++ b/trace/event-internal.h
> @@ -14,7 +14,6 @@
>   * TraceEvent:
>   * @id: Unique event identifier.
>   * @name: Event name.
> - * @sstate: Static tracing state.
>   * @dstate: Dynamic tracing state
>   *
>   * Opaque generic description of a tracing event.
> @@ -24,7 +23,6 @@ typedef struct TraceEvent {
>      uint32_t id;
>  #endif
>      const char * name;
> -    const bool sstate;
>      uint8_t *dstate;
>  } TraceEvent;
>  
> diff --git a/trace/qmp.c b/trace/qmp.c
> index 074a27b204fd..331496a1471d 100644
> --- a/trace/qmp.c
> +++ b/trace/qmp.c
> @@ -11,9 +11,10 @@
>  #include "qapi/error.h"
>  #include "qapi/qapi-commands-trace.h"
>  #include "control.h"
> +#include "qemu/error-report.h"
>  
>  
> -static bool check_events(bool ignore_unavailable, bool is_pattern,
> +static bool check_events(bool is_pattern,
>                           const char *name, Error **errp)
>  {
>      if (!is_pattern) {
> @@ -24,27 +25,8 @@ static bool check_events(bool ignore_unavailable, bool 
> is_pattern,
>              error_setg(errp, "unknown event \"%s\"", name);
>              return false;
>          }
> -
> -        /* error for unavailable event */
> -        if (!ignore_unavailable && !trace_event_get_state_static(ev)) {
> -            error_setg(errp, "event \"%s\" is disabled", name);
> -            return false;
> -        }
> -
> -        return true;
> -    } else {
> -        /* error for unavailable events */
> -        TraceEventIter iter;
> -        TraceEvent *ev;
> -        trace_event_iter_init_pattern(&iter, name);
> -        while ((ev = trace_event_iter_next(&iter)) != NULL) {
> -            if (!ignore_unavailable && !trace_event_get_state_static(ev)) {
> -                error_setg(errp, "event \"%s\" is disabled", 
> trace_event_get_name(ev));
> -                return false;
> -            }
> -        }
> -        return true;
>      }
> +    return true;
>  }
>  
>  TraceEventInfoList *qmp_trace_event_get_state(const char *name,
> @@ -56,7 +38,7 @@ TraceEventInfoList *qmp_trace_event_get_state(const char 
> *name,
>      bool is_pattern = trace_event_is_pattern(name);
>  
>      /* Check events */
> -    if (!check_events(true, is_pattern, name, errp)) {
> +    if (!check_events(is_pattern, name, errp)) {
>          return NULL;
>      }
>  
> @@ -68,14 +50,10 @@ TraceEventInfoList *qmp_trace_event_get_state(const char 
> *name,
>          value = g_new(TraceEventInfo, 1);
>          value->name = g_strdup(trace_event_get_name(ev));
>  
> -        if (!trace_event_get_state_static(ev)) {
> -            value->state = TRACE_EVENT_STATE_UNAVAILABLE;
> +        if (trace_event_get_state_dynamic(ev)) {
> +            value->state = TRACE_EVENT_STATE_ENABLED;
>          } else {
> -            if (trace_event_get_state_dynamic(ev)) {
> -                value->state = TRACE_EVENT_STATE_ENABLED;
> -            } else {
> -                value->state = TRACE_EVENT_STATE_DISABLED;
> -            }
> +            value->state = TRACE_EVENT_STATE_DISABLED;
>          }
>          QAPI_LIST_PREPEND(events, value);
>      }
> @@ -91,18 +69,19 @@ void qmp_trace_event_set_state(const char *name, bool 
> enable,
>      TraceEvent *ev;
>      bool is_pattern = trace_event_is_pattern(name);
>  
> +    if (has_ignore_unavailable && ignore_unavailable) {
> +        warn_report_once("the 'ignore-unavailable' property is deprecated "
> +                         "and has no effect");
> +    }
> +
>      /* Check events */
> -    if (!check_events(has_ignore_unavailable && ignore_unavailable,
> -                      is_pattern, name, errp)) {
> +    if (!check_events(is_pattern, name, errp)) {
>          return;
>      }
>  
>      /* Apply changes (all errors checked above) */
>      trace_event_iter_init_pattern(&iter, name);
>      while ((ev = trace_event_iter_next(&iter)) != NULL) {
> -        if (!trace_event_get_state_static(ev)) {
> -            continue;
> -        }
>          trace_event_set_state_dynamic(ev, enable);
>      }
>  }

Reviewed-by: Marc-André Lureau <[email protected]>

-- 
Marc-André Lureau <[email protected]>


Reply via email to