xref: /qemu/qapi/trace.json (revision 8a9b273e)
11dde0f48SLluís Vilanova# -*- mode: python -*-
21dde0f48SLluís Vilanova#
377e2b172SLluís Vilanova# Copyright (C) 2011-2016 Lluís Vilanova <vilanova@ac.upc.edu>
41dde0f48SLluís Vilanova#
51dde0f48SLluís Vilanova# This work is licensed under the terms of the GNU GPL, version 2 or later.
61dde0f48SLluís Vilanova# See the COPYING file in the top-level directory.
71dde0f48SLluís Vilanova
8d3a48372SMarc-André Lureau##
9d3a48372SMarc-André Lureau# = Tracing commands
10d3a48372SMarc-André Lureau##
111dde0f48SLluís Vilanova
121dde0f48SLluís Vilanova##
131dde0f48SLluís Vilanova# @TraceEventState:
141dde0f48SLluís Vilanova#
151dde0f48SLluís Vilanova# State of a tracing event.
161dde0f48SLluís Vilanova#
171dde0f48SLluís Vilanova# @unavailable: The event is statically disabled.
181dde0f48SLluís Vilanova#
191dde0f48SLluís Vilanova# @disabled: The event is dynamically disabled.
201dde0f48SLluís Vilanova#
211dde0f48SLluís Vilanova# @enabled: The event is dynamically enabled.
221dde0f48SLluís Vilanova#
235072f7b3SMarc-André Lureau# Since: 2.2
241dde0f48SLluís Vilanova##
251dde0f48SLluís Vilanova{ 'enum': 'TraceEventState',
261dde0f48SLluís Vilanova  'data': ['unavailable', 'disabled', 'enabled'] }
271dde0f48SLluís Vilanova
281dde0f48SLluís Vilanova##
291dde0f48SLluís Vilanova# @TraceEventInfo:
301dde0f48SLluís Vilanova#
311dde0f48SLluís Vilanova# Information of a tracing event.
321dde0f48SLluís Vilanova#
331dde0f48SLluís Vilanova# @name: Event name.
341dde0f48SLluís Vilanova# @state: Tracing state.
3577e2b172SLluís Vilanova# @vcpu: Whether this is a per-vCPU event (since 2.7).
3677e2b172SLluís Vilanova#
3777e2b172SLluís Vilanova# An event is per-vCPU if it has the "vcpu" property in the "trace-events"
3877e2b172SLluís Vilanova# files.
391dde0f48SLluís Vilanova#
405072f7b3SMarc-André Lureau# Since: 2.2
411dde0f48SLluís Vilanova##
42895a2a80SEric Blake{ 'struct': 'TraceEventInfo',
4377e2b172SLluís Vilanova  'data': {'name': 'str', 'state': 'TraceEventState', 'vcpu': 'bool'} }
441dde0f48SLluís Vilanova
451dde0f48SLluís Vilanova##
461dde0f48SLluís Vilanova# @trace-event-get-state:
471dde0f48SLluís Vilanova#
481dde0f48SLluís Vilanova# Query the state of events.
491dde0f48SLluís Vilanova#
501dde0f48SLluís Vilanova# @name: Event name pattern (case-sensitive glob).
5177e2b172SLluís Vilanova# @vcpu: #optional The vCPU to query (any by default; since 2.7).
521dde0f48SLluís Vilanova#
531dde0f48SLluís Vilanova# Returns: a list of @TraceEventInfo for the matching events
541dde0f48SLluís Vilanova#
5577e2b172SLluís Vilanova# An event is returned if:
5677e2b172SLluís Vilanova# - its name matches the @name pattern, and
5777e2b172SLluís Vilanova# - if @vcpu is given, the event has the "vcpu" property.
5877e2b172SLluís Vilanova#
5977e2b172SLluís Vilanova# Therefore, if @vcpu is given, the operation will only match per-vCPU events,
6077e2b172SLluís Vilanova# returning their state on the specified vCPU. Special case: if @name is an
6177e2b172SLluís Vilanova# exact match, @vcpu is given and the event does not have the "vcpu" property,
6277e2b172SLluís Vilanova# an error is returned.
6377e2b172SLluís Vilanova#
645072f7b3SMarc-André Lureau# Since: 2.2
65a93b9ba7SMarc-André Lureau#
66a93b9ba7SMarc-André Lureau# Example:
67a93b9ba7SMarc-André Lureau#
68a93b9ba7SMarc-André Lureau# -> { "execute": "trace-event-get-state",
69a93b9ba7SMarc-André Lureau#      "arguments": { "name": "qemu_memalign" } }
70a93b9ba7SMarc-André Lureau# <- { "return": [ { "name": "qemu_memalign", "state": "disabled" } ] }
71a93b9ba7SMarc-André Lureau#
721dde0f48SLluís Vilanova##
731dde0f48SLluís Vilanova{ 'command': 'trace-event-get-state',
7477e2b172SLluís Vilanova  'data': {'name': 'str', '*vcpu': 'int'},
751dde0f48SLluís Vilanova  'returns': ['TraceEventInfo'] }
761dde0f48SLluís Vilanova
771dde0f48SLluís Vilanova##
781dde0f48SLluís Vilanova# @trace-event-set-state:
791dde0f48SLluís Vilanova#
801dde0f48SLluís Vilanova# Set the dynamic tracing state of events.
811dde0f48SLluís Vilanova#
821dde0f48SLluís Vilanova# @name: Event name pattern (case-sensitive glob).
831dde0f48SLluís Vilanova# @enable: Whether to enable tracing.
841dde0f48SLluís Vilanova# @ignore-unavailable: #optional Do not match unavailable events with @name.
8577e2b172SLluís Vilanova# @vcpu: #optional The vCPU to act upon (all by default; since 2.7).
8677e2b172SLluís Vilanova#
8777e2b172SLluís Vilanova# An event's state is modified if:
8877e2b172SLluís Vilanova# - its name matches the @name pattern, and
8977e2b172SLluís Vilanova# - if @vcpu is given, the event has the "vcpu" property.
9077e2b172SLluís Vilanova#
9177e2b172SLluís Vilanova# Therefore, if @vcpu is given, the operation will only match per-vCPU events,
9277e2b172SLluís Vilanova# setting their state on the specified vCPU. Special case: if @name is an exact
9377e2b172SLluís Vilanova# match, @vcpu is given and the event does not have the "vcpu" property, an
9477e2b172SLluís Vilanova# error is returned.
951dde0f48SLluís Vilanova#
965072f7b3SMarc-André Lureau# Since: 2.2
97*8a9b273eSMarc-André Lureau#
98*8a9b273eSMarc-André Lureau# Example:
99*8a9b273eSMarc-André Lureau#
100*8a9b273eSMarc-André Lureau# -> { "execute": "trace-event-set-state",
101*8a9b273eSMarc-André Lureau#      "arguments": { "name": "qemu_memalign", "enable": "true" } }
102*8a9b273eSMarc-André Lureau# <- { "return": {} }
103*8a9b273eSMarc-André Lureau#
1041dde0f48SLluís Vilanova##
1051dde0f48SLluís Vilanova{ 'command': 'trace-event-set-state',
10677e2b172SLluís Vilanova  'data': {'name': 'str', 'enable': 'bool', '*ignore-unavailable': 'bool',
10777e2b172SLluís Vilanova           '*vcpu': 'int'} }
108