# -*- mode: python -*-
# vim: filetype=python
#
# Copyright (C) 2011-2016 Lluís Vilanova <vilanova@ac.upc.edu>
#
# This work is licensed under the terms of the GNU GPL, version 2 or later.
# See the COPYING file in the top-level directory.

##
# = Tracing
##

##
# @TraceEventState:
#
# State of a tracing event.
#
# @unavailable: The event is statically disabled.
#
# @disabled: The event is dynamically disabled.
#
# @enabled: The event is dynamically enabled.
#
# Since: 2.2
##
{ 'enum': 'TraceEventState',
  'data': ['unavailable', 'disabled', 'enabled'] }

##
# @TraceEventInfo:
#
# Information of a tracing event.
#
# @name: Event name.
#
# @state: Tracing state.
#
# @vcpu: Whether this is a per-vCPU event (since 2.7).
#
# Features:
#
# @deprecated: Member @vcpu is deprecated, and always ignored.
#
# Since: 2.2
##
{ 'struct': 'TraceEventInfo',
  'data': {'name': 'str', 'state': 'TraceEventState',
           'vcpu': { 'type': 'bool', 'features': ['deprecated'] } } }

##
# @trace-event-get-state:
#
# Query the state of events.
#
# @name: Event name pattern (case-sensitive glob).
#
# @vcpu: The vCPU to query (since 2.7).
#
# Features:
#
# @deprecated: Member @vcpu is deprecated, and always ignored.
#
# Returns: a list of @TraceEventInfo for the matching events
#
# Since: 2.2
#
# Example:
#
# -> { "execute": "trace-event-get-state",
#      "arguments": { "name": "qemu_memalign" } }
# <- { "return": [ { "name": "qemu_memalign", "state": "disabled", "vcpu": false } ] }
##
{ 'command': 'trace-event-get-state',
  'data': {'name': 'str',
           '*vcpu': {'type': 'int', 'features': ['deprecated'] } },
  'returns': ['TraceEventInfo'] }

##
# @trace-event-set-state:
#
# Set the dynamic tracing state of events.
#
# @name: Event name pattern (case-sensitive glob).
#
# @enable: Whether to enable tracing.
#
# @ignore-unavailable: Do not match unavailable events with @name.
#
# @vcpu: The vCPU to act upon (all by default; since 2.7).
#
# Features:
#
# @deprecated: Member @vcpu is deprecated, and always ignored.
#
# Since: 2.2
#
# Example:
#
# -> { "execute": "trace-event-set-state",
#      "arguments": { "name": "qemu_memalign", "enable": true } }
# <- { "return": {} }
##
{ 'command': 'trace-event-set-state',
  'data': {'name': 'str', 'enable': 'bool', '*ignore-unavailable': 'bool',
           '*vcpu': {'type': 'int', 'features': ['deprecated'] } } }
