qemu_monitor_json.h 28.0 KB
Newer Older
D
Daniel P. Berrange 已提交
1 2 3
/*
 * qemu_monitor_json.h: interaction with QEMU monitor console
 *
4
 * Copyright (C) 2006-2009, 2011-2015 Red Hat, Inc.
D
Daniel P. Berrange 已提交
5 6 7 8 9 10 11 12 13 14 15 16 17
 * Copyright (C) 2006 Daniel P. Berrange
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
18
 * License along with this library.  If not, see
O
Osier Yang 已提交
19
 * <http://www.gnu.org/licenses/>.
D
Daniel P. Berrange 已提交
20 21
 */

22
#pragma once
D
Daniel P. Berrange 已提交
23

24
#include "internal.h"
D
Daniel P. Berrange 已提交
25

26 27 28 29
#include "qemu_monitor.h"
#include "virbitmap.h"
#include "cpu/cpu.h"
#include "util/virgic.h"
D
Daniel P. Berrange 已提交
30

31 32 33 34
int qemuMonitorJSONIOProcessLine(qemuMonitorPtr mon,
                                 const char *line,
                                 qemuMonitorMessagePtr msg);

D
Daniel P. Berrange 已提交
35 36 37 38 39
int qemuMonitorJSONIOProcess(qemuMonitorPtr mon,
                             const char *data,
                             size_t len,
                             qemuMonitorMessagePtr msg);

40 41 42
int qemuMonitorJSONHumanCommand(qemuMonitorPtr mon,
                                const char *cmd,
                                char **reply);
43

44 45
int qemuMonitorJSONSetCapabilities(qemuMonitorPtr mon);

46
int qemuMonitorJSONStartCPUs(qemuMonitorPtr mon);
D
Daniel P. Berrange 已提交
47
int qemuMonitorJSONStopCPUs(qemuMonitorPtr mon);
48 49 50
int qemuMonitorJSONGetStatus(qemuMonitorPtr mon,
                             bool *running,
                             virDomainPausedReason *reason);
D
Daniel P. Berrange 已提交
51 52

int qemuMonitorJSONSystemPowerdown(qemuMonitorPtr mon);
53
int qemuMonitorJSONSystemReset(qemuMonitorPtr mon);
D
Daniel P. Berrange 已提交
54

55
int qemuMonitorJSONQueryCPUs(qemuMonitorPtr mon,
56
                             struct qemuMonitorQueryCpusEntry **entries,
57
                             size_t *nentries,
58 59
                             bool force,
                             bool fast);
60
int qemuMonitorJSONGetVirtType(qemuMonitorPtr mon,
61
                               virDomainVirtType *virtType);
62 63 64
int qemuMonitorJSONUpdateVideoMemorySize(qemuMonitorPtr mon,
                                         virDomainVideoDefPtr video,
                                         char *path);
65 66 67
int qemuMonitorJSONUpdateVideoVram64Size(qemuMonitorPtr mon,
                                         virDomainVideoDefPtr video,
                                         char *path);
D
Daniel P. Berrange 已提交
68
int qemuMonitorJSONGetBalloonInfo(qemuMonitorPtr mon,
69
                                  unsigned long long *currmem);
70
int qemuMonitorJSONGetMemoryStats(qemuMonitorPtr mon,
71
                                  char *balloonpath,
72 73
                                  virDomainMemoryStatPtr stats,
                                  unsigned int nr_stats);
74 75 76
int qemuMonitorJSONSetMemoryStatsPeriod(qemuMonitorPtr mon,
                                        char *balloonpath,
                                        int period);
77
int qemuMonitorJSONGetBlockInfo(qemuMonitorPtr mon,
78
                                virHashTablePtr table);
79

80
virJSONValuePtr qemuMonitorJSONQueryBlockstats(qemuMonitorPtr mon);
81
int qemuMonitorJSONGetAllBlockStatsInfo(qemuMonitorPtr mon,
82
                                        virHashTablePtr hash,
83
                                        bool backingChain);
84
int qemuMonitorJSONBlockStatsUpdateCapacity(qemuMonitorPtr mon,
85 86
                                            virHashTablePtr stats,
                                            bool backingChain);
87 88 89
int qemuMonitorJSONBlockStatsUpdateCapacityBlockdev(qemuMonitorPtr mon,
                                                    virHashTablePtr stats);

90 91 92
virHashTablePtr
qemuMonitorJSONBlockGetNamedNodeData(qemuMonitorPtr mon);

93
int qemuMonitorJSONBlockResize(qemuMonitorPtr mon,
94 95
                               const char *device,
                               const char *nodename,
96
                               unsigned long long size);
D
Daniel P. Berrange 已提交
97

98 99 100 101 102 103 104
int qemuMonitorJSONSetPassword(qemuMonitorPtr mon,
                               const char *protocol,
                               const char *password,
                               const char *action_if_connected);
int qemuMonitorJSONExpirePassword(qemuMonitorPtr mon,
                                  const char *protocol,
                                  const char *expire_time);
D
Daniel P. Berrange 已提交
105
int qemuMonitorJSONSetBalloon(qemuMonitorPtr mon,
106
                              unsigned long long newmem);
107
int qemuMonitorJSONSetCPU(qemuMonitorPtr mon, int cpu, bool online);
D
Daniel P. Berrange 已提交
108 109

int qemuMonitorJSONEjectMedia(qemuMonitorPtr mon,
110
                              const char *dev_name,
111
                              bool force);
D
Daniel P. Berrange 已提交
112
int qemuMonitorJSONChangeMedia(qemuMonitorPtr mon,
113
                               const char *dev_name,
D
Daniel P. Berrange 已提交
114 115 116 117 118 119
                               const char *newmedia,
                               const char *format);


int qemuMonitorJSONSaveVirtualMemory(qemuMonitorPtr mon,
                                     unsigned long long offset,
120
                                     unsigned long long length,
D
Daniel P. Berrange 已提交
121 122 123
                                     const char *path);
int qemuMonitorJSONSavePhysicalMemory(qemuMonitorPtr mon,
                                      unsigned long long offset,
124
                                      unsigned long long length,
D
Daniel P. Berrange 已提交
125 126 127 128 129
                                      const char *path);

int qemuMonitorJSONSetMigrationSpeed(qemuMonitorPtr mon,
                                     unsigned long bandwidth);

130 131 132
int qemuMonitorJSONSetMigrationDowntime(qemuMonitorPtr mon,
                                        unsigned long long downtime);

133 134 135 136 137
int qemuMonitorJSONGetMigrationCacheSize(qemuMonitorPtr mon,
                                         unsigned long long *cacheSize);
int qemuMonitorJSONSetMigrationCacheSize(qemuMonitorPtr mon,
                                         unsigned long long cacheSize);

138
int qemuMonitorJSONGetMigrationParams(qemuMonitorPtr mon,
139
                                      virJSONValuePtr *params);
140
int qemuMonitorJSONSetMigrationParams(qemuMonitorPtr mon,
141
                                      virJSONValuePtr params);
142

143
int qemuMonitorJSONGetMigrationStats(qemuMonitorPtr mon,
144 145
                                     qemuMonitorMigrationStatsPtr stats,
                                     char **error);
D
Daniel P. Berrange 已提交
146

147 148
int qemuMonitorJSONGetMigrationCapabilities(qemuMonitorPtr mon,
                                            char ***capabilities);
149
int qemuMonitorJSONSetMigrationCapabilities(qemuMonitorPtr mon,
150
                                            virJSONValuePtr caps);
151

A
Andrea Bolognani 已提交
152 153 154
int qemuMonitorJSONGetGICCapabilities(qemuMonitorPtr mon,
                                      virGICCapability **capabilities);

155 156 157
int qemuMonitorJSONGetSEVCapabilities(qemuMonitorPtr mon,
                                      virSEVCapability **capabilities);

158 159 160
int qemuMonitorJSONMigrate(qemuMonitorPtr mon,
                           unsigned int flags,
                           const char *uri);
161 162 163
int qemuMonitorJSONGetSpiceMigrationStatus(qemuMonitorPtr mon,
                                           bool *spice_migrated);

D
Daniel P. Berrange 已提交
164 165 166

int qemuMonitorJSONMigrateCancel(qemuMonitorPtr mon);

167 168 169
int qemuMonitorJSONQueryDump(qemuMonitorPtr mon,
                             qemuMonitorDumpStatsPtr stats);

170 171 172
int qemuMonitorJSONGetDumpGuestMemoryCapability(qemuMonitorPtr mon,
                                                const char *capability);

173
int qemuMonitorJSONDump(qemuMonitorPtr mon,
174
                        const char *protocol,
175 176
                        const char *dumpformat,
                        bool detach);
177

178 179 180 181 182 183 184
int qemuMonitorJSONGraphicsRelocate(qemuMonitorPtr mon,
                                    int type,
                                    const char *hostname,
                                    int port,
                                    int tlsPort,
                                    const char *tlsSubject);

D
Daniel P. Berrange 已提交
185
int qemuMonitorJSONAddPCIHostDevice(qemuMonitorPtr mon,
186 187
                                    virPCIDeviceAddress *hostAddr,
                                    virPCIDeviceAddress *guestAddr);
D
Daniel P. Berrange 已提交
188 189 190 191

int qemuMonitorJSONAddPCIDisk(qemuMonitorPtr mon,
                              const char *path,
                              const char *bus,
192
                              virPCIDeviceAddress *guestAddr);
D
Daniel P. Berrange 已提交
193 194 195

int qemuMonitorJSONAddPCINetwork(qemuMonitorPtr mon,
                                 const char *nicstr,
196
                                 virPCIDeviceAddress *guestAddr);
D
Daniel P. Berrange 已提交
197 198

int qemuMonitorJSONRemovePCIDevice(qemuMonitorPtr mon,
199
                                   virPCIDeviceAddress *guestAddr);
D
Daniel P. Berrange 已提交
200 201 202 203 204 205 206 207

int qemuMonitorJSONSendFileHandle(qemuMonitorPtr mon,
                                  const char *fdname,
                                  int fd);

int qemuMonitorJSONCloseFileHandle(qemuMonitorPtr mon,
                                   const char *fdname);

208 209 210 211 212 213
int qemuMonitorJSONAddNetdev(qemuMonitorPtr mon,
                             const char *netdevstr);

int qemuMonitorJSONRemoveNetdev(qemuMonitorPtr mon,
                                const char *alias);

214 215 216
int qemuMonitorJSONQueryRxFilter(qemuMonitorPtr mon, const char *alias,
                                 virNetDevRxFilterPtr *filter);

217 218
int qemuMonitorJSONGetChardevInfo(qemuMonitorPtr mon,
                                  virHashTablePtr info);
219

220 221
int qemuMonitorJSONAttachPCIDiskController(qemuMonitorPtr mon,
                                           const char *bus,
222
                                           virPCIDeviceAddress *guestAddr);
223

224 225
int qemuMonitorJSONAddDeviceArgs(qemuMonitorPtr mon,
                                 virJSONValuePtr args);
226 227 228
int qemuMonitorJSONAddDevice(qemuMonitorPtr mon,
                             const char *devicestr);

229
int qemuMonitorJSONDelDevice(qemuMonitorPtr mon,
230
                             const char *devalias);
231

232 233 234 235 236 237
int qemuMonitorJSONAddObject(qemuMonitorPtr mon,
                             virJSONValuePtr props);

int qemuMonitorJSONDelObject(qemuMonitorPtr mon,
                             const char *objalias);

238
int qemuMonitorJSONTransaction(qemuMonitorPtr mon, virJSONValuePtr *actions)
239 240 241 242 243 244
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
int qemuMonitorJSONDriveMirror(qemuMonitorPtr mon,
                               const char *device,
                               const char *file,
                               const char *format,
                               unsigned long long speed,
245 246
                               unsigned int granularity,
                               unsigned long long buf_size,
247 248
                               bool shallow,
                               bool reuse)
249
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);
250 251
int qemuMonitorJSONBlockdevMirror(qemuMonitorPtr mon,
                                  const char *jobname,
252
                                  bool persistjob,
253 254 255 256 257
                                  const char *device,
                                  const char *target,
                                  unsigned long long speed,
                                  unsigned int granularity,
                                  unsigned long long buf_size,
258
                                  bool shallow)
259
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(4) ATTRIBUTE_NONNULL(5);
260
int qemuMonitorJSONDrivePivot(qemuMonitorPtr mon,
261
                              const char *jobname)
262
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
263

264 265 266
bool qemuMonitorJSONSupportsActiveCommit(qemuMonitorPtr mon)
    ATTRIBUTE_NONNULL(1);

267 268
int qemuMonitorJSONBlockCommit(qemuMonitorPtr mon,
                               const char *device,
269 270
                               const char *jobname,
                               bool persistjob,
271
                               const char *top,
272
                               const char *topNode,
273
                               const char *base,
274
                               const char *baseNode,
275
                               const char *backingName,
276
                               unsigned long long bandwidth)
277
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
278

279 280 281 282 283 284 285
char *qemuMonitorJSONDiskNameLookup(qemuMonitorPtr mon,
                                    const char *device,
                                    virStorageSourcePtr top,
                                    virStorageSourcePtr target)
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3)
    ATTRIBUTE_NONNULL(4);

286 287
int qemuMonitorJSONArbitraryCommand(qemuMonitorPtr mon,
                                    const char *cmd_str,
288
                                    char **reply_str);
289

290
int qemuMonitorJSONInjectNMI(qemuMonitorPtr mon);
291

292 293 294 295 296
int qemuMonitorJSONSendKey(qemuMonitorPtr mon,
                           unsigned int holdtime,
                           unsigned int *keycodes,
                           unsigned int nkeycodes);

297
int qemuMonitorJSONScreendump(qemuMonitorPtr mon,
298 299
                              const char *device,
                              unsigned int head,
300 301
                              const char *file);

302 303
int qemuMonitorJSONBlockStream(qemuMonitorPtr mon,
                               const char *device,
304 305
                               const char *jobname,
                               bool persistjob,
306
                               const char *base,
307
                               const char *baseNode,
308
                               const char *backingName,
309
                               unsigned long long speed)
310
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
311

312
int qemuMonitorJSONBlockJobCancel(qemuMonitorPtr mon,
313
                                  const char *jobname)
314 315
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);

316 317 318 319 320 321
int
qemuMonitorJSONGetJobInfo(qemuMonitorPtr mon,
                          qemuMonitorJobInfoPtr **jobs,
                          size_t *njobs);


322
int qemuMonitorJSONBlockJobSetSpeed(qemuMonitorPtr mon,
323
                                    const char *jobname,
324
                                    unsigned long long speed)
325 326
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);

327 328
virHashTablePtr qemuMonitorJSONGetAllBlockJobInfo(qemuMonitorPtr mon,
                                                  bool rawjobname)
329
    ATTRIBUTE_NONNULL(1);
330

331 332 333 334
int qemuMonitorJSONJobDismiss(qemuMonitorPtr mon,
                              const char *jobname)
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);

335 336 337 338 339
int qemuMonitorJSONJobCancel(qemuMonitorPtr mon,
                             const char *jobname,
                             bool quiet)
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);

340 341 342 343
int qemuMonitorJSONJobComplete(qemuMonitorPtr mon,
                               const char *jobname)
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);

344 345
int qemuMonitorJSONSetLink(qemuMonitorPtr mon,
                           const char *name,
346
                           virDomainNetInterfaceLinkState state);
347

348 349 350 351 352
int qemuMonitorJSONOpenGraphics(qemuMonitorPtr mon,
                                const char *protocol,
                                const char *fdname,
                                bool skipauth);

353
int qemuMonitorJSONSetBlockIoThrottle(qemuMonitorPtr mon,
354 355
                                      const char *drivealias,
                                      const char *qomid,
356
                                      virDomainBlockIoTuneInfoPtr info,
357
                                      bool supportMaxOptions,
358
                                      bool supportGroupNameOption,
359
                                      bool supportMaxLengthOptions);
360 361

int qemuMonitorJSONGetBlockIoThrottle(qemuMonitorPtr mon,
362 363
                                      const char *drivealias,
                                      const char *qdevid,
364
                                      virDomainBlockIoTuneInfoPtr reply);
365

366 367
int qemuMonitorJSONSystemWakeup(qemuMonitorPtr mon);

368 369
char *qemuMonitorJSONGetSEVMeasurement(qemuMonitorPtr mon);

370 371 372 373 374 375 376
int qemuMonitorJSONGetVersion(qemuMonitorPtr mon,
                              int *major,
                              int *minor,
                              int *micro,
                              char **package)
    ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(4);

377 378 379 380
int qemuMonitorJSONGetMachines(qemuMonitorPtr mon,
                               qemuMonitorMachineInfoPtr **machines)
    ATTRIBUTE_NONNULL(2);

381
int qemuMonitorJSONGetCPUDefinitions(qemuMonitorPtr mon,
382
                                     qemuMonitorCPUDefsPtr *cpuDefs)
383 384
    ATTRIBUTE_NONNULL(2);

385
int qemuMonitorJSONGetCPUModelExpansion(qemuMonitorPtr mon,
386
                                        qemuMonitorCPUModelExpansionType type,
387
                                        virCPUDefPtr cpu,
388
                                        bool migratable,
389
                                        bool fail_no_props,
390
                                        qemuMonitorCPUModelInfoPtr *model_info)
391
    ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(6);
392

393 394 395 396 397 398
int qemuMonitorJSONGetCPUModelBaseline(qemuMonitorPtr mon,
                                       virCPUDefPtr cpu_a,
                                       virCPUDefPtr cpu_b,
                                       qemuMonitorCPUModelInfoPtr *baseline)
    ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(4);

399 400 401 402 403 404
int qemuMonitorJSONGetCPUModelComparison(qemuMonitorPtr mon,
                                         virCPUDefPtr cpu_a,
                                         virCPUDefPtr cpu_b,
                                         char **result)
    ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);

405 406 407
int qemuMonitorJSONGetCommands(qemuMonitorPtr mon,
                               char ***commands)
    ATTRIBUTE_NONNULL(2);
408 409 410
int qemuMonitorJSONGetEvents(qemuMonitorPtr mon,
                             char ***events)
    ATTRIBUTE_NONNULL(2);
411 412
int qemuMonitorJSONGetCommandLineOptionParameters(qemuMonitorPtr mon,
                                                  const char *option,
413 414
                                                  char ***params,
                                                  bool *found)
415
    ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);
416

417 418 419 420 421
int qemuMonitorJSONGetKVMState(qemuMonitorPtr mon,
                               bool *enabled,
                               bool *present)
    ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);

422 423 424
int qemuMonitorJSONGetObjectTypes(qemuMonitorPtr mon,
                                  char ***types)
    ATTRIBUTE_NONNULL(2);
425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441

/* ListPath structures and API's are public only for qemumonitorjsontest */
typedef struct _qemuMonitorJSONListPath qemuMonitorJSONListPath;
typedef qemuMonitorJSONListPath *qemuMonitorJSONListPathPtr;

struct _qemuMonitorJSONListPath {
    char *name;
    char *type;
};

int qemuMonitorJSONGetObjectListPaths(qemuMonitorPtr mon,
                                      const char *path,
                                      qemuMonitorJSONListPathPtr **paths)
    ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);

void qemuMonitorJSONListPathFree(qemuMonitorJSONListPathPtr paths);

442 443 444
/* ObjectProperty structures and Get/Set API's are public only
 * for qemumonitorjsontest
 */
445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478
/* Flags for the 'type' field in _qemuMonitorJSONObjectProperty */
typedef enum {
    QEMU_MONITOR_OBJECT_PROPERTY_BOOLEAN=1,
    QEMU_MONITOR_OBJECT_PROPERTY_INT,
    QEMU_MONITOR_OBJECT_PROPERTY_LONG,
    QEMU_MONITOR_OBJECT_PROPERTY_UINT,
    QEMU_MONITOR_OBJECT_PROPERTY_ULONG,
    QEMU_MONITOR_OBJECT_PROPERTY_DOUBLE,
    QEMU_MONITOR_OBJECT_PROPERTY_STRING,

    QEMU_MONITOR_OBJECT_PROPERTY_LAST
} qemuMonitorJSONObjectPropertyType;

typedef struct _qemuMonitorJSONObjectProperty qemuMonitorJSONObjectProperty;
typedef qemuMonitorJSONObjectProperty *qemuMonitorJSONObjectPropertyPtr;
struct _qemuMonitorJSONObjectProperty {
    int type;    /* qemuMonitorJSONObjectPropertyType */
    union {
        bool b;
        int iv;
        long long l;
        unsigned int ui;
        unsigned long long ul;
        double d;
        char *str;
    } val;
};

int qemuMonitorJSONGetObjectProperty(qemuMonitorPtr mon,
                                     const char *path,
                                     const char *property,
                                     qemuMonitorJSONObjectPropertyPtr prop)
    ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(4);

479 480 481 482 483 484
int qemuMonitorJSONSetObjectProperty(qemuMonitorPtr mon,
                                     const char *path,
                                     const char *property,
                                     qemuMonitorJSONObjectPropertyPtr prop)
    ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(4);

485 486
int qemuMonitorJSONGetDeviceProps(qemuMonitorPtr mon,
                                  const char *device,
487 488
                                  char ***props)
    ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);
489 490 491 492
int qemuMonitorJSONGetObjectProps(qemuMonitorPtr mon,
                                  const char *object,
                                  char ***props)
    ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);
493
char *qemuMonitorJSONGetTargetArch(qemuMonitorPtr mon);
494

495
int qemuMonitorJSONNBDServerStart(qemuMonitorPtr mon,
496
                                  const virStorageNetHostDef *server,
497
                                  const char *tls_alias);
498 499
int qemuMonitorJSONNBDServerAdd(qemuMonitorPtr mon,
                                const char *deviceID,
500 501 502
                                const char *export,
                                bool writable,
                                const char *bitmap);
503
int qemuMonitorJSONNBDServerStop(qemuMonitorPtr mon);
S
Stefan Berger 已提交
504 505 506 507 508 509 510 511
int qemuMonitorJSONGetTPMModels(qemuMonitorPtr mon,
                                char ***tpmmodels)
    ATTRIBUTE_NONNULL(2);

int qemuMonitorJSONGetTPMTypes(qemuMonitorPtr mon,
                               char ***tpmtypes)
    ATTRIBUTE_NONNULL(2);

512 513 514
int qemuMonitorJSONAttachCharDev(qemuMonitorPtr mon,
                                 const char *chrID,
                                 virDomainChrSourceDefPtr chr);
515 516
int qemuMonitorJSONDetachCharDev(qemuMonitorPtr mon,
                                 const char *chrID);
517 518 519 520

int qemuMonitorJSONGetDeviceAliases(qemuMonitorPtr mon,
                                    char ***aliases);

521 522 523 524
int qemuMonitorJSONGetCPUx86Data(qemuMonitorPtr mon,
                                 const char *property,
                                 virCPUDataPtr *cpudata);

525 526 527
int qemuMonitorJSONGetGuestCPUx86(qemuMonitorPtr mon,
                                  virCPUDataPtr *data,
                                  virCPUDataPtr *disabled);
528

529 530 531 532 533 534 535
int qemuMonitorJSONGetGuestCPU(qemuMonitorPtr mon,
                               virArch arch,
                               qemuMonitorCPUFeatureTranslationCallback translate,
                               void *opaque,
                               virCPUDataPtr *enabled,
                               virCPUDataPtr *disabled);

536
int qemuMonitorJSONRTCResetReinjection(qemuMonitorPtr mon);
537 538

int qemuMonitorJSONGetIOThreads(qemuMonitorPtr mon,
539
                                qemuMonitorIOThreadInfoPtr **iothreads)
540
    ATTRIBUTE_NONNULL(2);
541

542 543 544 545
int qemuMonitorJSONSetIOThread(qemuMonitorPtr mon,
                               qemuMonitorIOThreadInfoPtr iothreadInfo)
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);

546 547 548 549
int qemuMonitorJSONGetMemoryDeviceInfo(qemuMonitorPtr mon,
                                       virHashTablePtr info)
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);

550 551
int qemuMonitorJSONFindLinkPath(qemuMonitorPtr mon,
                                const char *name,
552
                                const char *alias,
553
                                char **path)
554
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(4);
555 556 557 558 559

int qemuMonitorJSONMigrateIncoming(qemuMonitorPtr mon,
                                   const char *uri)
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);

560 561
int qemuMonitorJSONMigrateStartPostCopy(qemuMonitorPtr mon)
    ATTRIBUTE_NONNULL(1);
562 563 564 565

int qemuMonitorJSONMigrateContinue(qemuMonitorPtr mon,
                                   qemuMonitorMigrationStatus status)
    ATTRIBUTE_NONNULL(1);
566

567 568 569
int qemuMonitorJSONGetRTCTime(qemuMonitorPtr mon,
                              struct tm *tm)
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
570 571 572 573 574

int qemuMonitorJSONGetHotpluggableCPUs(qemuMonitorPtr mon,
                                       struct qemuMonitorQueryHotpluggableCpusEntry **entries,
                                       size_t *nentries)
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);
575

576
virJSONValuePtr qemuMonitorJSONQueryQMPSchema(qemuMonitorPtr mon)
577
    ATTRIBUTE_NONNULL(1);
578 579 580 581 582 583

int qemuMonitorJSONSetBlockThreshold(qemuMonitorPtr mon,
                                     const char *nodename,
                                     unsigned long long threshold)
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);

584 585 586
virJSONValuePtr qemuMonitorJSONQueryNamedBlockNodes(qemuMonitorPtr mon)
    ATTRIBUTE_NONNULL(1);

M
Michal Privoznik 已提交
587 588 589
int qemuMonitorJSONSetWatchdogAction(qemuMonitorPtr mon,
                                     const char *action)
    ATTRIBUTE_NONNULL(1);
590

591 592 593 594 595
int qemuMonitorJSONBlockdevCreate(qemuMonitorPtr mon,
                                  const char *jobname,
                                  virJSONValuePtr props)
    ATTRIBUTE_NONNULL(1);

596 597 598 599 600 601 602 603
int qemuMonitorJSONBlockdevAdd(qemuMonitorPtr mon,
                               virJSONValuePtr props)
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);

int qemuMonitorJSONBlockdevDel(qemuMonitorPtr mon,
                               const char *nodename)
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);

604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621
int qemuMonitorJSONBlockdevTrayOpen(qemuMonitorPtr mon,
                                    const char *id,
                                    bool force)
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);

int qemuMonitorJSONBlockdevTrayClose(qemuMonitorPtr mon,
                                     const char *id)
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);

int qemuMonitorJSONBlockdevMediumRemove(qemuMonitorPtr mon,
                                        const char *id)
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);

int qemuMonitorJSONBlockdevMediumInsert(qemuMonitorPtr mon,
                                        const char *id,
                                        const char *nodename)
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);

622 623 624 625
int qemuMonitorJSONGetPRManagerInfo(qemuMonitorPtr mon,
                                    virHashTablePtr info)
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);

626 627 628 629
int
qemuMonitorJSONGetCurrentMachineInfo(qemuMonitorPtr mon,
                                     qemuMonitorCurrentMachineInfoPtr info)
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653

int
qemuMonitorJSONTransactionBitmapAdd(virJSONValuePtr actions,
                                    const char *node,
                                    const char *name,
                                    bool persistent,
                                    bool disabled);
int
qemuMonitorJSONTransactionBitmapRemove(virJSONValuePtr actions,
                                       const char *node,
                                       const char *name);
int
qemuMonitorJSONTransactionBitmapEnable(virJSONValuePtr actions,
                                       const char *node,
                                       const char *name);
int
qemuMonitorJSONTransactionBitmapDisable(virJSONValuePtr actions,
                                        const char *node,
                                        const char *name);
int
qemuMonitorJSONTransactionBitmapMerge(virJSONValuePtr actions,
                                      const char *node,
                                      const char *target,
                                      virJSONValuePtr *sources);
654

655 656 657 658 659
int
qemuMonitorJSONTransactionBitmapMergeSourceAddBitmap(virJSONValuePtr sources,
                                                     const char *sourcenode,
                                                     const char *sourcebitmap);

660 661 662 663 664 665 666 667 668 669
int
qemuMonitorJSONTransactionSnapshotLegacy(virJSONValuePtr actions,
                                         const char *device,
                                         const char *path,
                                         const char *format,
                                         bool existing);
int
qemuMonitorJSONTransactionSnapshotBlockdev(virJSONValuePtr actions,
                                           const char *node,
                                           const char *overlay);