xref: /qemu/qapi/char.json (revision 513823e7521a09ed7ad1e32e6454bac3b2cbf52d)
1# -*- Mode: Python -*-
2# vim: filetype=python
3#
4
5##
6# = Character devices
7##
8
9{ 'include': 'sockets.json' }
10
11##
12# @ChardevInfo:
13#
14# Information about a character device.
15#
16# @label: the label of the character device
17#
18# @filename: the filename of the character device
19#
20# @frontend-open: shows whether the frontend device attached to this
21#     backend (e.g. with the chardev=... option) is in open or closed
22#     state (since 2.1)
23#
24# .. note:: @filename is encoded using the QEMU command line character
25#    device encoding.  See the QEMU man page for details.
26#
27# Since: 0.14
28##
29{ 'struct': 'ChardevInfo',
30  'data': { 'label': 'str',
31            'filename': 'str',
32            'frontend-open': 'bool' } }
33
34##
35# @query-chardev:
36#
37# Returns information about current character devices.
38#
39# Returns: a list of @ChardevInfo
40#
41# Since: 0.14
42#
43# .. qmp-example::
44#
45#     -> { "execute": "query-chardev" }
46#     <- {
47#           "return": [
48#              {
49#                 "label": "charchannel0",
50#                 "filename": "unix:/var/lib/libvirt/qemu/seabios.rhel6.agent,server=on",
51#                 "frontend-open": false
52#              },
53#              {
54#                 "label": "charmonitor",
55#                 "filename": "unix:/var/lib/libvirt/qemu/seabios.rhel6.monitor,server=on",
56#                 "frontend-open": true
57#              },
58#              {
59#                 "label": "charserial0",
60#                 "filename": "pty:/dev/pts/2",
61#                 "frontend-open": true
62#              }
63#           ]
64#        }
65##
66{ 'command': 'query-chardev', 'returns': ['ChardevInfo'],
67  'allow-preconfig': true }
68
69##
70# @ChardevBackendInfo:
71#
72# Information about a character device backend
73#
74# @name: The backend name
75#
76# Since: 2.0
77##
78{ 'struct': 'ChardevBackendInfo', 'data': {'name': 'str'} }
79
80##
81# @query-chardev-backends:
82#
83# Returns information about character device backends.
84#
85# Returns: a list of @ChardevBackendInfo
86#
87# Since: 2.0
88#
89# .. qmp-example::
90#
91#     -> { "execute": "query-chardev-backends" }
92#     <- {
93#           "return":[
94#              {
95#                 "name":"udp"
96#              },
97#              {
98#                 "name":"tcp"
99#              },
100#              {
101#                 "name":"unix"
102#              },
103#              {
104#                 "name":"spiceport"
105#              }
106#           ]
107#        }
108##
109{ 'command': 'query-chardev-backends', 'returns': ['ChardevBackendInfo'] }
110
111##
112# @DataFormat:
113#
114# An enumeration of data format.
115#
116# @utf8: Data is a UTF-8 string (RFC 3629)
117#
118# @base64: Data is Base64 encoded binary (RFC 3548)
119#
120# Since: 1.4
121##
122{ 'enum': 'DataFormat',
123  'data': [ 'utf8', 'base64' ] }
124
125##
126# @ringbuf-write:
127#
128# Write to a ring buffer character device.
129#
130# @device: the ring buffer character device name
131#
132# @data: data to write
133#
134# @format: data encoding (default 'utf8').
135#
136#     - base64: data must be base64 encoded text.  Its binary decoding
137#       gets written.
138#     - utf8: data's UTF-8 encoding is written
139#     - data itself is always Unicode regardless of format, like any
140#       other string.
141#
142# Since: 1.4
143#
144# .. qmp-example::
145#
146#     -> { "execute": "ringbuf-write",
147#          "arguments": { "device": "foo",
148#                         "data": "abcdefgh",
149#                         "format": "utf8" } }
150#     <- { "return": {} }
151##
152{ 'command': 'ringbuf-write',
153  'data': { 'device': 'str',
154            'data': 'str',
155           '*format': 'DataFormat'} }
156
157##
158# @ringbuf-read:
159#
160# Read from a ring buffer character device.
161#
162# @device: the ring buffer character device name
163#
164# @size: how many bytes to read at most
165#
166# @format: data encoding (default 'utf8').
167#
168#     - base64: the data read is returned in base64 encoding.
169#     - utf8: the data read is interpreted as UTF-8.
170#       Bug: can screw up when the buffer contains invalid UTF-8
171#       sequences, NUL characters, after the ring buffer lost data,
172#       and when reading stops because the size limit is reached.
173#     - The return value is always Unicode regardless of format, like
174#       any other string.
175#
176# Returns: data read from the device
177#
178# Since: 1.4
179#
180# .. qmp-example::
181#
182#     -> { "execute": "ringbuf-read",
183#          "arguments": { "device": "foo",
184#                         "size": 1000,
185#                         "format": "utf8" } }
186#     <- { "return": "abcdefgh" }
187##
188{ 'command': 'ringbuf-read',
189  'data': {'device': 'str', 'size': 'int', '*format': 'DataFormat'},
190  'returns': 'str' }
191
192##
193# @ChardevCommon:
194#
195# Configuration shared across all chardev backends
196#
197# @logfile: The name of a logfile to save output
198#
199# @logappend: true to append instead of truncate (default to false to
200#     truncate)
201#
202# Since: 2.6
203##
204{ 'struct': 'ChardevCommon',
205  'data': { '*logfile': 'str',
206            '*logappend': 'bool' } }
207
208##
209# @ChardevFile:
210#
211# Configuration info for file chardevs.
212#
213# @in: The name of the input file
214#
215# @out: The name of the output file
216#
217# @append: Open the file in append mode (default false to truncate)
218#     (Since 2.6)
219#
220# Since: 1.4
221##
222{ 'struct': 'ChardevFile',
223  'data': { '*in': 'str',
224            'out': 'str',
225            '*append': 'bool' },
226  'base': 'ChardevCommon' }
227
228##
229# @ChardevHostdev:
230#
231# Configuration info for device and pipe chardevs.
232#
233# @device: The name of the special file for the device, i.e.
234#     /dev/ttyS0 on Unix or COM1: on Windows
235#
236# Since: 1.4
237##
238{ 'struct': 'ChardevHostdev',
239  'data': { 'device': 'str' },
240  'base': 'ChardevCommon' }
241
242##
243# @ChardevSocket:
244#
245# Configuration info for (stream) socket chardevs.
246#
247# @addr: socket address to listen on (server=true) or connect to
248#     (server=false)
249#
250# @tls-creds: the ID of the TLS credentials object (since 2.6)
251#
252# @tls-authz: the ID of the QAuthZ authorization object against which
253#     the client's x509 distinguished name will be validated.  This
254#     object is only resolved at time of use, so can be deleted and
255#     recreated on the fly while the chardev server is active.  If
256#     missing, it will default to denying access (since 4.0)
257#
258# @server: create server socket (default: true)
259#
260# @wait: wait for incoming connection on server sockets (default:
261#     false).  Silently ignored with server: false.  This use is
262#     deprecated.
263#
264# @nodelay: set TCP_NODELAY socket option (default: false)
265#
266# @telnet: enable telnet protocol on server sockets (default: false)
267#
268# @tn3270: enable tn3270 protocol on server sockets (default: false)
269#     (Since: 2.10)
270#
271# @websocket: enable websocket protocol on server sockets
272#     (default: false) (Since: 3.1)
273#
274# @reconnect: For a client socket, if a socket is disconnected, then
275#     attempt a reconnect after the given number of seconds.  Setting
276#     this to zero disables this function.  The use of this member is
277#     deprecated, use @reconnect-ms instead. (default: 0) (Since: 2.2)
278#
279# @reconnect-ms: For a client socket, if a socket is disconnected,
280#     then attempt a reconnect after the given number of milliseconds.
281#     Setting this to zero disables this function.  This member is
282#     mutually exclusive with @reconnect.
283#     (default: 0) (Since: 9.2)
284#
285# Features:
286#
287# @deprecated: Member @reconnect is deprecated.  Use @reconnect-ms
288#     instead.
289#
290# Since: 1.4
291##
292{ 'struct': 'ChardevSocket',
293  'data': { 'addr': 'SocketAddressLegacy',
294            '*tls-creds': 'str',
295            '*tls-authz'  : 'str',
296            '*server': 'bool',
297            '*wait': 'bool',
298            '*nodelay': 'bool',
299            '*telnet': 'bool',
300            '*tn3270': 'bool',
301            '*websocket': 'bool',
302            '*reconnect': { 'type': 'int', 'features': [ 'deprecated' ] },
303            '*reconnect-ms': 'int' },
304  'base': 'ChardevCommon' }
305
306##
307# @ChardevUdp:
308#
309# Configuration info for datagram socket chardevs.
310#
311# @remote: remote address
312#
313# @local: local address
314#
315# Since: 1.5
316##
317{ 'struct': 'ChardevUdp',
318  'data': { 'remote': 'SocketAddressLegacy',
319            '*local': 'SocketAddressLegacy' },
320  'base': 'ChardevCommon' }
321
322##
323# @ChardevMux:
324#
325# Configuration info for mux chardevs.
326#
327# @chardev: name of the base chardev.
328#
329# Since: 1.5
330##
331{ 'struct': 'ChardevMux',
332  'data': { 'chardev': 'str' },
333  'base': 'ChardevCommon' }
334
335##
336# @ChardevHub:
337#
338# Configuration info for hub chardevs.
339#
340# @chardevs: List of chardev IDs, which should be added to this hub
341#
342# Since: 10.0
343##
344{ 'struct': 'ChardevHub',
345  'data': { 'chardevs': ['str'] },
346  'base': 'ChardevCommon' }
347
348##
349# @ChardevStdio:
350#
351# Configuration info for stdio chardevs.
352#
353# @signal: Allow signals (such as SIGINT triggered by ^C) be delivered
354#     to qemu.  Default: true.
355#
356# Since: 1.5
357##
358{ 'struct': 'ChardevStdio',
359  'data': { '*signal': 'bool' },
360  'base': 'ChardevCommon' }
361
362##
363# @ChardevSpiceChannel:
364#
365# Configuration info for spice vm channel chardevs.
366#
367# @type: kind of channel (for example vdagent).
368#
369# Since: 1.5
370##
371{ 'struct': 'ChardevSpiceChannel',
372  'data': { 'type': 'str' },
373  'base': 'ChardevCommon',
374  'if': 'CONFIG_SPICE' }
375
376##
377# @ChardevSpicePort:
378#
379# Configuration info for spice port chardevs.
380#
381# @fqdn: name of the channel (see docs/spice-port-fqdn.txt)
382#
383# Since: 1.5
384##
385{ 'struct': 'ChardevSpicePort',
386  'data': { 'fqdn': 'str' },
387  'base': 'ChardevCommon',
388  'if': 'CONFIG_SPICE' }
389
390##
391# @ChardevDBus:
392#
393# Configuration info for DBus chardevs.
394#
395# @name: name of the channel (following docs/spice-port-fqdn.txt)
396#
397# Since: 7.0
398##
399{ 'struct': 'ChardevDBus',
400  'data': { 'name': 'str' },
401  'base': 'ChardevCommon',
402  'if': 'CONFIG_DBUS_DISPLAY' }
403
404##
405# @ChardevVC:
406#
407# Configuration info for virtual console chardevs.
408#
409# @width: console width, in pixels
410#
411# @height: console height, in pixels
412#
413# @cols: console width, in chars
414#
415# @rows: console height, in chars
416#
417# .. note:: The options are only effective when the VNC or SDL
418#    graphical display backend is active.  They are ignored with the
419#    GTK, Spice, VNC and D-Bus display backends.
420#
421# Since: 1.5
422##
423{ 'struct': 'ChardevVC',
424  'data': { '*width': 'int',
425            '*height': 'int',
426            '*cols': 'int',
427            '*rows': 'int' },
428  'base': 'ChardevCommon' }
429
430##
431# @ChardevRingbuf:
432#
433# Configuration info for ring buffer chardevs.
434#
435# @size: ring buffer size, must be power of two, default is 65536
436#
437# Since: 1.5
438##
439{ 'struct': 'ChardevRingbuf',
440  'data': { '*size': 'int' },
441  'base': 'ChardevCommon' }
442
443##
444# @ChardevQemuVDAgent:
445#
446# Configuration info for qemu vdagent implementation.
447#
448# @mouse: enable/disable mouse, default is enabled.
449#
450# @clipboard: enable/disable clipboard, default is disabled.
451#
452# Since: 6.1
453##
454{ 'struct': 'ChardevQemuVDAgent',
455  'data': { '*mouse': 'bool',
456            '*clipboard': 'bool' },
457  'base': 'ChardevCommon',
458  'if': 'CONFIG_SPICE_PROTOCOL' }
459
460##
461# @ChardevPty:
462#
463# Configuration info for pty implementation.
464#
465# @path: optional path to create a symbolic link that points to the
466#     allocated PTY
467#
468# Since: 9.2
469##
470{ 'struct': 'ChardevPty',
471  'data': { '*path': 'str' },
472  'base': 'ChardevCommon' }
473
474##
475# @ChardevBackendKind:
476#
477# @file: regular files
478#
479# @serial: serial host device
480#
481# @parallel: parallel host device
482#
483# @pipe: pipes (since 1.5)
484#
485# @socket: stream socket
486#
487# @udp: datagram socket (since 1.5)
488#
489# @pty: pseudo-terminal
490#
491# @null: provides no input, throws away output
492#
493# @mux: (since 1.5)
494#
495# @hub: (since 10.0)
496#
497# @msmouse: emulated Microsoft serial mouse (since 1.5)
498#
499# @wctablet: emulated Wacom Penpartner serial tablet (since 2.9)
500#
501# @braille: Baum Braille device (since 1.5)
502#
503# @testdev: device for test-suite control (since 2.2)
504#
505# @stdio: standard I/O (since 1.5)
506#
507# @console: Windows console (since 1.5)
508#
509# @spicevmc: spice vm channel (since 1.5)
510#
511# @spiceport: Spice port channel (since 1.5)
512#
513# @qemu-vdagent: Spice vdagent (since 6.1)
514#
515# @dbus: D-Bus channel (since 7.0)
516#
517# @vc: virtual console (since 1.5)
518#
519# @ringbuf: memory ring buffer (since 1.6)
520#
521# @memory: synonym for @ringbuf (since 1.5)
522#
523# Features:
524#
525# @deprecated: Member @memory is deprecated.  Use @ringbuf instead.
526#
527# Since: 1.4
528##
529{ 'enum': 'ChardevBackendKind',
530  'data': [ 'file',
531            { 'name': 'serial', 'if': 'HAVE_CHARDEV_SERIAL' },
532            { 'name': 'parallel', 'if': 'HAVE_CHARDEV_PARALLEL' },
533            'pipe',
534            'socket',
535            'udp',
536            'pty',
537            'null',
538            'mux',
539            'hub',
540            'msmouse',
541            'wctablet',
542            { 'name': 'braille', 'if': 'CONFIG_BRLAPI' },
543            'testdev',
544            'stdio',
545            { 'name': 'console', 'if': 'CONFIG_WIN32' },
546            { 'name': 'spicevmc', 'if': 'CONFIG_SPICE' },
547            { 'name': 'spiceport', 'if': 'CONFIG_SPICE' },
548            { 'name': 'qemu-vdagent', 'if': 'CONFIG_SPICE_PROTOCOL' },
549            { 'name': 'dbus', 'if': 'CONFIG_DBUS_DISPLAY' },
550            'vc',
551            'ringbuf',
552            { 'name': 'memory', 'features': [ 'deprecated' ] } ] }
553
554##
555# @ChardevFileWrapper:
556#
557# @data: Configuration info for file chardevs
558#
559# Since: 1.4
560##
561{ 'struct': 'ChardevFileWrapper',
562  'data': { 'data': 'ChardevFile' } }
563
564##
565# @ChardevHostdevWrapper:
566#
567# @data: Configuration info for device and pipe chardevs
568#
569# Since: 1.4
570##
571{ 'struct': 'ChardevHostdevWrapper',
572  'data': { 'data': 'ChardevHostdev' } }
573
574##
575# @ChardevSocketWrapper:
576#
577# @data: Configuration info for (stream) socket chardevs
578#
579# Since: 1.4
580##
581{ 'struct': 'ChardevSocketWrapper',
582  'data': { 'data': 'ChardevSocket' } }
583
584##
585# @ChardevUdpWrapper:
586#
587# @data: Configuration info for datagram socket chardevs
588#
589# Since: 1.5
590##
591{ 'struct': 'ChardevUdpWrapper',
592  'data': { 'data': 'ChardevUdp' } }
593
594##
595# @ChardevCommonWrapper:
596#
597# @data: Configuration shared across all chardev backends
598#
599# Since: 2.6
600##
601{ 'struct': 'ChardevCommonWrapper',
602  'data': { 'data': 'ChardevCommon' } }
603
604##
605# @ChardevMuxWrapper:
606#
607# @data: Configuration info for mux chardevs
608#
609# Since: 1.5
610##
611{ 'struct': 'ChardevMuxWrapper',
612  'data': { 'data': 'ChardevMux' } }
613
614##
615# @ChardevHubWrapper:
616#
617# @data: Configuration info for hub chardevs
618#
619# Since: 10.0
620##
621{ 'struct': 'ChardevHubWrapper',
622  'data': { 'data': 'ChardevHub' } }
623
624##
625# @ChardevStdioWrapper:
626#
627# @data: Configuration info for stdio chardevs
628#
629# Since: 1.5
630##
631{ 'struct': 'ChardevStdioWrapper',
632  'data': { 'data': 'ChardevStdio' } }
633
634##
635# @ChardevSpiceChannelWrapper:
636#
637# @data: Configuration info for spice vm channel chardevs
638#
639# Since: 1.5
640##
641{ 'struct': 'ChardevSpiceChannelWrapper',
642  'data': { 'data': 'ChardevSpiceChannel' },
643  'if': 'CONFIG_SPICE' }
644
645##
646# @ChardevSpicePortWrapper:
647#
648# @data: Configuration info for spice port chardevs
649#
650# Since: 1.5
651##
652{ 'struct': 'ChardevSpicePortWrapper',
653  'data': { 'data': 'ChardevSpicePort' },
654  'if': 'CONFIG_SPICE' }
655
656##
657# @ChardevQemuVDAgentWrapper:
658#
659# @data: Configuration info for qemu vdagent implementation
660#
661# Since: 6.1
662##
663{ 'struct': 'ChardevQemuVDAgentWrapper',
664  'data': { 'data': 'ChardevQemuVDAgent' },
665  'if': 'CONFIG_SPICE_PROTOCOL' }
666
667##
668# @ChardevDBusWrapper:
669#
670# @data: Configuration info for DBus chardevs
671#
672# Since: 7.0
673##
674{ 'struct': 'ChardevDBusWrapper',
675  'data': { 'data': 'ChardevDBus' },
676  'if': 'CONFIG_DBUS_DISPLAY' }
677
678##
679# @ChardevVCWrapper:
680#
681# @data: Configuration info for virtual console chardevs
682#
683# Since: 1.5
684##
685{ 'struct': 'ChardevVCWrapper',
686  'data': { 'data': 'ChardevVC' } }
687
688##
689# @ChardevRingbufWrapper:
690#
691# @data: Configuration info for ring buffer chardevs
692#
693# Since: 1.5
694##
695{ 'struct': 'ChardevRingbufWrapper',
696  'data': { 'data': 'ChardevRingbuf' } }
697
698
699##
700# @ChardevPtyWrapper:
701#
702# @data: Configuration info for pty chardevs
703#
704# Since: 9.2
705##
706{ 'struct': 'ChardevPtyWrapper',
707  'data': { 'data': 'ChardevPty' } }
708
709##
710# @ChardevBackend:
711#
712# Configuration info for the new chardev backend.
713#
714# @type: backend type
715#
716# Since: 1.4
717##
718{ 'union': 'ChardevBackend',
719  'base': { 'type': 'ChardevBackendKind' },
720  'discriminator': 'type',
721  'data': { 'file': 'ChardevFileWrapper',
722            'serial': { 'type': 'ChardevHostdevWrapper',
723                        'if': 'HAVE_CHARDEV_SERIAL' },
724            'parallel': { 'type': 'ChardevHostdevWrapper',
725                          'if': 'HAVE_CHARDEV_PARALLEL' },
726            'pipe': 'ChardevHostdevWrapper',
727            'socket': 'ChardevSocketWrapper',
728            'udp': 'ChardevUdpWrapper',
729            'pty': 'ChardevPtyWrapper',
730            'null': 'ChardevCommonWrapper',
731            'mux': 'ChardevMuxWrapper',
732            'hub': 'ChardevHubWrapper',
733            'msmouse': 'ChardevCommonWrapper',
734            'wctablet': 'ChardevCommonWrapper',
735            'braille': { 'type': 'ChardevCommonWrapper',
736                         'if': 'CONFIG_BRLAPI' },
737            'testdev': 'ChardevCommonWrapper',
738            'stdio': 'ChardevStdioWrapper',
739            'console': { 'type': 'ChardevCommonWrapper',
740                         'if': 'CONFIG_WIN32' },
741            'spicevmc': { 'type': 'ChardevSpiceChannelWrapper',
742                          'if': 'CONFIG_SPICE' },
743            'spiceport': { 'type': 'ChardevSpicePortWrapper',
744                           'if': 'CONFIG_SPICE' },
745            'qemu-vdagent': { 'type': 'ChardevQemuVDAgentWrapper',
746                              'if': 'CONFIG_SPICE_PROTOCOL' },
747            'dbus': { 'type': 'ChardevDBusWrapper',
748                      'if': 'CONFIG_DBUS_DISPLAY' },
749            'vc': 'ChardevVCWrapper',
750            'ringbuf': 'ChardevRingbufWrapper',
751            'memory': 'ChardevRingbufWrapper' } }
752
753##
754# @ChardevReturn:
755#
756# Return info about the chardev backend just created.
757#
758# @pty: name of the slave pseudoterminal device, present if and only
759#     if a chardev of type 'pty' was created
760#
761# Since: 1.4
762##
763{ 'struct' : 'ChardevReturn',
764  'data': { '*pty': 'str' } }
765
766##
767# @chardev-add:
768#
769# Add a character device backend
770#
771# @id: the chardev's ID, must be unique
772#
773# @backend: backend type and parameters
774#
775# Returns: ChardevReturn.
776#
777# Since: 1.4
778#
779# .. qmp-example::
780#
781#     -> { "execute" : "chardev-add",
782#          "arguments" : { "id" : "foo",
783#                          "backend" : { "type" : "null", "data" : {} } } }
784#     <- { "return": {} }
785#
786# .. qmp-example::
787#
788#     -> { "execute" : "chardev-add",
789#          "arguments" : { "id" : "bar",
790#                          "backend" : { "type" : "file",
791#                                        "data" : { "out" : "/tmp/bar.log" } } } }
792#     <- { "return": {} }
793#
794# .. qmp-example::
795#
796#     -> { "execute" : "chardev-add",
797#          "arguments" : { "id" : "baz",
798#                          "backend" : { "type" : "pty", "data" : {} } } }
799#     <- { "return": { "pty" : "/dev/pty/42" } }
800##
801{ 'command': 'chardev-add',
802  'data': { 'id': 'str',
803            'backend': 'ChardevBackend' },
804  'returns': 'ChardevReturn' }
805
806##
807# @chardev-change:
808#
809# Change a character device backend
810#
811# @id: the chardev's ID, must exist
812#
813# @backend: new backend type and parameters
814#
815# Returns: ChardevReturn.
816#
817# Since: 2.10
818#
819# .. qmp-example::
820#
821#     -> { "execute" : "chardev-change",
822#          "arguments" : { "id" : "baz",
823#                          "backend" : { "type" : "pty", "data" : {} } } }
824#     <- { "return": { "pty" : "/dev/pty/42" } }
825#
826# .. qmp-example::
827#
828#     -> {"execute" : "chardev-change",
829#         "arguments" : {
830#             "id" : "charchannel2",
831#             "backend" : {
832#                 "type" : "socket",
833#                 "data" : {
834#                     "addr" : {
835#                         "type" : "unix" ,
836#                         "data" : {
837#                             "path" : "/tmp/charchannel2.socket"
838#                         }
839#                      },
840#                      "server" : true,
841#                      "wait" : false }}}}
842#     <- {"return": {}}
843##
844{ 'command': 'chardev-change',
845  'data': { 'id': 'str',
846            'backend': 'ChardevBackend' },
847  'returns': 'ChardevReturn' }
848
849##
850# @chardev-remove:
851#
852# Remove a character device backend
853#
854# @id: the chardev's ID, must exist and not be in use
855#
856# Since: 1.4
857#
858# .. qmp-example::
859#
860#     -> { "execute": "chardev-remove", "arguments": { "id" : "foo" } }
861#     <- { "return": {} }
862##
863{ 'command': 'chardev-remove',
864  'data': { 'id': 'str' } }
865
866##
867# @chardev-send-break:
868#
869# Send a break to a character device
870#
871# @id: the chardev's ID, must exist
872#
873# Since: 2.10
874#
875# .. qmp-example::
876#
877#     -> { "execute": "chardev-send-break", "arguments": { "id" : "foo" } }
878#     <- { "return": {} }
879##
880{ 'command': 'chardev-send-break',
881  'data': { 'id': 'str' } }
882
883##
884# @VSERPORT_CHANGE:
885#
886# Emitted when the guest opens or closes a virtio-serial port.
887#
888# @id: device identifier of the virtio-serial port
889#
890# @open: true if the guest has opened the virtio-serial port
891#
892# .. note:: This event is rate-limited.
893#
894# Since: 2.1
895#
896# .. qmp-example::
897#
898#     <- { "event": "VSERPORT_CHANGE",
899#          "data": { "id": "channel0", "open": true },
900#          "timestamp": { "seconds": 1401385907, "microseconds": 422329 } }
901##
902{ 'event': 'VSERPORT_CHANGE',
903  'data': { 'id': 'str',
904            'open': 'bool' } }
905