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