xref: /openbmc/qemu/qapi/char.json (revision 32aa1f8d)
1dbeee392SMarkus Armbruster# -*- Mode: Python -*-
2f7160f32SAndrea Bolognani# vim: filetype=python
3dbeee392SMarkus Armbruster#
4dbeee392SMarkus Armbruster
5dbeee392SMarkus Armbruster##
6dbeee392SMarkus Armbruster# = Character devices
7dbeee392SMarkus Armbruster##
8dbeee392SMarkus Armbruster
9dbeee392SMarkus Armbruster{ 'include': 'sockets.json' }
10dbeee392SMarkus Armbruster
11dbeee392SMarkus Armbruster##
12dbeee392SMarkus Armbruster# @ChardevInfo:
13dbeee392SMarkus Armbruster#
14dbeee392SMarkus Armbruster# Information about a character device.
15dbeee392SMarkus Armbruster#
16dbeee392SMarkus Armbruster# @label: the label of the character device
17dbeee392SMarkus Armbruster#
18dbeee392SMarkus Armbruster# @filename: the filename of the character device
19dbeee392SMarkus Armbruster#
20a937b6aaSMarkus Armbruster# @frontend-open: shows whether the frontend device attached to this
21ff62c210SMarkus Armbruster#     backend (e.g. with the chardev=... option) is in open or closed
22a937b6aaSMarkus Armbruster#     state (since 2.1)
23dbeee392SMarkus Armbruster#
24a937b6aaSMarkus Armbruster# Notes: @filename is encoded using the QEMU command line character
25a937b6aaSMarkus Armbruster#     device encoding.  See the QEMU man page for details.
26dbeee392SMarkus Armbruster#
279bc6e893SMarkus Armbruster# Since: 0.14
28dbeee392SMarkus Armbruster##
29b0ddeba2SMarc-André Lureau{ 'struct': 'ChardevInfo',
30b0ddeba2SMarc-André Lureau  'data': { 'label': 'str',
31dbeee392SMarkus Armbruster            'filename': 'str',
32dbeee392SMarkus Armbruster            'frontend-open': 'bool' } }
33dbeee392SMarkus Armbruster
34dbeee392SMarkus Armbruster##
35dbeee392SMarkus Armbruster# @query-chardev:
36dbeee392SMarkus Armbruster#
37dbeee392SMarkus Armbruster# Returns information about current character devices.
38dbeee392SMarkus Armbruster#
39dbeee392SMarkus Armbruster# Returns: a list of @ChardevInfo
40dbeee392SMarkus Armbruster#
419bc6e893SMarkus Armbruster# Since: 0.14
42dbeee392SMarkus Armbruster#
43dbeee392SMarkus Armbruster# Example:
44dbeee392SMarkus Armbruster#
45dbeee392SMarkus Armbruster# -> { "execute": "query-chardev" }
46dbeee392SMarkus Armbruster# <- {
47dbeee392SMarkus Armbruster#       "return": [
48dbeee392SMarkus Armbruster#          {
49dbeee392SMarkus Armbruster#             "label": "charchannel0",
509d902d51SPaolo Bonzini#             "filename": "unix:/var/lib/libvirt/qemu/seabios.rhel6.agent,server=on",
51dbeee392SMarkus Armbruster#             "frontend-open": false
52dbeee392SMarkus Armbruster#          },
53dbeee392SMarkus Armbruster#          {
54dbeee392SMarkus Armbruster#             "label": "charmonitor",
559d902d51SPaolo Bonzini#             "filename": "unix:/var/lib/libvirt/qemu/seabios.rhel6.monitor,server=on",
56dbeee392SMarkus Armbruster#             "frontend-open": true
57dbeee392SMarkus Armbruster#          },
58dbeee392SMarkus Armbruster#          {
59dbeee392SMarkus Armbruster#             "label": "charserial0",
60dbeee392SMarkus Armbruster#             "filename": "pty:/dev/pts/2",
61dbeee392SMarkus Armbruster#             "frontend-open": true
62dbeee392SMarkus Armbruster#          }
63dbeee392SMarkus Armbruster#       ]
64dbeee392SMarkus Armbruster#    }
65dbeee392SMarkus Armbruster##
66a87706c8SIgor Mammedov{ 'command': 'query-chardev', 'returns': ['ChardevInfo'],
67a87706c8SIgor Mammedov  'allow-preconfig': true }
68dbeee392SMarkus Armbruster
69dbeee392SMarkus Armbruster##
70dbeee392SMarkus Armbruster# @ChardevBackendInfo:
71dbeee392SMarkus Armbruster#
72dbeee392SMarkus Armbruster# Information about a character device backend
73dbeee392SMarkus Armbruster#
74dbeee392SMarkus Armbruster# @name: The backend name
75dbeee392SMarkus Armbruster#
76dbeee392SMarkus Armbruster# Since: 2.0
77dbeee392SMarkus Armbruster##
78dbeee392SMarkus Armbruster{ 'struct': 'ChardevBackendInfo', 'data': {'name': 'str'} }
79dbeee392SMarkus Armbruster
80dbeee392SMarkus Armbruster##
81dbeee392SMarkus Armbruster# @query-chardev-backends:
82dbeee392SMarkus Armbruster#
83dbeee392SMarkus Armbruster# Returns information about character device backends.
84dbeee392SMarkus Armbruster#
85dbeee392SMarkus Armbruster# Returns: a list of @ChardevBackendInfo
86dbeee392SMarkus Armbruster#
87dbeee392SMarkus Armbruster# Since: 2.0
88dbeee392SMarkus Armbruster#
89dbeee392SMarkus Armbruster# Example:
90dbeee392SMarkus Armbruster#
91dbeee392SMarkus Armbruster# -> { "execute": "query-chardev-backends" }
92dbeee392SMarkus Armbruster# <- {
93dbeee392SMarkus Armbruster#       "return":[
94dbeee392SMarkus Armbruster#          {
95dbeee392SMarkus Armbruster#             "name":"udp"
96dbeee392SMarkus Armbruster#          },
97dbeee392SMarkus Armbruster#          {
98dbeee392SMarkus Armbruster#             "name":"tcp"
99dbeee392SMarkus Armbruster#          },
100dbeee392SMarkus Armbruster#          {
101dbeee392SMarkus Armbruster#             "name":"unix"
102dbeee392SMarkus Armbruster#          },
103dbeee392SMarkus Armbruster#          {
104dbeee392SMarkus Armbruster#             "name":"spiceport"
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').
135100cc4feSPeter Maydell#
136a937b6aaSMarkus Armbruster#     - base64: data must be base64 encoded text.  Its binary decoding
137a937b6aaSMarkus Armbruster#       gets written.
138dbeee392SMarkus Armbruster#     - utf8: data's UTF-8 encoding is written
139a937b6aaSMarkus Armbruster#     - data itself is always Unicode regardless of format, like any
140a937b6aaSMarkus Armbruster#       other string.
141dbeee392SMarkus Armbruster#
142dbeee392SMarkus Armbruster# Returns: Nothing on success
143dbeee392SMarkus Armbruster#
144dbeee392SMarkus Armbruster# Since: 1.4
145dbeee392SMarkus Armbruster#
146dbeee392SMarkus Armbruster# Example:
147dbeee392SMarkus Armbruster#
148dbeee392SMarkus Armbruster# -> { "execute": "ringbuf-write",
149dbeee392SMarkus Armbruster#      "arguments": { "device": "foo",
150dbeee392SMarkus Armbruster#                     "data": "abcdefgh",
151dbeee392SMarkus Armbruster#                     "format": "utf8" } }
152dbeee392SMarkus Armbruster# <- { "return": {} }
153dbeee392SMarkus Armbruster##
154dbeee392SMarkus Armbruster{ 'command': 'ringbuf-write',
155b0ddeba2SMarc-André Lureau  'data': { 'device': 'str',
156b0ddeba2SMarc-André Lureau            'data': 'str',
157dbeee392SMarkus Armbruster           '*format': 'DataFormat'} }
158dbeee392SMarkus Armbruster
159dbeee392SMarkus Armbruster##
160dbeee392SMarkus Armbruster# @ringbuf-read:
161dbeee392SMarkus Armbruster#
162dbeee392SMarkus Armbruster# Read from a ring buffer character device.
163dbeee392SMarkus Armbruster#
164dbeee392SMarkus Armbruster# @device: the ring buffer character device name
165dbeee392SMarkus Armbruster#
166dbeee392SMarkus Armbruster# @size: how many bytes to read at most
167dbeee392SMarkus Armbruster#
168dbeee392SMarkus Armbruster# @format: data encoding (default 'utf8').
169100cc4feSPeter Maydell#
170dbeee392SMarkus Armbruster#     - base64: the data read is returned in base64 encoding.
171dbeee392SMarkus Armbruster#     - utf8: the data read is interpreted as UTF-8.
172dbeee392SMarkus Armbruster#       Bug: can screw up when the buffer contains invalid UTF-8
173a937b6aaSMarkus Armbruster#       sequences, NUL characters, after the ring buffer lost data,
174a937b6aaSMarkus Armbruster#       and when reading stops because the size limit is reached.
175a937b6aaSMarkus Armbruster#     - The return value is always Unicode regardless of format, like
176a937b6aaSMarkus Armbruster#       any other string.
177dbeee392SMarkus Armbruster#
178dbeee392SMarkus Armbruster# Returns: data read from the device
179dbeee392SMarkus Armbruster#
180dbeee392SMarkus Armbruster# Since: 1.4
181dbeee392SMarkus Armbruster#
182dbeee392SMarkus Armbruster# Example:
183dbeee392SMarkus Armbruster#
184dbeee392SMarkus Armbruster# -> { "execute": "ringbuf-read",
185dbeee392SMarkus Armbruster#      "arguments": { "device": "foo",
186dbeee392SMarkus Armbruster#                     "size": 1000,
187dbeee392SMarkus Armbruster#                     "format": "utf8" } }
188dbeee392SMarkus Armbruster# <- { "return": "abcdefgh" }
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
200a937b6aaSMarkus Armbruster#
201a937b6aaSMarkus Armbruster# @logappend: true to append instead of truncate (default to false to
202a937b6aaSMarkus Armbruster#     truncate)
203dbeee392SMarkus Armbruster#
204dbeee392SMarkus Armbruster# Since: 2.6
205dbeee392SMarkus Armbruster##
206b0ddeba2SMarc-André Lureau{ 'struct': 'ChardevCommon',
207b0ddeba2SMarc-André Lureau  'data': { '*logfile': 'str',
208dbeee392SMarkus Armbruster            '*logappend': 'bool' } }
209dbeee392SMarkus Armbruster
210dbeee392SMarkus Armbruster##
211dbeee392SMarkus Armbruster# @ChardevFile:
212dbeee392SMarkus Armbruster#
213dbeee392SMarkus Armbruster# Configuration info for file chardevs.
214dbeee392SMarkus Armbruster#
215dbeee392SMarkus Armbruster# @in: The name of the input file
216a937b6aaSMarkus Armbruster#
217dbeee392SMarkus Armbruster# @out: The name of the output file
218a937b6aaSMarkus Armbruster#
219a937b6aaSMarkus Armbruster# @append: Open the file in append mode (default false to truncate)
220a937b6aaSMarkus Armbruster#     (Since 2.6)
221dbeee392SMarkus Armbruster#
222dbeee392SMarkus Armbruster# Since: 1.4
223dbeee392SMarkus Armbruster##
224b0ddeba2SMarc-André Lureau{ 'struct': 'ChardevFile',
225b0ddeba2SMarc-André Lureau  'data': { '*in': 'str',
226dbeee392SMarkus Armbruster            'out': 'str',
227dbeee392SMarkus Armbruster            '*append': 'bool' },
228dbeee392SMarkus Armbruster  'base': 'ChardevCommon' }
229dbeee392SMarkus Armbruster
230dbeee392SMarkus Armbruster##
231dbeee392SMarkus Armbruster# @ChardevHostdev:
232dbeee392SMarkus Armbruster#
233dbeee392SMarkus Armbruster# Configuration info for device and pipe chardevs.
234dbeee392SMarkus Armbruster#
235a937b6aaSMarkus Armbruster# @device: The name of the special file for the device, i.e.
236a937b6aaSMarkus Armbruster#     /dev/ttyS0 on Unix or COM1: on Windows
237dbeee392SMarkus Armbruster#
238dbeee392SMarkus Armbruster# Since: 1.4
239dbeee392SMarkus Armbruster##
240b0ddeba2SMarc-André Lureau{ 'struct': 'ChardevHostdev',
241b0ddeba2SMarc-André Lureau  'data': { 'device': 'str' },
242dbeee392SMarkus Armbruster  'base': 'ChardevCommon' }
243dbeee392SMarkus Armbruster
244dbeee392SMarkus Armbruster##
245dbeee392SMarkus Armbruster# @ChardevSocket:
246dbeee392SMarkus Armbruster#
247dbeee392SMarkus Armbruster# Configuration info for (stream) socket chardevs.
248dbeee392SMarkus Armbruster#
249a937b6aaSMarkus Armbruster# @addr: socket address to listen on (server=true) or connect to
250a937b6aaSMarkus Armbruster#     (server=false)
251a937b6aaSMarkus Armbruster#
252dbeee392SMarkus Armbruster# @tls-creds: the ID of the TLS credentials object (since 2.6)
253a937b6aaSMarkus Armbruster#
254fd4a5fd4SDaniel P. Berrange# @tls-authz: the ID of the QAuthZ authorization object against which
255fd4a5fd4SDaniel P. Berrange#     the client's x509 distinguished name will be validated.  This
256a937b6aaSMarkus Armbruster#     object is only resolved at time of use, so can be deleted and
257a937b6aaSMarkus Armbruster#     recreated on the fly while the chardev server is active.  If
258a937b6aaSMarkus Armbruster#     missing, it will default to denying access (since 4.0)
259a937b6aaSMarkus Armbruster#
260dbeee392SMarkus Armbruster# @server: create server socket (default: true)
261a937b6aaSMarkus Armbruster#
262a937b6aaSMarkus Armbruster# @wait: wait for incoming connection on server sockets (default:
263a937b6aaSMarkus Armbruster#     false). Silently ignored with server: false.  This use is
264a937b6aaSMarkus Armbruster#     deprecated.
265a937b6aaSMarkus Armbruster#
266dbeee392SMarkus Armbruster# @nodelay: set TCP_NODELAY socket option (default: false)
267a937b6aaSMarkus Armbruster#
268a937b6aaSMarkus Armbruster# @telnet: enable telnet protocol on server sockets (default: false)
269a937b6aaSMarkus Armbruster#
270a937b6aaSMarkus Armbruster# @tn3270: enable tn3270 protocol on server sockets (default: false)
271a937b6aaSMarkus Armbruster#     (Since: 2.10)
272a937b6aaSMarkus Armbruster#
273a937b6aaSMarkus Armbruster# @websocket: enable websocket protocol on server sockets
274a937b6aaSMarkus Armbruster#     (default: false) (Since: 3.1)
275a937b6aaSMarkus Armbruster#
276a937b6aaSMarkus Armbruster# @reconnect: For a client socket, if a socket is disconnected, then
277a937b6aaSMarkus Armbruster#     attempt a reconnect after the given number of seconds.  Setting
278a937b6aaSMarkus Armbruster#     this to zero disables this function.  (default: 0) (Since: 2.2)
279dbeee392SMarkus Armbruster#
280dbeee392SMarkus Armbruster# Since: 1.4
281dbeee392SMarkus Armbruster##
282b0ddeba2SMarc-André Lureau{ 'struct': 'ChardevSocket',
283b0ddeba2SMarc-André Lureau  'data': { 'addr': 'SocketAddressLegacy',
284dbeee392SMarkus Armbruster            '*tls-creds': 'str',
285fd4a5fd4SDaniel P. Berrange            '*tls-authz'  : 'str',
286dbeee392SMarkus Armbruster            '*server': 'bool',
287dbeee392SMarkus Armbruster            '*wait': 'bool',
288dbeee392SMarkus Armbruster            '*nodelay': 'bool',
289dbeee392SMarkus Armbruster            '*telnet': 'bool',
290dbeee392SMarkus Armbruster            '*tn3270': 'bool',
291981b06e7SJulia Suvorova            '*websocket': 'bool',
292dbeee392SMarkus Armbruster            '*reconnect': 'int' },
293dbeee392SMarkus Armbruster  'base': 'ChardevCommon' }
294dbeee392SMarkus Armbruster
295dbeee392SMarkus Armbruster##
296dbeee392SMarkus Armbruster# @ChardevUdp:
297dbeee392SMarkus Armbruster#
298dbeee392SMarkus Armbruster# Configuration info for datagram socket chardevs.
299dbeee392SMarkus Armbruster#
300dbeee392SMarkus Armbruster# @remote: remote address
301a937b6aaSMarkus Armbruster#
302dbeee392SMarkus Armbruster# @local: local address
303dbeee392SMarkus Armbruster#
304dbeee392SMarkus Armbruster# Since: 1.5
305dbeee392SMarkus Armbruster##
306b0ddeba2SMarc-André Lureau{ 'struct': 'ChardevUdp',
307b0ddeba2SMarc-André Lureau  'data': { 'remote': 'SocketAddressLegacy',
308dbeee392SMarkus Armbruster            '*local': 'SocketAddressLegacy' },
309dbeee392SMarkus Armbruster  'base': 'ChardevCommon' }
310dbeee392SMarkus Armbruster
311dbeee392SMarkus Armbruster##
312dbeee392SMarkus Armbruster# @ChardevMux:
313dbeee392SMarkus Armbruster#
314dbeee392SMarkus Armbruster# Configuration info for mux chardevs.
315dbeee392SMarkus Armbruster#
316dbeee392SMarkus Armbruster# @chardev: name of the base chardev.
317dbeee392SMarkus Armbruster#
318dbeee392SMarkus Armbruster# Since: 1.5
319dbeee392SMarkus Armbruster##
320b0ddeba2SMarc-André Lureau{ 'struct': 'ChardevMux',
321b0ddeba2SMarc-André Lureau  'data': { 'chardev': 'str' },
322dbeee392SMarkus Armbruster  'base': 'ChardevCommon' }
323dbeee392SMarkus Armbruster
324dbeee392SMarkus Armbruster##
325dbeee392SMarkus Armbruster# @ChardevStdio:
326dbeee392SMarkus Armbruster#
327dbeee392SMarkus Armbruster# Configuration info for stdio chardevs.
328dbeee392SMarkus Armbruster#
329a937b6aaSMarkus Armbruster# @signal: Allow signals (such as SIGINT triggered by ^C) be delivered
330a937b6aaSMarkus Armbruster#     to qemu.  Default: true.
331dbeee392SMarkus Armbruster#
332dbeee392SMarkus Armbruster# Since: 1.5
333dbeee392SMarkus Armbruster##
334b0ddeba2SMarc-André Lureau{ 'struct': 'ChardevStdio',
335b0ddeba2SMarc-André Lureau  'data': { '*signal': 'bool' },
336dbeee392SMarkus Armbruster  'base': 'ChardevCommon' }
337dbeee392SMarkus Armbruster
338dbeee392SMarkus Armbruster##
339dbeee392SMarkus Armbruster# @ChardevSpiceChannel:
340dbeee392SMarkus Armbruster#
341dbeee392SMarkus Armbruster# Configuration info for spice vm channel chardevs.
342dbeee392SMarkus Armbruster#
343dbeee392SMarkus Armbruster# @type: kind of channel (for example vdagent).
344dbeee392SMarkus Armbruster#
345dbeee392SMarkus Armbruster# Since: 1.5
346dbeee392SMarkus Armbruster##
347b0ddeba2SMarc-André Lureau{ 'struct': 'ChardevSpiceChannel',
348b0ddeba2SMarc-André Lureau  'data': { 'type': 'str' },
349fd9dda3bSMarc-André Lureau  'base': 'ChardevCommon',
3508a9f1e1dSMarc-André Lureau  'if': 'CONFIG_SPICE' }
351dbeee392SMarkus Armbruster
352dbeee392SMarkus Armbruster##
353dbeee392SMarkus Armbruster# @ChardevSpicePort:
354dbeee392SMarkus Armbruster#
355dbeee392SMarkus Armbruster# Configuration info for spice port chardevs.
356dbeee392SMarkus Armbruster#
357dbeee392SMarkus Armbruster# @fqdn: name of the channel (see docs/spice-port-fqdn.txt)
358dbeee392SMarkus Armbruster#
359dbeee392SMarkus Armbruster# Since: 1.5
360dbeee392SMarkus Armbruster##
361b0ddeba2SMarc-André Lureau{ 'struct': 'ChardevSpicePort',
362b0ddeba2SMarc-André Lureau  'data': { 'fqdn': 'str' },
363fd9dda3bSMarc-André Lureau  'base': 'ChardevCommon',
3648a9f1e1dSMarc-André Lureau  'if': 'CONFIG_SPICE' }
365dbeee392SMarkus Armbruster
366dbeee392SMarkus Armbruster##
3673e301c8dSMarc-André Lureau# @ChardevDBus:
3683e301c8dSMarc-André Lureau#
3693e301c8dSMarc-André Lureau# Configuration info for DBus chardevs.
3703e301c8dSMarc-André Lureau#
3713e301c8dSMarc-André Lureau# @name: name of the channel (following docs/spice-port-fqdn.txt)
3723e301c8dSMarc-André Lureau#
3733e301c8dSMarc-André Lureau# Since: 7.0
3743e301c8dSMarc-André Lureau##
3753e301c8dSMarc-André Lureau{ 'struct': 'ChardevDBus',
3763e301c8dSMarc-André Lureau  'data': { 'name': 'str' },
3773e301c8dSMarc-André Lureau  'base': 'ChardevCommon',
3783e301c8dSMarc-André Lureau  'if': 'CONFIG_DBUS_DISPLAY' }
3793e301c8dSMarc-André Lureau
3803e301c8dSMarc-André Lureau##
381dbeee392SMarkus Armbruster# @ChardevVC:
382dbeee392SMarkus Armbruster#
383dbeee392SMarkus Armbruster# Configuration info for virtual console chardevs.
384dbeee392SMarkus Armbruster#
385dbeee392SMarkus Armbruster# @width: console width, in pixels
386a937b6aaSMarkus Armbruster#
387dbeee392SMarkus Armbruster# @height: console height, in pixels
388a937b6aaSMarkus Armbruster#
389dbeee392SMarkus Armbruster# @cols: console width, in chars
390a937b6aaSMarkus Armbruster#
391dbeee392SMarkus Armbruster# @rows: console height, in chars
392dbeee392SMarkus Armbruster#
393*32aa1f8dSMarc-André Lureau# Note: the options are only effective when the VNC or SDL graphical
394*32aa1f8dSMarc-André Lureau# display backend is active. They are ignored with the GTK, Spice, VNC
395*32aa1f8dSMarc-André Lureau# and D-Bus display backends.
396*32aa1f8dSMarc-André Lureau#
397dbeee392SMarkus Armbruster# Since: 1.5
398dbeee392SMarkus Armbruster##
399b0ddeba2SMarc-André Lureau{ 'struct': 'ChardevVC',
400b0ddeba2SMarc-André Lureau  'data': { '*width': 'int',
401dbeee392SMarkus Armbruster            '*height': 'int',
402dbeee392SMarkus Armbruster            '*cols': 'int',
403dbeee392SMarkus Armbruster            '*rows': 'int' },
404dbeee392SMarkus Armbruster  'base': 'ChardevCommon' }
405dbeee392SMarkus Armbruster
406dbeee392SMarkus Armbruster##
407dbeee392SMarkus Armbruster# @ChardevRingbuf:
408dbeee392SMarkus Armbruster#
409dbeee392SMarkus Armbruster# Configuration info for ring buffer chardevs.
410dbeee392SMarkus Armbruster#
411dbeee392SMarkus Armbruster# @size: ring buffer size, must be power of two, default is 65536
412dbeee392SMarkus Armbruster#
413dbeee392SMarkus Armbruster# Since: 1.5
414dbeee392SMarkus Armbruster##
415b0ddeba2SMarc-André Lureau{ 'struct': 'ChardevRingbuf',
416b0ddeba2SMarc-André Lureau  'data': { '*size': 'int' },
417dbeee392SMarkus Armbruster  'base': 'ChardevCommon' }
418dbeee392SMarkus Armbruster
419dbeee392SMarkus Armbruster##
420de74a22cSGerd Hoffmann# @ChardevQemuVDAgent:
421de74a22cSGerd Hoffmann#
422de74a22cSGerd Hoffmann# Configuration info for qemu vdagent implementation.
423de74a22cSGerd Hoffmann#
42456081919SGerd Hoffmann# @mouse: enable/disable mouse, default is enabled.
425a937b6aaSMarkus Armbruster#
426f0349f4dSGerd Hoffmann# @clipboard: enable/disable clipboard, default is disabled.
42756081919SGerd Hoffmann#
428de74a22cSGerd Hoffmann# Since: 6.1
429de74a22cSGerd Hoffmann##
430de74a22cSGerd Hoffmann{ 'struct': 'ChardevQemuVDAgent',
431f0349f4dSGerd Hoffmann  'data': { '*mouse': 'bool',
432f0349f4dSGerd Hoffmann            '*clipboard': 'bool' },
433de74a22cSGerd Hoffmann  'base': 'ChardevCommon',
4348a9f1e1dSMarc-André Lureau  'if': 'CONFIG_SPICE_PROTOCOL' }
435de74a22cSGerd Hoffmann
436de74a22cSGerd Hoffmann##
4373218c0e9SMarkus Armbruster# @ChardevBackendKind:
4383218c0e9SMarkus Armbruster#
4393218c0e9SMarkus Armbruster# @pipe: Since 1.5
440a937b6aaSMarkus Armbruster#
4413218c0e9SMarkus Armbruster# @udp: Since 1.5
442a937b6aaSMarkus Armbruster#
4433218c0e9SMarkus Armbruster# @mux: Since 1.5
444a937b6aaSMarkus Armbruster#
4453218c0e9SMarkus Armbruster# @msmouse: Since 1.5
446a937b6aaSMarkus Armbruster#
4473218c0e9SMarkus Armbruster# @wctablet: Since 2.9
448a937b6aaSMarkus Armbruster#
4493218c0e9SMarkus Armbruster# @braille: Since 1.5
450a937b6aaSMarkus Armbruster#
4513218c0e9SMarkus Armbruster# @testdev: Since 2.2
452a937b6aaSMarkus Armbruster#
4533218c0e9SMarkus Armbruster# @stdio: Since 1.5
454a937b6aaSMarkus Armbruster#
4553218c0e9SMarkus Armbruster# @console: Since 1.5
456a937b6aaSMarkus Armbruster#
4573218c0e9SMarkus Armbruster# @spicevmc: Since 1.5
458a937b6aaSMarkus Armbruster#
4593218c0e9SMarkus Armbruster# @spiceport: Since 1.5
460a937b6aaSMarkus Armbruster#
4613218c0e9SMarkus Armbruster# @qemu-vdagent: Since 6.1
462a937b6aaSMarkus Armbruster#
4633e301c8dSMarc-André Lureau# @dbus: Since 7.0
464a937b6aaSMarkus Armbruster#
4653218c0e9SMarkus Armbruster# @vc: v1.5
466a937b6aaSMarkus Armbruster#
4673218c0e9SMarkus Armbruster# @ringbuf: Since 1.6
468a937b6aaSMarkus Armbruster#
4693218c0e9SMarkus Armbruster# @memory: Since 1.5
4703218c0e9SMarkus Armbruster#
4713218c0e9SMarkus Armbruster# Since: 1.4
4723218c0e9SMarkus Armbruster##
4733218c0e9SMarkus Armbruster{ 'enum': 'ChardevBackendKind',
4743218c0e9SMarkus Armbruster  'data': [ 'file',
4753218c0e9SMarkus Armbruster            'serial',
4763218c0e9SMarkus Armbruster            'parallel',
4773218c0e9SMarkus Armbruster            'pipe',
4783218c0e9SMarkus Armbruster            'socket',
4793218c0e9SMarkus Armbruster            'udp',
4803218c0e9SMarkus Armbruster            'pty',
4813218c0e9SMarkus Armbruster            'null',
4823218c0e9SMarkus Armbruster            'mux',
4833218c0e9SMarkus Armbruster            'msmouse',
4843218c0e9SMarkus Armbruster            'wctablet',
4853218c0e9SMarkus Armbruster            'braille',
4863218c0e9SMarkus Armbruster            'testdev',
4873218c0e9SMarkus Armbruster            'stdio',
4883218c0e9SMarkus Armbruster            'console',
4893218c0e9SMarkus Armbruster            { 'name': 'spicevmc', 'if': 'CONFIG_SPICE' },
4903218c0e9SMarkus Armbruster            { 'name': 'spiceport', 'if': 'CONFIG_SPICE' },
4913218c0e9SMarkus Armbruster            { 'name': 'qemu-vdagent', 'if': 'CONFIG_SPICE_PROTOCOL' },
4923e301c8dSMarc-André Lureau            { 'name': 'dbus', 'if': 'CONFIG_DBUS_DISPLAY' },
4933218c0e9SMarkus Armbruster            'vc',
4943218c0e9SMarkus Armbruster            'ringbuf',
4953218c0e9SMarkus Armbruster            # next one is just for compatibility
4963218c0e9SMarkus Armbruster            'memory' ] }
4973218c0e9SMarkus Armbruster
4983218c0e9SMarkus Armbruster##
4993218c0e9SMarkus Armbruster# @ChardevFileWrapper:
5003218c0e9SMarkus Armbruster#
5013218c0e9SMarkus Armbruster# Since: 1.4
5023218c0e9SMarkus Armbruster##
5033218c0e9SMarkus Armbruster{ 'struct': 'ChardevFileWrapper',
5043218c0e9SMarkus Armbruster  'data': { 'data': 'ChardevFile' } }
5053218c0e9SMarkus Armbruster
5063218c0e9SMarkus Armbruster##
5073218c0e9SMarkus Armbruster# @ChardevHostdevWrapper:
5083218c0e9SMarkus Armbruster#
5093218c0e9SMarkus Armbruster# Since: 1.4
5103218c0e9SMarkus Armbruster##
5113218c0e9SMarkus Armbruster{ 'struct': 'ChardevHostdevWrapper',
5123218c0e9SMarkus Armbruster  'data': { 'data': 'ChardevHostdev' } }
5133218c0e9SMarkus Armbruster
5143218c0e9SMarkus Armbruster##
5153218c0e9SMarkus Armbruster# @ChardevSocketWrapper:
5163218c0e9SMarkus Armbruster#
5173218c0e9SMarkus Armbruster# Since: 1.4
5183218c0e9SMarkus Armbruster##
5193218c0e9SMarkus Armbruster{ 'struct': 'ChardevSocketWrapper',
5203218c0e9SMarkus Armbruster  'data': { 'data': 'ChardevSocket' } }
5213218c0e9SMarkus Armbruster
5223218c0e9SMarkus Armbruster##
5233218c0e9SMarkus Armbruster# @ChardevUdpWrapper:
5243218c0e9SMarkus Armbruster#
5253218c0e9SMarkus Armbruster# Since: 1.5
5263218c0e9SMarkus Armbruster##
5273218c0e9SMarkus Armbruster{ 'struct': 'ChardevUdpWrapper',
5283218c0e9SMarkus Armbruster  'data': { 'data': 'ChardevUdp' } }
5293218c0e9SMarkus Armbruster
5303218c0e9SMarkus Armbruster##
5313218c0e9SMarkus Armbruster# @ChardevCommonWrapper:
5323218c0e9SMarkus Armbruster#
5333218c0e9SMarkus Armbruster# Since: 2.6
5343218c0e9SMarkus Armbruster##
5353218c0e9SMarkus Armbruster{ 'struct': 'ChardevCommonWrapper',
5363218c0e9SMarkus Armbruster  'data': { 'data': 'ChardevCommon' } }
5373218c0e9SMarkus Armbruster
5383218c0e9SMarkus Armbruster##
5393218c0e9SMarkus Armbruster# @ChardevMuxWrapper:
5403218c0e9SMarkus Armbruster#
5413218c0e9SMarkus Armbruster# Since: 1.5
5423218c0e9SMarkus Armbruster##
5433218c0e9SMarkus Armbruster{ 'struct': 'ChardevMuxWrapper',
5443218c0e9SMarkus Armbruster  'data': { 'data': 'ChardevMux' } }
5453218c0e9SMarkus Armbruster
5463218c0e9SMarkus Armbruster##
5473218c0e9SMarkus Armbruster# @ChardevStdioWrapper:
5483218c0e9SMarkus Armbruster#
5493218c0e9SMarkus Armbruster# Since: 1.5
5503218c0e9SMarkus Armbruster##
5513218c0e9SMarkus Armbruster{ 'struct': 'ChardevStdioWrapper',
5523218c0e9SMarkus Armbruster  'data': { 'data': 'ChardevStdio' } }
5533218c0e9SMarkus Armbruster
5543218c0e9SMarkus Armbruster##
5553218c0e9SMarkus Armbruster# @ChardevSpiceChannelWrapper:
5563218c0e9SMarkus Armbruster#
5573218c0e9SMarkus Armbruster# Since: 1.5
5583218c0e9SMarkus Armbruster##
5593218c0e9SMarkus Armbruster{ 'struct': 'ChardevSpiceChannelWrapper',
5603218c0e9SMarkus Armbruster  'data': { 'data': 'ChardevSpiceChannel' },
5613218c0e9SMarkus Armbruster  'if': 'CONFIG_SPICE' }
5623218c0e9SMarkus Armbruster
5633218c0e9SMarkus Armbruster##
5643218c0e9SMarkus Armbruster# @ChardevSpicePortWrapper:
5653218c0e9SMarkus Armbruster#
5663218c0e9SMarkus Armbruster# Since: 1.5
5673218c0e9SMarkus Armbruster##
5683218c0e9SMarkus Armbruster{ 'struct': 'ChardevSpicePortWrapper',
5693218c0e9SMarkus Armbruster  'data': { 'data': 'ChardevSpicePort' },
5703218c0e9SMarkus Armbruster  'if': 'CONFIG_SPICE' }
5713218c0e9SMarkus Armbruster
5723218c0e9SMarkus Armbruster##
5733218c0e9SMarkus Armbruster# @ChardevQemuVDAgentWrapper:
5743218c0e9SMarkus Armbruster#
5753218c0e9SMarkus Armbruster# Since: 6.1
5763218c0e9SMarkus Armbruster##
5773218c0e9SMarkus Armbruster{ 'struct': 'ChardevQemuVDAgentWrapper',
5783218c0e9SMarkus Armbruster  'data': { 'data': 'ChardevQemuVDAgent' },
5793218c0e9SMarkus Armbruster  'if': 'CONFIG_SPICE_PROTOCOL' }
5803218c0e9SMarkus Armbruster
5813218c0e9SMarkus Armbruster##
5823e301c8dSMarc-André Lureau# @ChardevDBusWrapper:
5833e301c8dSMarc-André Lureau#
5843e301c8dSMarc-André Lureau# Since: 7.0
5853e301c8dSMarc-André Lureau##
5863e301c8dSMarc-André Lureau{ 'struct': 'ChardevDBusWrapper',
5873e301c8dSMarc-André Lureau  'data': { 'data': 'ChardevDBus' },
5883e301c8dSMarc-André Lureau  'if': 'CONFIG_DBUS_DISPLAY' }
5893e301c8dSMarc-André Lureau
5903e301c8dSMarc-André Lureau##
5913218c0e9SMarkus Armbruster# @ChardevVCWrapper:
5923218c0e9SMarkus Armbruster#
5933218c0e9SMarkus Armbruster# Since: 1.5
5943218c0e9SMarkus Armbruster##
5953218c0e9SMarkus Armbruster{ 'struct': 'ChardevVCWrapper',
5963218c0e9SMarkus Armbruster  'data': { 'data': 'ChardevVC' } }
5973218c0e9SMarkus Armbruster
5983218c0e9SMarkus Armbruster##
5993218c0e9SMarkus Armbruster# @ChardevRingbufWrapper:
6003218c0e9SMarkus Armbruster#
6013218c0e9SMarkus Armbruster# Since: 1.5
6023218c0e9SMarkus Armbruster##
6033218c0e9SMarkus Armbruster{ 'struct': 'ChardevRingbufWrapper',
6043218c0e9SMarkus Armbruster  'data': { 'data': 'ChardevRingbuf' } }
6053218c0e9SMarkus Armbruster
6063218c0e9SMarkus Armbruster##
607dbeee392SMarkus Armbruster# @ChardevBackend:
608dbeee392SMarkus Armbruster#
609dbeee392SMarkus Armbruster# Configuration info for the new chardev backend.
610dbeee392SMarkus Armbruster#
6113218c0e9SMarkus Armbruster# Since: 1.4
612dbeee392SMarkus Armbruster##
613b0ddeba2SMarc-André Lureau{ 'union': 'ChardevBackend',
6143218c0e9SMarkus Armbruster  'base': { 'type': 'ChardevBackendKind' },
6153218c0e9SMarkus Armbruster  'discriminator': 'type',
6163218c0e9SMarkus Armbruster  'data': { 'file': 'ChardevFileWrapper',
6173218c0e9SMarkus Armbruster            'serial': 'ChardevHostdevWrapper',
6183218c0e9SMarkus Armbruster            'parallel': 'ChardevHostdevWrapper',
6193218c0e9SMarkus Armbruster            'pipe': 'ChardevHostdevWrapper',
6203218c0e9SMarkus Armbruster            'socket': 'ChardevSocketWrapper',
6213218c0e9SMarkus Armbruster            'udp': 'ChardevUdpWrapper',
6223218c0e9SMarkus Armbruster            'pty': 'ChardevCommonWrapper',
6233218c0e9SMarkus Armbruster            'null': 'ChardevCommonWrapper',
6243218c0e9SMarkus Armbruster            'mux': 'ChardevMuxWrapper',
6253218c0e9SMarkus Armbruster            'msmouse': 'ChardevCommonWrapper',
6263218c0e9SMarkus Armbruster            'wctablet': 'ChardevCommonWrapper',
6273218c0e9SMarkus Armbruster            'braille': 'ChardevCommonWrapper',
6283218c0e9SMarkus Armbruster            'testdev': 'ChardevCommonWrapper',
6293218c0e9SMarkus Armbruster            'stdio': 'ChardevStdioWrapper',
6303218c0e9SMarkus Armbruster            'console': 'ChardevCommonWrapper',
6313218c0e9SMarkus Armbruster            'spicevmc': { 'type': 'ChardevSpiceChannelWrapper',
6328a9f1e1dSMarc-André Lureau                          'if': 'CONFIG_SPICE' },
6333218c0e9SMarkus Armbruster            'spiceport': { 'type': 'ChardevSpicePortWrapper',
6348a9f1e1dSMarc-André Lureau                           'if': 'CONFIG_SPICE' },
6353218c0e9SMarkus Armbruster            'qemu-vdagent': { 'type': 'ChardevQemuVDAgentWrapper',
6368a9f1e1dSMarc-André Lureau                              'if': 'CONFIG_SPICE_PROTOCOL' },
6373e301c8dSMarc-André Lureau            'dbus': { 'type': 'ChardevDBusWrapper',
6383e301c8dSMarc-André Lureau                      'if': 'CONFIG_DBUS_DISPLAY' },
6393218c0e9SMarkus Armbruster            'vc': 'ChardevVCWrapper',
6403218c0e9SMarkus Armbruster            'ringbuf': 'ChardevRingbufWrapper',
641dbeee392SMarkus Armbruster            # next one is just for compatibility
6423218c0e9SMarkus Armbruster            'memory': 'ChardevRingbufWrapper' } }
643dbeee392SMarkus Armbruster
644dbeee392SMarkus Armbruster##
645dbeee392SMarkus Armbruster# @ChardevReturn:
646dbeee392SMarkus Armbruster#
647dbeee392SMarkus Armbruster# Return info about the chardev backend just created.
648dbeee392SMarkus Armbruster#
649a937b6aaSMarkus Armbruster# @pty: name of the slave pseudoterminal device, present if and only
650a937b6aaSMarkus Armbruster#     if a chardev of type 'pty' was created
651dbeee392SMarkus Armbruster#
652dbeee392SMarkus Armbruster# Since: 1.4
653dbeee392SMarkus Armbruster##
654b0ddeba2SMarc-André Lureau{ 'struct' : 'ChardevReturn',
655b0ddeba2SMarc-André Lureau  'data': { '*pty': 'str' } }
656dbeee392SMarkus Armbruster
657dbeee392SMarkus Armbruster##
658dbeee392SMarkus Armbruster# @chardev-add:
659dbeee392SMarkus Armbruster#
660dbeee392SMarkus Armbruster# Add a character device backend
661dbeee392SMarkus Armbruster#
662dbeee392SMarkus Armbruster# @id: the chardev's ID, must be unique
663a937b6aaSMarkus Armbruster#
664dbeee392SMarkus Armbruster# @backend: backend type and parameters
665dbeee392SMarkus Armbruster#
666dbeee392SMarkus Armbruster# Returns: ChardevReturn.
667dbeee392SMarkus Armbruster#
668dbeee392SMarkus Armbruster# Since: 1.4
669dbeee392SMarkus Armbruster#
67037fa48a4SMarkus Armbruster# Examples:
671dbeee392SMarkus Armbruster#
672dbeee392SMarkus Armbruster# -> { "execute" : "chardev-add",
673dbeee392SMarkus Armbruster#      "arguments" : { "id" : "foo",
674dbeee392SMarkus Armbruster#                      "backend" : { "type" : "null", "data" : {} } } }
675dbeee392SMarkus Armbruster# <- { "return": {} }
676dbeee392SMarkus Armbruster#
677dbeee392SMarkus Armbruster# -> { "execute" : "chardev-add",
678dbeee392SMarkus Armbruster#      "arguments" : { "id" : "bar",
679dbeee392SMarkus Armbruster#                      "backend" : { "type" : "file",
680dbeee392SMarkus Armbruster#                                    "data" : { "out" : "/tmp/bar.log" } } } }
681dbeee392SMarkus Armbruster# <- { "return": {} }
682dbeee392SMarkus Armbruster#
683dbeee392SMarkus Armbruster# -> { "execute" : "chardev-add",
684dbeee392SMarkus Armbruster#      "arguments" : { "id" : "baz",
685dbeee392SMarkus Armbruster#                      "backend" : { "type" : "pty", "data" : {} } } }
686dbeee392SMarkus Armbruster# <- { "return": { "pty" : "/dev/pty/42" } }
687dbeee392SMarkus Armbruster##
688b0ddeba2SMarc-André Lureau{ 'command': 'chardev-add',
689b0ddeba2SMarc-André Lureau  'data': { 'id': 'str',
690dbeee392SMarkus Armbruster            'backend': 'ChardevBackend' },
691dbeee392SMarkus Armbruster  'returns': 'ChardevReturn' }
692dbeee392SMarkus Armbruster
693dbeee392SMarkus Armbruster##
694dbeee392SMarkus Armbruster# @chardev-change:
695dbeee392SMarkus Armbruster#
696dbeee392SMarkus Armbruster# Change a character device backend
697dbeee392SMarkus Armbruster#
698dbeee392SMarkus Armbruster# @id: the chardev's ID, must exist
699a937b6aaSMarkus Armbruster#
700dbeee392SMarkus Armbruster# @backend: new backend type and parameters
701dbeee392SMarkus Armbruster#
702dbeee392SMarkus Armbruster# Returns: ChardevReturn.
703dbeee392SMarkus Armbruster#
704dbeee392SMarkus Armbruster# Since: 2.10
705dbeee392SMarkus Armbruster#
70637fa48a4SMarkus Armbruster# Examples:
707dbeee392SMarkus Armbruster#
708dbeee392SMarkus Armbruster# -> { "execute" : "chardev-change",
709dbeee392SMarkus Armbruster#      "arguments" : { "id" : "baz",
710dbeee392SMarkus Armbruster#                      "backend" : { "type" : "pty", "data" : {} } } }
711dbeee392SMarkus Armbruster# <- { "return": { "pty" : "/dev/pty/42" } }
712dbeee392SMarkus Armbruster#
713dbeee392SMarkus Armbruster# -> {"execute" : "chardev-change",
714dbeee392SMarkus Armbruster#     "arguments" : {
715dbeee392SMarkus Armbruster#         "id" : "charchannel2",
716dbeee392SMarkus Armbruster#         "backend" : {
717dbeee392SMarkus Armbruster#             "type" : "socket",
718dbeee392SMarkus Armbruster#             "data" : {
719dbeee392SMarkus Armbruster#                 "addr" : {
720dbeee392SMarkus Armbruster#                     "type" : "unix" ,
721dbeee392SMarkus Armbruster#                     "data" : {
722dbeee392SMarkus Armbruster#                         "path" : "/tmp/charchannel2.socket"
723dbeee392SMarkus Armbruster#                     }
724dbeee392SMarkus Armbruster#                  },
725dbeee392SMarkus Armbruster#                  "server" : true,
726dbeee392SMarkus Armbruster#                  "wait" : false }}}}
727dbeee392SMarkus Armbruster# <- {"return": {}}
728dbeee392SMarkus Armbruster##
729b0ddeba2SMarc-André Lureau{ 'command': 'chardev-change',
730b0ddeba2SMarc-André Lureau  'data': { 'id': 'str',
731dbeee392SMarkus Armbruster            'backend': 'ChardevBackend' },
732dbeee392SMarkus Armbruster  'returns': 'ChardevReturn' }
733dbeee392SMarkus Armbruster
734dbeee392SMarkus Armbruster##
735dbeee392SMarkus Armbruster# @chardev-remove:
736dbeee392SMarkus Armbruster#
737dbeee392SMarkus Armbruster# Remove a character device backend
738dbeee392SMarkus Armbruster#
739dbeee392SMarkus Armbruster# @id: the chardev's ID, must exist and not be in use
740dbeee392SMarkus Armbruster#
741dbeee392SMarkus Armbruster# Returns: Nothing on success
742dbeee392SMarkus Armbruster#
743dbeee392SMarkus Armbruster# Since: 1.4
744dbeee392SMarkus Armbruster#
745dbeee392SMarkus Armbruster# Example:
746dbeee392SMarkus Armbruster#
747dbeee392SMarkus Armbruster# -> { "execute": "chardev-remove", "arguments": { "id" : "foo" } }
748dbeee392SMarkus Armbruster# <- { "return": {} }
749dbeee392SMarkus Armbruster##
750b0ddeba2SMarc-André Lureau{ 'command': 'chardev-remove',
751b0ddeba2SMarc-André Lureau  'data': { 'id': 'str' } }
752dbeee392SMarkus Armbruster
753dbeee392SMarkus Armbruster##
754dbeee392SMarkus Armbruster# @chardev-send-break:
755dbeee392SMarkus Armbruster#
756dbeee392SMarkus Armbruster# Send a break to a character device
757dbeee392SMarkus Armbruster#
758dbeee392SMarkus Armbruster# @id: the chardev's ID, must exist
759dbeee392SMarkus Armbruster#
760dbeee392SMarkus Armbruster# Returns: Nothing on success
761dbeee392SMarkus Armbruster#
762dbeee392SMarkus Armbruster# Since: 2.10
763dbeee392SMarkus Armbruster#
764dbeee392SMarkus Armbruster# Example:
765dbeee392SMarkus Armbruster#
766dbeee392SMarkus Armbruster# -> { "execute": "chardev-send-break", "arguments": { "id" : "foo" } }
767dbeee392SMarkus Armbruster# <- { "return": {} }
768dbeee392SMarkus Armbruster##
769b0ddeba2SMarc-André Lureau{ 'command': 'chardev-send-break',
770b0ddeba2SMarc-André Lureau  'data': { 'id': 'str' } }
771dbeee392SMarkus Armbruster
772dbeee392SMarkus Armbruster##
773dbeee392SMarkus Armbruster# @VSERPORT_CHANGE:
774dbeee392SMarkus Armbruster#
775dbeee392SMarkus Armbruster# Emitted when the guest opens or closes a virtio-serial port.
776dbeee392SMarkus Armbruster#
777dbeee392SMarkus Armbruster# @id: device identifier of the virtio-serial port
778dbeee392SMarkus Armbruster#
779dbeee392SMarkus Armbruster# @open: true if the guest has opened the virtio-serial port
780dbeee392SMarkus Armbruster#
781382bd1cbSMarkus Armbruster# Note: This event is rate-limited.
782382bd1cbSMarkus Armbruster#
783dbeee392SMarkus Armbruster# Since: 2.1
784dbeee392SMarkus Armbruster#
785dbeee392SMarkus Armbruster# Example:
786dbeee392SMarkus Armbruster#
787dbeee392SMarkus Armbruster# <- { "event": "VSERPORT_CHANGE",
788dbeee392SMarkus Armbruster#      "data": { "id": "channel0", "open": true },
789dbeee392SMarkus Armbruster#      "timestamp": { "seconds": 1401385907, "microseconds": 422329 } }
790dbeee392SMarkus Armbruster##
791dbeee392SMarkus Armbruster{ 'event': 'VSERPORT_CHANGE',
792b0ddeba2SMarc-André Lureau  'data': { 'id': 'str',
793b0ddeba2SMarc-André Lureau            'open': 'bool' } }
794