1dbeee392SMarkus Armbruster# -*- Mode: Python -*- 2dbeee392SMarkus Armbruster# 3dbeee392SMarkus Armbruster 4dbeee392SMarkus Armbruster## 5dbeee392SMarkus Armbruster# = Character devices 6dbeee392SMarkus Armbruster## 7dbeee392SMarkus Armbruster 8dbeee392SMarkus Armbruster{ 'include': 'sockets.json' } 9dbeee392SMarkus Armbruster 10dbeee392SMarkus Armbruster## 11dbeee392SMarkus Armbruster# @ChardevInfo: 12dbeee392SMarkus Armbruster# 13dbeee392SMarkus Armbruster# Information about a character device. 14dbeee392SMarkus Armbruster# 15dbeee392SMarkus Armbruster# @label: the label of the character device 16dbeee392SMarkus Armbruster# 17dbeee392SMarkus Armbruster# @filename: the filename of the character device 18dbeee392SMarkus Armbruster# 19dbeee392SMarkus Armbruster# @frontend-open: shows whether the frontend device attached to this backend 20dbeee392SMarkus Armbruster# (eg. with the chardev=... option) is in open or closed state 21dbeee392SMarkus Armbruster# (since 2.1) 22dbeee392SMarkus Armbruster# 23dbeee392SMarkus Armbruster# Notes: @filename is encoded using the QEMU command line character device 24dbeee392SMarkus Armbruster# encoding. See the QEMU man page for details. 25dbeee392SMarkus Armbruster# 26dbeee392SMarkus Armbruster# Since: 0.14.0 27dbeee392SMarkus Armbruster## 28dbeee392SMarkus Armbruster{ 'struct': 'ChardevInfo', 'data': {'label': 'str', 29dbeee392SMarkus Armbruster 'filename': 'str', 30dbeee392SMarkus Armbruster 'frontend-open': 'bool'} } 31dbeee392SMarkus Armbruster 32dbeee392SMarkus Armbruster## 33dbeee392SMarkus Armbruster# @query-chardev: 34dbeee392SMarkus Armbruster# 35dbeee392SMarkus Armbruster# Returns information about current character devices. 36dbeee392SMarkus Armbruster# 37dbeee392SMarkus Armbruster# Returns: a list of @ChardevInfo 38dbeee392SMarkus Armbruster# 39dbeee392SMarkus Armbruster# Since: 0.14.0 40dbeee392SMarkus Armbruster# 41dbeee392SMarkus Armbruster# Example: 42dbeee392SMarkus Armbruster# 43dbeee392SMarkus Armbruster# -> { "execute": "query-chardev" } 44dbeee392SMarkus Armbruster# <- { 45dbeee392SMarkus Armbruster# "return": [ 46dbeee392SMarkus Armbruster# { 47dbeee392SMarkus Armbruster# "label": "charchannel0", 48dbeee392SMarkus Armbruster# "filename": "unix:/var/lib/libvirt/qemu/seabios.rhel6.agent,server", 49dbeee392SMarkus Armbruster# "frontend-open": false 50dbeee392SMarkus Armbruster# }, 51dbeee392SMarkus Armbruster# { 52dbeee392SMarkus Armbruster# "label": "charmonitor", 53dbeee392SMarkus Armbruster# "filename": "unix:/var/lib/libvirt/qemu/seabios.rhel6.monitor,server", 54dbeee392SMarkus Armbruster# "frontend-open": true 55dbeee392SMarkus Armbruster# }, 56dbeee392SMarkus Armbruster# { 57dbeee392SMarkus Armbruster# "label": "charserial0", 58dbeee392SMarkus Armbruster# "filename": "pty:/dev/pts/2", 59dbeee392SMarkus Armbruster# "frontend-open": true 60dbeee392SMarkus Armbruster# } 61dbeee392SMarkus Armbruster# ] 62dbeee392SMarkus Armbruster# } 63dbeee392SMarkus Armbruster# 64dbeee392SMarkus Armbruster## 65a87706c8SIgor Mammedov{ 'command': 'query-chardev', 'returns': ['ChardevInfo'], 66a87706c8SIgor Mammedov 'allow-preconfig': true } 67dbeee392SMarkus Armbruster 68dbeee392SMarkus Armbruster## 69dbeee392SMarkus Armbruster# @ChardevBackendInfo: 70dbeee392SMarkus Armbruster# 71dbeee392SMarkus Armbruster# Information about a character device backend 72dbeee392SMarkus Armbruster# 73dbeee392SMarkus Armbruster# @name: The backend name 74dbeee392SMarkus Armbruster# 75dbeee392SMarkus Armbruster# Since: 2.0 76dbeee392SMarkus Armbruster## 77dbeee392SMarkus Armbruster{ 'struct': 'ChardevBackendInfo', 'data': {'name': 'str'} } 78dbeee392SMarkus Armbruster 79dbeee392SMarkus Armbruster## 80dbeee392SMarkus Armbruster# @query-chardev-backends: 81dbeee392SMarkus Armbruster# 82dbeee392SMarkus Armbruster# Returns information about character device backends. 83dbeee392SMarkus Armbruster# 84dbeee392SMarkus Armbruster# Returns: a list of @ChardevBackendInfo 85dbeee392SMarkus Armbruster# 86dbeee392SMarkus Armbruster# Since: 2.0 87dbeee392SMarkus Armbruster# 88dbeee392SMarkus Armbruster# Example: 89dbeee392SMarkus Armbruster# 90dbeee392SMarkus Armbruster# -> { "execute": "query-chardev-backends" } 91dbeee392SMarkus Armbruster# <- { 92dbeee392SMarkus Armbruster# "return":[ 93dbeee392SMarkus Armbruster# { 94dbeee392SMarkus Armbruster# "name":"udp" 95dbeee392SMarkus Armbruster# }, 96dbeee392SMarkus Armbruster# { 97dbeee392SMarkus Armbruster# "name":"tcp" 98dbeee392SMarkus Armbruster# }, 99dbeee392SMarkus Armbruster# { 100dbeee392SMarkus Armbruster# "name":"unix" 101dbeee392SMarkus Armbruster# }, 102dbeee392SMarkus Armbruster# { 103dbeee392SMarkus Armbruster# "name":"spiceport" 104dbeee392SMarkus Armbruster# } 105dbeee392SMarkus Armbruster# ] 106dbeee392SMarkus Armbruster# } 107dbeee392SMarkus Armbruster# 108dbeee392SMarkus Armbruster## 109dbeee392SMarkus Armbruster{ 'command': 'query-chardev-backends', 'returns': ['ChardevBackendInfo'] } 110dbeee392SMarkus Armbruster 111dbeee392SMarkus Armbruster## 112dbeee392SMarkus Armbruster# @DataFormat: 113dbeee392SMarkus Armbruster# 114dbeee392SMarkus Armbruster# An enumeration of data format. 115dbeee392SMarkus Armbruster# 116dbeee392SMarkus Armbruster# @utf8: Data is a UTF-8 string (RFC 3629) 117dbeee392SMarkus Armbruster# 118dbeee392SMarkus Armbruster# @base64: Data is Base64 encoded binary (RFC 3548) 119dbeee392SMarkus Armbruster# 120dbeee392SMarkus Armbruster# Since: 1.4 121dbeee392SMarkus Armbruster## 122dbeee392SMarkus Armbruster{ 'enum': 'DataFormat', 123dbeee392SMarkus Armbruster 'data': [ 'utf8', 'base64' ] } 124dbeee392SMarkus Armbruster 125dbeee392SMarkus Armbruster## 126dbeee392SMarkus Armbruster# @ringbuf-write: 127dbeee392SMarkus Armbruster# 128dbeee392SMarkus Armbruster# Write to a ring buffer character device. 129dbeee392SMarkus Armbruster# 130dbeee392SMarkus Armbruster# @device: the ring buffer character device name 131dbeee392SMarkus Armbruster# 132dbeee392SMarkus Armbruster# @data: data to write 133dbeee392SMarkus Armbruster# 134dbeee392SMarkus Armbruster# @format: data encoding (default 'utf8'). 135dbeee392SMarkus Armbruster# - base64: data must be base64 encoded text. Its binary 136dbeee392SMarkus Armbruster# decoding gets written. 137dbeee392SMarkus Armbruster# - utf8: data's UTF-8 encoding is written 138dbeee392SMarkus Armbruster# - data itself is always Unicode regardless of format, like 139dbeee392SMarkus Armbruster# any other string. 140dbeee392SMarkus Armbruster# 141dbeee392SMarkus Armbruster# Returns: Nothing on success 142dbeee392SMarkus Armbruster# 143dbeee392SMarkus Armbruster# Since: 1.4 144dbeee392SMarkus Armbruster# 145dbeee392SMarkus Armbruster# Example: 146dbeee392SMarkus Armbruster# 147dbeee392SMarkus Armbruster# -> { "execute": "ringbuf-write", 148dbeee392SMarkus Armbruster# "arguments": { "device": "foo", 149dbeee392SMarkus Armbruster# "data": "abcdefgh", 150dbeee392SMarkus Armbruster# "format": "utf8" } } 151dbeee392SMarkus Armbruster# <- { "return": {} } 152dbeee392SMarkus Armbruster# 153dbeee392SMarkus Armbruster## 154dbeee392SMarkus Armbruster{ 'command': 'ringbuf-write', 155dbeee392SMarkus Armbruster 'data': {'device': 'str', 'data': 'str', 156dbeee392SMarkus Armbruster '*format': 'DataFormat'} } 157dbeee392SMarkus Armbruster 158dbeee392SMarkus Armbruster## 159dbeee392SMarkus Armbruster# @ringbuf-read: 160dbeee392SMarkus Armbruster# 161dbeee392SMarkus Armbruster# Read from a ring buffer character device. 162dbeee392SMarkus Armbruster# 163dbeee392SMarkus Armbruster# @device: the ring buffer character device name 164dbeee392SMarkus Armbruster# 165dbeee392SMarkus Armbruster# @size: how many bytes to read at most 166dbeee392SMarkus Armbruster# 167dbeee392SMarkus Armbruster# @format: data encoding (default 'utf8'). 168dbeee392SMarkus Armbruster# - base64: the data read is returned in base64 encoding. 169dbeee392SMarkus Armbruster# - utf8: the data read is interpreted as UTF-8. 170dbeee392SMarkus Armbruster# Bug: can screw up when the buffer contains invalid UTF-8 171dbeee392SMarkus Armbruster# sequences, NUL characters, after the ring buffer lost 172dbeee392SMarkus Armbruster# data, and when reading stops because the size limit is 173dbeee392SMarkus Armbruster# reached. 174dbeee392SMarkus Armbruster# - The return value is always Unicode regardless of format, 175dbeee392SMarkus Armbruster# like any other string. 176dbeee392SMarkus Armbruster# 177dbeee392SMarkus Armbruster# Returns: data read from the device 178dbeee392SMarkus Armbruster# 179dbeee392SMarkus Armbruster# Since: 1.4 180dbeee392SMarkus Armbruster# 181dbeee392SMarkus Armbruster# Example: 182dbeee392SMarkus Armbruster# 183dbeee392SMarkus Armbruster# -> { "execute": "ringbuf-read", 184dbeee392SMarkus Armbruster# "arguments": { "device": "foo", 185dbeee392SMarkus Armbruster# "size": 1000, 186dbeee392SMarkus Armbruster# "format": "utf8" } } 187dbeee392SMarkus Armbruster# <- { "return": "abcdefgh" } 188dbeee392SMarkus Armbruster# 189dbeee392SMarkus Armbruster## 190dbeee392SMarkus Armbruster{ 'command': 'ringbuf-read', 191dbeee392SMarkus Armbruster 'data': {'device': 'str', 'size': 'int', '*format': 'DataFormat'}, 192dbeee392SMarkus Armbruster 'returns': 'str' } 193dbeee392SMarkus Armbruster 194dbeee392SMarkus Armbruster## 195dbeee392SMarkus Armbruster# @ChardevCommon: 196dbeee392SMarkus Armbruster# 197dbeee392SMarkus Armbruster# Configuration shared across all chardev backends 198dbeee392SMarkus Armbruster# 199dbeee392SMarkus Armbruster# @logfile: The name of a logfile to save output 200dbeee392SMarkus Armbruster# @logappend: true to append instead of truncate 201dbeee392SMarkus Armbruster# (default to false to truncate) 202dbeee392SMarkus Armbruster# 203dbeee392SMarkus Armbruster# Since: 2.6 204dbeee392SMarkus Armbruster## 205dbeee392SMarkus Armbruster{ 'struct': 'ChardevCommon', 'data': { '*logfile': 'str', 206dbeee392SMarkus Armbruster '*logappend': 'bool' } } 207dbeee392SMarkus Armbruster 208dbeee392SMarkus Armbruster## 209dbeee392SMarkus Armbruster# @ChardevFile: 210dbeee392SMarkus Armbruster# 211dbeee392SMarkus Armbruster# Configuration info for file chardevs. 212dbeee392SMarkus Armbruster# 213dbeee392SMarkus Armbruster# @in: The name of the input file 214dbeee392SMarkus Armbruster# @out: The name of the output file 215dbeee392SMarkus Armbruster# @append: Open the file in append mode (default false to 216dbeee392SMarkus Armbruster# truncate) (Since 2.6) 217dbeee392SMarkus Armbruster# 218dbeee392SMarkus Armbruster# Since: 1.4 219dbeee392SMarkus Armbruster## 220dbeee392SMarkus Armbruster{ 'struct': 'ChardevFile', 'data': { '*in' : 'str', 221dbeee392SMarkus Armbruster 'out' : 'str', 222dbeee392SMarkus Armbruster '*append': 'bool' }, 223dbeee392SMarkus Armbruster 'base': 'ChardevCommon' } 224dbeee392SMarkus Armbruster 225dbeee392SMarkus Armbruster## 226dbeee392SMarkus Armbruster# @ChardevHostdev: 227dbeee392SMarkus Armbruster# 228dbeee392SMarkus Armbruster# Configuration info for device and pipe chardevs. 229dbeee392SMarkus Armbruster# 230dbeee392SMarkus Armbruster# @device: The name of the special file for the device, 231dbeee392SMarkus Armbruster# i.e. /dev/ttyS0 on Unix or COM1: on Windows 232dbeee392SMarkus Armbruster# 233dbeee392SMarkus Armbruster# Since: 1.4 234dbeee392SMarkus Armbruster## 235dbeee392SMarkus Armbruster{ 'struct': 'ChardevHostdev', 'data': { 'device' : 'str' }, 236dbeee392SMarkus Armbruster 'base': 'ChardevCommon' } 237dbeee392SMarkus Armbruster 238dbeee392SMarkus Armbruster## 239dbeee392SMarkus Armbruster# @ChardevSocket: 240dbeee392SMarkus Armbruster# 241dbeee392SMarkus Armbruster# Configuration info for (stream) socket chardevs. 242dbeee392SMarkus Armbruster# 243dbeee392SMarkus Armbruster# @addr: socket address to listen on (server=true) 244dbeee392SMarkus Armbruster# or connect to (server=false) 245dbeee392SMarkus Armbruster# @tls-creds: the ID of the TLS credentials object (since 2.6) 246dbeee392SMarkus Armbruster# @server: create server socket (default: true) 247dbeee392SMarkus Armbruster# @wait: wait for incoming connection on server 248dbeee392SMarkus Armbruster# sockets (default: false). 249dbeee392SMarkus Armbruster# @nodelay: set TCP_NODELAY socket option (default: false) 250dbeee392SMarkus Armbruster# @telnet: enable telnet protocol on server 251dbeee392SMarkus Armbruster# sockets (default: false) 252dbeee392SMarkus Armbruster# @tn3270: enable tn3270 protocol on server 253dbeee392SMarkus Armbruster# sockets (default: false) (Since: 2.10) 254*981b06e7SJulia Suvorova# @websocket: enable websocket protocol on server 255*981b06e7SJulia Suvorova# sockets (default: false) (Since: 3.1) 256dbeee392SMarkus Armbruster# @reconnect: For a client socket, if a socket is disconnected, 257dbeee392SMarkus Armbruster# then attempt a reconnect after the given number of seconds. 258dbeee392SMarkus Armbruster# Setting this to zero disables this function. (default: 0) 259dbeee392SMarkus Armbruster# (Since: 2.2) 260dbeee392SMarkus Armbruster# 261dbeee392SMarkus Armbruster# Since: 1.4 262dbeee392SMarkus Armbruster## 263dbeee392SMarkus Armbruster{ 'struct': 'ChardevSocket', 'data': { 'addr' : 'SocketAddressLegacy', 264dbeee392SMarkus Armbruster '*tls-creds' : 'str', 265dbeee392SMarkus Armbruster '*server' : 'bool', 266dbeee392SMarkus Armbruster '*wait' : 'bool', 267dbeee392SMarkus Armbruster '*nodelay' : 'bool', 268dbeee392SMarkus Armbruster '*telnet' : 'bool', 269dbeee392SMarkus Armbruster '*tn3270' : 'bool', 270*981b06e7SJulia Suvorova '*websocket' : 'bool', 271dbeee392SMarkus Armbruster '*reconnect' : 'int' }, 272dbeee392SMarkus Armbruster 'base': 'ChardevCommon' } 273dbeee392SMarkus Armbruster 274dbeee392SMarkus Armbruster## 275dbeee392SMarkus Armbruster# @ChardevUdp: 276dbeee392SMarkus Armbruster# 277dbeee392SMarkus Armbruster# Configuration info for datagram socket chardevs. 278dbeee392SMarkus Armbruster# 279dbeee392SMarkus Armbruster# @remote: remote address 280dbeee392SMarkus Armbruster# @local: local address 281dbeee392SMarkus Armbruster# 282dbeee392SMarkus Armbruster# Since: 1.5 283dbeee392SMarkus Armbruster## 284dbeee392SMarkus Armbruster{ 'struct': 'ChardevUdp', 'data': { 'remote' : 'SocketAddressLegacy', 285dbeee392SMarkus Armbruster '*local' : 'SocketAddressLegacy' }, 286dbeee392SMarkus Armbruster 'base': 'ChardevCommon' } 287dbeee392SMarkus Armbruster 288dbeee392SMarkus Armbruster## 289dbeee392SMarkus Armbruster# @ChardevMux: 290dbeee392SMarkus Armbruster# 291dbeee392SMarkus Armbruster# Configuration info for mux chardevs. 292dbeee392SMarkus Armbruster# 293dbeee392SMarkus Armbruster# @chardev: name of the base chardev. 294dbeee392SMarkus Armbruster# 295dbeee392SMarkus Armbruster# Since: 1.5 296dbeee392SMarkus Armbruster## 297dbeee392SMarkus Armbruster{ 'struct': 'ChardevMux', 'data': { 'chardev' : 'str' }, 298dbeee392SMarkus Armbruster 'base': 'ChardevCommon' } 299dbeee392SMarkus Armbruster 300dbeee392SMarkus Armbruster## 301dbeee392SMarkus Armbruster# @ChardevStdio: 302dbeee392SMarkus Armbruster# 303dbeee392SMarkus Armbruster# Configuration info for stdio chardevs. 304dbeee392SMarkus Armbruster# 305dbeee392SMarkus Armbruster# @signal: Allow signals (such as SIGINT triggered by ^C) 306dbeee392SMarkus Armbruster# be delivered to qemu. Default: true in -nographic mode, 307dbeee392SMarkus Armbruster# false otherwise. 308dbeee392SMarkus Armbruster# 309dbeee392SMarkus Armbruster# Since: 1.5 310dbeee392SMarkus Armbruster## 311dbeee392SMarkus Armbruster{ 'struct': 'ChardevStdio', 'data': { '*signal' : 'bool' }, 312dbeee392SMarkus Armbruster 'base': 'ChardevCommon' } 313dbeee392SMarkus Armbruster 314dbeee392SMarkus Armbruster 315dbeee392SMarkus Armbruster## 316dbeee392SMarkus Armbruster# @ChardevSpiceChannel: 317dbeee392SMarkus Armbruster# 318dbeee392SMarkus Armbruster# Configuration info for spice vm channel chardevs. 319dbeee392SMarkus Armbruster# 320dbeee392SMarkus Armbruster# @type: kind of channel (for example vdagent). 321dbeee392SMarkus Armbruster# 322dbeee392SMarkus Armbruster# Since: 1.5 323dbeee392SMarkus Armbruster## 324dbeee392SMarkus Armbruster{ 'struct': 'ChardevSpiceChannel', 'data': { 'type' : 'str' }, 325dbeee392SMarkus Armbruster 'base': 'ChardevCommon' } 326514337c1SMarc-André Lureau# TODO: 'if': 'defined(CONFIG_SPICE)' 327dbeee392SMarkus Armbruster 328dbeee392SMarkus Armbruster## 329dbeee392SMarkus Armbruster# @ChardevSpicePort: 330dbeee392SMarkus Armbruster# 331dbeee392SMarkus Armbruster# Configuration info for spice port chardevs. 332dbeee392SMarkus Armbruster# 333dbeee392SMarkus Armbruster# @fqdn: name of the channel (see docs/spice-port-fqdn.txt) 334dbeee392SMarkus Armbruster# 335dbeee392SMarkus Armbruster# Since: 1.5 336dbeee392SMarkus Armbruster## 337dbeee392SMarkus Armbruster{ 'struct': 'ChardevSpicePort', 'data': { 'fqdn' : 'str' }, 338dbeee392SMarkus Armbruster 'base': 'ChardevCommon' } 339514337c1SMarc-André Lureau# TODO: 'if': 'defined(CONFIG_SPICE)' 340dbeee392SMarkus Armbruster 341dbeee392SMarkus Armbruster## 342dbeee392SMarkus Armbruster# @ChardevVC: 343dbeee392SMarkus Armbruster# 344dbeee392SMarkus Armbruster# Configuration info for virtual console chardevs. 345dbeee392SMarkus Armbruster# 346dbeee392SMarkus Armbruster# @width: console width, in pixels 347dbeee392SMarkus Armbruster# @height: console height, in pixels 348dbeee392SMarkus Armbruster# @cols: console width, in chars 349dbeee392SMarkus Armbruster# @rows: console height, in chars 350dbeee392SMarkus Armbruster# 351dbeee392SMarkus Armbruster# Since: 1.5 352dbeee392SMarkus Armbruster## 353dbeee392SMarkus Armbruster{ 'struct': 'ChardevVC', 'data': { '*width' : 'int', 354dbeee392SMarkus Armbruster '*height' : 'int', 355dbeee392SMarkus Armbruster '*cols' : 'int', 356dbeee392SMarkus Armbruster '*rows' : 'int' }, 357dbeee392SMarkus Armbruster 'base': 'ChardevCommon' } 358dbeee392SMarkus Armbruster 359dbeee392SMarkus Armbruster## 360dbeee392SMarkus Armbruster# @ChardevRingbuf: 361dbeee392SMarkus Armbruster# 362dbeee392SMarkus Armbruster# Configuration info for ring buffer chardevs. 363dbeee392SMarkus Armbruster# 364dbeee392SMarkus Armbruster# @size: ring buffer size, must be power of two, default is 65536 365dbeee392SMarkus Armbruster# 366dbeee392SMarkus Armbruster# Since: 1.5 367dbeee392SMarkus Armbruster## 368dbeee392SMarkus Armbruster{ 'struct': 'ChardevRingbuf', 'data': { '*size' : 'int' }, 369dbeee392SMarkus Armbruster 'base': 'ChardevCommon' } 370dbeee392SMarkus Armbruster 371dbeee392SMarkus Armbruster## 372dbeee392SMarkus Armbruster# @ChardevBackend: 373dbeee392SMarkus Armbruster# 374dbeee392SMarkus Armbruster# Configuration info for the new chardev backend. 375dbeee392SMarkus Armbruster# 376dbeee392SMarkus Armbruster# Since: 1.4 (testdev since 2.2, wctablet since 2.9) 377dbeee392SMarkus Armbruster## 378dbeee392SMarkus Armbruster{ 'union': 'ChardevBackend', 'data': { 'file' : 'ChardevFile', 379dbeee392SMarkus Armbruster 'serial' : 'ChardevHostdev', 380dbeee392SMarkus Armbruster 'parallel': 'ChardevHostdev', 381dbeee392SMarkus Armbruster 'pipe' : 'ChardevHostdev', 382dbeee392SMarkus Armbruster 'socket' : 'ChardevSocket', 383dbeee392SMarkus Armbruster 'udp' : 'ChardevUdp', 384dbeee392SMarkus Armbruster 'pty' : 'ChardevCommon', 385dbeee392SMarkus Armbruster 'null' : 'ChardevCommon', 386dbeee392SMarkus Armbruster 'mux' : 'ChardevMux', 387dbeee392SMarkus Armbruster 'msmouse': 'ChardevCommon', 388dbeee392SMarkus Armbruster 'wctablet' : 'ChardevCommon', 389dbeee392SMarkus Armbruster 'braille': 'ChardevCommon', 390dbeee392SMarkus Armbruster 'testdev': 'ChardevCommon', 391dbeee392SMarkus Armbruster 'stdio' : 'ChardevStdio', 392dbeee392SMarkus Armbruster 'console': 'ChardevCommon', 393dbeee392SMarkus Armbruster 'spicevmc': 'ChardevSpiceChannel', 394514337c1SMarc-André Lureau# TODO: { 'type': 'ChardevSpiceChannel', 'if': 'defined(CONFIG_SPICE)' }, 395dbeee392SMarkus Armbruster 'spiceport': 'ChardevSpicePort', 396514337c1SMarc-André Lureau# TODO: { 'type': 'ChardevSpicePort', 'if': 'defined(CONFIG_SPICE)' }, 397dbeee392SMarkus Armbruster 'vc' : 'ChardevVC', 398dbeee392SMarkus Armbruster 'ringbuf': 'ChardevRingbuf', 399dbeee392SMarkus Armbruster # next one is just for compatibility 400dbeee392SMarkus Armbruster 'memory' : 'ChardevRingbuf' } } 401dbeee392SMarkus Armbruster 402dbeee392SMarkus Armbruster## 403dbeee392SMarkus Armbruster# @ChardevReturn: 404dbeee392SMarkus Armbruster# 405dbeee392SMarkus Armbruster# Return info about the chardev backend just created. 406dbeee392SMarkus Armbruster# 407dbeee392SMarkus Armbruster# @pty: name of the slave pseudoterminal device, present if 408dbeee392SMarkus Armbruster# and only if a chardev of type 'pty' was created 409dbeee392SMarkus Armbruster# 410dbeee392SMarkus Armbruster# Since: 1.4 411dbeee392SMarkus Armbruster## 412dbeee392SMarkus Armbruster{ 'struct' : 'ChardevReturn', 'data': { '*pty' : 'str' } } 413dbeee392SMarkus Armbruster 414dbeee392SMarkus Armbruster## 415dbeee392SMarkus Armbruster# @chardev-add: 416dbeee392SMarkus Armbruster# 417dbeee392SMarkus Armbruster# Add a character device backend 418dbeee392SMarkus Armbruster# 419dbeee392SMarkus Armbruster# @id: the chardev's ID, must be unique 420dbeee392SMarkus Armbruster# @backend: backend type and parameters 421dbeee392SMarkus Armbruster# 422dbeee392SMarkus Armbruster# Returns: ChardevReturn. 423dbeee392SMarkus Armbruster# 424dbeee392SMarkus Armbruster# Since: 1.4 425dbeee392SMarkus Armbruster# 426dbeee392SMarkus Armbruster# Example: 427dbeee392SMarkus Armbruster# 428dbeee392SMarkus Armbruster# -> { "execute" : "chardev-add", 429dbeee392SMarkus Armbruster# "arguments" : { "id" : "foo", 430dbeee392SMarkus Armbruster# "backend" : { "type" : "null", "data" : {} } } } 431dbeee392SMarkus Armbruster# <- { "return": {} } 432dbeee392SMarkus Armbruster# 433dbeee392SMarkus Armbruster# -> { "execute" : "chardev-add", 434dbeee392SMarkus Armbruster# "arguments" : { "id" : "bar", 435dbeee392SMarkus Armbruster# "backend" : { "type" : "file", 436dbeee392SMarkus Armbruster# "data" : { "out" : "/tmp/bar.log" } } } } 437dbeee392SMarkus Armbruster# <- { "return": {} } 438dbeee392SMarkus Armbruster# 439dbeee392SMarkus Armbruster# -> { "execute" : "chardev-add", 440dbeee392SMarkus Armbruster# "arguments" : { "id" : "baz", 441dbeee392SMarkus Armbruster# "backend" : { "type" : "pty", "data" : {} } } } 442dbeee392SMarkus Armbruster# <- { "return": { "pty" : "/dev/pty/42" } } 443dbeee392SMarkus Armbruster# 444dbeee392SMarkus Armbruster## 445dbeee392SMarkus Armbruster{ 'command': 'chardev-add', 'data': {'id' : 'str', 446dbeee392SMarkus Armbruster 'backend' : 'ChardevBackend' }, 447dbeee392SMarkus Armbruster 'returns': 'ChardevReturn' } 448dbeee392SMarkus Armbruster 449dbeee392SMarkus Armbruster## 450dbeee392SMarkus Armbruster# @chardev-change: 451dbeee392SMarkus Armbruster# 452dbeee392SMarkus Armbruster# Change a character device backend 453dbeee392SMarkus Armbruster# 454dbeee392SMarkus Armbruster# @id: the chardev's ID, must exist 455dbeee392SMarkus Armbruster# @backend: new backend type and parameters 456dbeee392SMarkus Armbruster# 457dbeee392SMarkus Armbruster# Returns: ChardevReturn. 458dbeee392SMarkus Armbruster# 459dbeee392SMarkus Armbruster# Since: 2.10 460dbeee392SMarkus Armbruster# 461dbeee392SMarkus Armbruster# Example: 462dbeee392SMarkus Armbruster# 463dbeee392SMarkus Armbruster# -> { "execute" : "chardev-change", 464dbeee392SMarkus Armbruster# "arguments" : { "id" : "baz", 465dbeee392SMarkus Armbruster# "backend" : { "type" : "pty", "data" : {} } } } 466dbeee392SMarkus Armbruster# <- { "return": { "pty" : "/dev/pty/42" } } 467dbeee392SMarkus Armbruster# 468dbeee392SMarkus Armbruster# -> {"execute" : "chardev-change", 469dbeee392SMarkus Armbruster# "arguments" : { 470dbeee392SMarkus Armbruster# "id" : "charchannel2", 471dbeee392SMarkus Armbruster# "backend" : { 472dbeee392SMarkus Armbruster# "type" : "socket", 473dbeee392SMarkus Armbruster# "data" : { 474dbeee392SMarkus Armbruster# "addr" : { 475dbeee392SMarkus Armbruster# "type" : "unix" , 476dbeee392SMarkus Armbruster# "data" : { 477dbeee392SMarkus Armbruster# "path" : "/tmp/charchannel2.socket" 478dbeee392SMarkus Armbruster# } 479dbeee392SMarkus Armbruster# }, 480dbeee392SMarkus Armbruster# "server" : true, 481dbeee392SMarkus Armbruster# "wait" : false }}}} 482dbeee392SMarkus Armbruster# <- {"return": {}} 483dbeee392SMarkus Armbruster# 484dbeee392SMarkus Armbruster## 485dbeee392SMarkus Armbruster{ 'command': 'chardev-change', 'data': {'id' : 'str', 486dbeee392SMarkus Armbruster 'backend' : 'ChardevBackend' }, 487dbeee392SMarkus Armbruster 'returns': 'ChardevReturn' } 488dbeee392SMarkus Armbruster 489dbeee392SMarkus Armbruster## 490dbeee392SMarkus Armbruster# @chardev-remove: 491dbeee392SMarkus Armbruster# 492dbeee392SMarkus Armbruster# Remove a character device backend 493dbeee392SMarkus Armbruster# 494dbeee392SMarkus Armbruster# @id: the chardev's ID, must exist and not be in use 495dbeee392SMarkus Armbruster# 496dbeee392SMarkus Armbruster# Returns: Nothing on success 497dbeee392SMarkus Armbruster# 498dbeee392SMarkus Armbruster# Since: 1.4 499dbeee392SMarkus Armbruster# 500dbeee392SMarkus Armbruster# Example: 501dbeee392SMarkus Armbruster# 502dbeee392SMarkus Armbruster# -> { "execute": "chardev-remove", "arguments": { "id" : "foo" } } 503dbeee392SMarkus Armbruster# <- { "return": {} } 504dbeee392SMarkus Armbruster# 505dbeee392SMarkus Armbruster## 506dbeee392SMarkus Armbruster{ 'command': 'chardev-remove', 'data': {'id': 'str'} } 507dbeee392SMarkus Armbruster 508dbeee392SMarkus Armbruster## 509dbeee392SMarkus Armbruster# @chardev-send-break: 510dbeee392SMarkus Armbruster# 511dbeee392SMarkus Armbruster# Send a break to a character device 512dbeee392SMarkus Armbruster# 513dbeee392SMarkus Armbruster# @id: the chardev's ID, must exist 514dbeee392SMarkus Armbruster# 515dbeee392SMarkus Armbruster# Returns: Nothing on success 516dbeee392SMarkus Armbruster# 517dbeee392SMarkus Armbruster# Since: 2.10 518dbeee392SMarkus Armbruster# 519dbeee392SMarkus Armbruster# Example: 520dbeee392SMarkus Armbruster# 521dbeee392SMarkus Armbruster# -> { "execute": "chardev-send-break", "arguments": { "id" : "foo" } } 522dbeee392SMarkus Armbruster# <- { "return": {} } 523dbeee392SMarkus Armbruster# 524dbeee392SMarkus Armbruster## 525dbeee392SMarkus Armbruster{ 'command': 'chardev-send-break', 'data': {'id': 'str'} } 526dbeee392SMarkus Armbruster 527dbeee392SMarkus Armbruster## 528dbeee392SMarkus Armbruster# @VSERPORT_CHANGE: 529dbeee392SMarkus Armbruster# 530dbeee392SMarkus Armbruster# Emitted when the guest opens or closes a virtio-serial port. 531dbeee392SMarkus Armbruster# 532dbeee392SMarkus Armbruster# @id: device identifier of the virtio-serial port 533dbeee392SMarkus Armbruster# 534dbeee392SMarkus Armbruster# @open: true if the guest has opened the virtio-serial port 535dbeee392SMarkus Armbruster# 536dbeee392SMarkus Armbruster# Since: 2.1 537dbeee392SMarkus Armbruster# 538dbeee392SMarkus Armbruster# Example: 539dbeee392SMarkus Armbruster# 540dbeee392SMarkus Armbruster# <- { "event": "VSERPORT_CHANGE", 541dbeee392SMarkus Armbruster# "data": { "id": "channel0", "open": true }, 542dbeee392SMarkus Armbruster# "timestamp": { "seconds": 1401385907, "microseconds": 422329 } } 543dbeee392SMarkus Armbruster# 544dbeee392SMarkus Armbruster## 545dbeee392SMarkus Armbruster{ 'event': 'VSERPORT_CHANGE', 546dbeee392SMarkus Armbruster 'data': { 'id': 'str', 'open': 'bool' } } 547