1 /* 2 * qemu_monitor_json.h: interaction with QEMU monitor console 3 * 4 * Copyright (C) 2006-2009, 2011-2015 Red Hat, Inc. 5 * Copyright (C) 2006 Daniel P. Berrange 6 * 7 * This library is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU Lesser General Public 9 * License as published by the Free Software Foundation; either 10 * version 2.1 of the License, or (at your option) any later version. 11 * 12 * This library is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * Lesser General Public License for more details. 16 * 17 * You should have received a copy of the GNU Lesser General Public 18 * License along with this library. If not, see 19 * <http://www.gnu.org/licenses/>. 20 */ 21 22 #pragma once 23 24 #include "internal.h" 25 26 #include "qemu_monitor.h" 27 #include "virbitmap.h" 28 #include "cpu/cpu.h" 29 #include "util/virgic.h" 30 31 int qemuMonitorJSONIOProcessLine(qemuMonitor *mon, 32 const char *line, 33 qemuMonitorMessage *msg) G_GNUC_NO_INLINE; 34 35 int qemuMonitorJSONIOProcess(qemuMonitor *mon, 36 const char *data, 37 size_t len, 38 qemuMonitorMessage *msg); 39 40 int qemuMonitorJSONHumanCommand(qemuMonitor *mon, 41 const char *cmd, 42 char **reply); 43 44 int qemuMonitorJSONSetCapabilities(qemuMonitor *mon); 45 46 int qemuMonitorJSONStartCPUs(qemuMonitor *mon); 47 int qemuMonitorJSONStopCPUs(qemuMonitor *mon); 48 int qemuMonitorJSONGetStatus(qemuMonitor *mon, 49 bool *running, 50 virDomainPausedReason *reason); 51 52 int qemuMonitorJSONSystemPowerdown(qemuMonitor *mon); 53 int qemuMonitorJSONSystemReset(qemuMonitor *mon); 54 55 int qemuMonitorJSONQueryCPUs(qemuMonitor *mon, 56 struct qemuMonitorQueryCpusEntry **entries, 57 size_t *nentries, 58 bool force, 59 bool fast); 60 int qemuMonitorJSONUpdateVideoMemorySize(qemuMonitor *mon, 61 virDomainVideoDef *video, 62 char *path); 63 int qemuMonitorJSONUpdateVideoVram64Size(qemuMonitor *mon, 64 virDomainVideoDef *video, 65 char *path); 66 int qemuMonitorJSONGetBalloonInfo(qemuMonitor *mon, 67 unsigned long long *currmem); 68 int qemuMonitorJSONGetMemoryStats(qemuMonitor *mon, 69 char *balloonpath, 70 virDomainMemoryStatPtr stats, 71 unsigned int nr_stats); 72 int qemuMonitorJSONSetMemoryStatsPeriod(qemuMonitor *mon, 73 char *balloonpath, 74 int period); 75 int qemuMonitorJSONGetBlockInfo(qemuMonitor *mon, 76 GHashTable *table); 77 78 virJSONValue *qemuMonitorJSONQueryBlockstats(qemuMonitor *mon, 79 bool queryNodes); 80 int qemuMonitorJSONGetAllBlockStatsInfo(qemuMonitor *mon, 81 GHashTable *hash); 82 int qemuMonitorJSONBlockStatsUpdateCapacity(qemuMonitor *mon, 83 GHashTable *stats); 84 int qemuMonitorJSONBlockStatsUpdateCapacityBlockdev(qemuMonitor *mon, 85 GHashTable *stats); 86 87 GHashTable * 88 qemuMonitorJSONBlockGetNamedNodeDataJSON(virJSONValue *nodes); 89 90 GHashTable * 91 qemuMonitorJSONBlockGetNamedNodeData(qemuMonitor *mon, 92 bool supports_flat); 93 94 int qemuMonitorJSONBlockResize(qemuMonitor *mon, 95 const char *device, 96 const char *nodename, 97 unsigned long long size); 98 99 int qemuMonitorJSONSetPassword(qemuMonitor *mon, 100 const char *protocol, 101 const char *password, 102 const char *action_if_connected); 103 int qemuMonitorJSONExpirePassword(qemuMonitor *mon, 104 const char *protocol, 105 const char *expire_time); 106 int qemuMonitorJSONSetBalloon(qemuMonitor *mon, 107 unsigned long long newmem); 108 109 int qemuMonitorJSONEjectMedia(qemuMonitor *mon, 110 const char *dev_name, 111 bool force); 112 int qemuMonitorJSONChangeMedia(qemuMonitor *mon, 113 const char *dev_name, 114 const char *newmedia, 115 const char *format); 116 117 118 int qemuMonitorJSONSaveVirtualMemory(qemuMonitor *mon, 119 unsigned long long offset, 120 unsigned long long length, 121 const char *path); 122 int qemuMonitorJSONSavePhysicalMemory(qemuMonitor *mon, 123 unsigned long long offset, 124 unsigned long long length, 125 const char *path); 126 127 int qemuMonitorJSONSetMigrationSpeed(qemuMonitor *mon, 128 unsigned long bandwidth); 129 130 int qemuMonitorJSONSetMigrationDowntime(qemuMonitor *mon, 131 unsigned long long downtime); 132 133 int qemuMonitorJSONGetMigrationCacheSize(qemuMonitor *mon, 134 unsigned long long *cacheSize); 135 int qemuMonitorJSONSetMigrationCacheSize(qemuMonitor *mon, 136 unsigned long long cacheSize); 137 138 int qemuMonitorJSONGetMigrationParams(qemuMonitor *mon, 139 virJSONValue **params); 140 int qemuMonitorJSONSetMigrationParams(qemuMonitor *mon, 141 virJSONValue **params); 142 143 int qemuMonitorJSONGetMigrationStats(qemuMonitor *mon, 144 qemuMonitorMigrationStats *stats, 145 char **error); 146 147 int qemuMonitorJSONGetMigrationCapabilities(qemuMonitor *mon, 148 char ***capabilities); 149 int qemuMonitorJSONSetMigrationCapabilities(qemuMonitor *mon, 150 virJSONValue **caps); 151 152 int qemuMonitorJSONGetGICCapabilities(qemuMonitor *mon, 153 virGICCapability **capabilities); 154 155 int qemuMonitorJSONGetSEVCapabilities(qemuMonitor *mon, 156 virSEVCapability **capabilities); 157 158 int qemuMonitorJSONMigrate(qemuMonitor *mon, 159 unsigned int flags, 160 const char *uri); 161 int qemuMonitorJSONGetSpiceMigrationStatus(qemuMonitor *mon, 162 bool *spice_migrated); 163 164 165 int qemuMonitorJSONMigrateCancel(qemuMonitor *mon); 166 167 int qemuMonitorJSONQueryDump(qemuMonitor *mon, 168 qemuMonitorDumpStats *stats); 169 170 int qemuMonitorJSONGetDumpGuestMemoryCapability(qemuMonitor *mon, 171 const char *capability); 172 173 int qemuMonitorJSONDump(qemuMonitor *mon, 174 const char *protocol, 175 const char *dumpformat, 176 bool detach); 177 178 int qemuMonitorJSONGraphicsRelocate(qemuMonitor *mon, 179 int type, 180 const char *hostname, 181 int port, 182 int tlsPort, 183 const char *tlsSubject); 184 185 int qemuMonitorJSONAddPCIHostDevice(qemuMonitor *mon, 186 virPCIDeviceAddress *hostAddr, 187 virPCIDeviceAddress *guestAddr); 188 189 int qemuMonitorJSONAddPCIDisk(qemuMonitor *mon, 190 const char *path, 191 const char *bus, 192 virPCIDeviceAddress *guestAddr); 193 194 int qemuMonitorJSONAddPCINetwork(qemuMonitor *mon, 195 const char *nicstr, 196 virPCIDeviceAddress *guestAddr); 197 198 int qemuMonitorJSONRemovePCIDevice(qemuMonitor *mon, 199 virPCIDeviceAddress *guestAddr); 200 201 int qemuMonitorJSONAddFileHandleToSet(qemuMonitor *mon, 202 int fd, 203 int fdset, 204 const char *opaque, 205 qemuMonitorAddFdInfo *info); 206 207 int qemuMonitorJSONRemoveFdset(qemuMonitor *mon, 208 int fdset); 209 210 int qemuMonitorJSONQueryFdsets(qemuMonitor *mon, 211 qemuMonitorFdsets **fdsets); 212 213 int qemuMonitorJSONSendFileHandle(qemuMonitor *mon, 214 const char *fdname, 215 int fd); 216 217 int qemuMonitorJSONCloseFileHandle(qemuMonitor *mon, 218 const char *fdname); 219 220 int qemuMonitorJSONAddNetdev(qemuMonitor *mon, 221 virJSONValue **props); 222 223 int qemuMonitorJSONRemoveNetdev(qemuMonitor *mon, 224 const char *alias); 225 226 int qemuMonitorJSONQueryRxFilter(qemuMonitor *mon, const char *alias, 227 virNetDevRxFilter **filter); 228 229 int qemuMonitorJSONGetChardevInfo(qemuMonitor *mon, 230 GHashTable *info); 231 232 int qemuMonitorJSONAttachPCIDiskController(qemuMonitor *mon, 233 const char *bus, 234 virPCIDeviceAddress *guestAddr); 235 236 int qemuMonitorJSONAddDeviceProps(qemuMonitor *mon, 237 virJSONValue **props); 238 239 int qemuMonitorJSONDelDevice(qemuMonitor *mon, 240 const char *devalias); 241 242 int qemuMonitorJSONAddObject(qemuMonitor *mon, 243 virJSONValue **props); 244 245 int qemuMonitorJSONDelObject(qemuMonitor *mon, 246 const char *objalias, 247 bool report_error); 248 249 int qemuMonitorJSONTransaction(qemuMonitor *mon, virJSONValue **actions) 250 ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); 251 int qemuMonitorJSONDriveMirror(qemuMonitor *mon, 252 const char *device, 253 const char *file, 254 const char *format, 255 unsigned long long speed, 256 unsigned int granularity, 257 unsigned long long buf_size, 258 bool shallow, 259 bool reuse) 260 ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3); 261 int qemuMonitorJSONBlockdevMirror(qemuMonitor *mon, 262 const char *jobname, 263 bool persistjob, 264 const char *device, 265 const char *target, 266 unsigned long long speed, 267 unsigned int granularity, 268 unsigned long long buf_size, 269 bool shallow) 270 ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(4) ATTRIBUTE_NONNULL(5); 271 int qemuMonitorJSONDrivePivot(qemuMonitor *mon, 272 const char *jobname) 273 ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); 274 275 int qemuMonitorJSONBlockCommit(qemuMonitor *mon, 276 const char *device, 277 const char *jobname, 278 bool persistjob, 279 const char *top, 280 const char *topNode, 281 const char *base, 282 const char *baseNode, 283 const char *backingName, 284 unsigned long long bandwidth) 285 ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); 286 287 char *qemuMonitorJSONDiskNameLookup(qemuMonitor *mon, 288 const char *device, 289 virStorageSource *top, 290 virStorageSource *target) 291 ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3) 292 ATTRIBUTE_NONNULL(4); 293 294 int qemuMonitorJSONArbitraryCommand(qemuMonitor *mon, 295 const char *cmd_str, 296 char **reply_str); 297 298 int qemuMonitorJSONInjectNMI(qemuMonitor *mon); 299 300 int qemuMonitorJSONSendKey(qemuMonitor *mon, 301 unsigned int holdtime, 302 unsigned int *keycodes, 303 unsigned int nkeycodes); 304 305 int qemuMonitorJSONScreendump(qemuMonitor *mon, 306 const char *device, 307 unsigned int head, 308 const char *file); 309 310 int qemuMonitorJSONBlockStream(qemuMonitor *mon, 311 const char *device, 312 const char *jobname, 313 bool persistjob, 314 const char *base, 315 const char *baseNode, 316 const char *backingName, 317 unsigned long long speed) 318 ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); 319 320 int qemuMonitorJSONBlockJobCancel(qemuMonitor *mon, 321 const char *jobname, 322 bool force) 323 ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); 324 325 int 326 qemuMonitorJSONGetJobInfo(qemuMonitor *mon, 327 qemuMonitorJobInfo ***jobs, 328 size_t *njobs); 329 330 331 int qemuMonitorJSONBlockJobSetSpeed(qemuMonitor *mon, 332 const char *jobname, 333 unsigned long long speed) 334 ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); 335 336 GHashTable *qemuMonitorJSONGetAllBlockJobInfo(qemuMonitor *mon, 337 bool rawjobname) 338 ATTRIBUTE_NONNULL(1); 339 340 int qemuMonitorJSONJobDismiss(qemuMonitor *mon, 341 const char *jobname) 342 ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); 343 344 int qemuMonitorJSONJobComplete(qemuMonitor *mon, 345 const char *jobname) 346 ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); 347 348 int qemuMonitorJSONSetLink(qemuMonitor *mon, 349 const char *name, 350 virDomainNetInterfaceLinkState state); 351 352 int qemuMonitorJSONOpenGraphics(qemuMonitor *mon, 353 const char *protocol, 354 const char *fdname, 355 bool skipauth); 356 357 int qemuMonitorJSONSetBlockIoThrottle(qemuMonitor *mon, 358 const char *drivealias, 359 const char *qomid, 360 virDomainBlockIoTuneInfo *info); 361 362 int qemuMonitorJSONGetBlockIoThrottle(qemuMonitor *mon, 363 const char *drivealias, 364 const char *qdevid, 365 virDomainBlockIoTuneInfo *reply); 366 367 int qemuMonitorJSONSystemWakeup(qemuMonitor *mon); 368 369 char *qemuMonitorJSONGetSEVMeasurement(qemuMonitor *mon); 370 371 int qemuMonitorJSONGetVersion(qemuMonitor *mon, 372 int *major, 373 int *minor, 374 int *micro, 375 char **package) 376 ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(4); 377 378 int qemuMonitorJSONGetMachines(qemuMonitor *mon, 379 qemuMonitorMachineInfo ***machines) 380 ATTRIBUTE_NONNULL(2); 381 382 int qemuMonitorJSONGetCPUDefinitions(qemuMonitor *mon, 383 qemuMonitorCPUDefs **cpuDefs) 384 ATTRIBUTE_NONNULL(2); 385 386 int qemuMonitorJSONGetCPUModelExpansion(qemuMonitor *mon, 387 qemuMonitorCPUModelExpansionType type, 388 virCPUDef *cpu, 389 bool migratable, 390 bool fail_no_props, 391 qemuMonitorCPUModelInfo **model_info) 392 ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(6); 393 394 int qemuMonitorJSONGetCPUModelBaseline(qemuMonitor *mon, 395 virCPUDef *cpu_a, 396 virCPUDef *cpu_b, 397 qemuMonitorCPUModelInfo **baseline) 398 ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(4); 399 400 int qemuMonitorJSONGetCPUModelComparison(qemuMonitor *mon, 401 virCPUDef *cpu_a, 402 virCPUDef *cpu_b, 403 char **result) 404 ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3); 405 406 int qemuMonitorJSONGetCommands(qemuMonitor *mon, 407 char ***commands) 408 ATTRIBUTE_NONNULL(2); 409 GHashTable *qemuMonitorJSONGetCommandLineOptions(qemuMonitor *mon); 410 411 int qemuMonitorJSONGetKVMState(qemuMonitor *mon, 412 bool *enabled, 413 bool *present) 414 ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3); 415 416 int qemuMonitorJSONGetNVMMState(qemuMonitor *mon, 417 bool *enabled, 418 bool *present) 419 ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3); 420 421 int qemuMonitorJSONGetObjectTypes(qemuMonitor *mon, 422 char ***types) 423 ATTRIBUTE_NONNULL(2); 424 425 /* ListPath structures and API's are public only for qemumonitorjsontest */ 426 typedef struct _qemuMonitorJSONListPath qemuMonitorJSONListPath; 427 struct _qemuMonitorJSONListPath { 428 char *name; 429 char *type; 430 }; 431 432 int qemuMonitorJSONGetObjectListPaths(qemuMonitor *mon, 433 const char *path, 434 qemuMonitorJSONListPath ***paths) 435 ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3); 436 437 void qemuMonitorJSONListPathFree(qemuMonitorJSONListPath *paths); 438 439 /* ObjectProperty structures and Get/Set API's are public only 440 * for qemumonitorjsontest 441 */ 442 /* Flags for the 'type' field in _qemuMonitorJSONObjectProperty */ 443 typedef enum { 444 QEMU_MONITOR_OBJECT_PROPERTY_BOOLEAN=1, 445 QEMU_MONITOR_OBJECT_PROPERTY_INT, 446 QEMU_MONITOR_OBJECT_PROPERTY_LONG, 447 QEMU_MONITOR_OBJECT_PROPERTY_UINT, 448 QEMU_MONITOR_OBJECT_PROPERTY_ULONG, 449 QEMU_MONITOR_OBJECT_PROPERTY_DOUBLE, 450 QEMU_MONITOR_OBJECT_PROPERTY_STRING, 451 452 QEMU_MONITOR_OBJECT_PROPERTY_LAST 453 } qemuMonitorJSONObjectPropertyType; 454 455 typedef struct _qemuMonitorJSONObjectProperty qemuMonitorJSONObjectProperty; 456 struct _qemuMonitorJSONObjectProperty { 457 int type; /* qemuMonitorJSONObjectPropertyType */ 458 union { 459 bool b; 460 int iv; 461 long long l; 462 unsigned int ui; 463 unsigned long long ul; 464 double d; 465 char *str; 466 } val; 467 }; 468 469 int qemuMonitorJSONGetObjectProperty(qemuMonitor *mon, 470 const char *path, 471 const char *property, 472 qemuMonitorJSONObjectProperty *prop) 473 ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(4); 474 475 int qemuMonitorJSONSetObjectProperty(qemuMonitor *mon, 476 const char *path, 477 const char *property, 478 qemuMonitorJSONObjectProperty *prop) 479 ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(4); 480 481 GHashTable *qemuMonitorJSONGetDeviceProps(qemuMonitor *mon, 482 const char *device) 483 ATTRIBUTE_NONNULL(2); 484 int qemuMonitorJSONGetObjectProps(qemuMonitor *mon, 485 const char *object, 486 char ***props) 487 ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3); 488 char *qemuMonitorJSONGetTargetArch(qemuMonitor *mon); 489 490 int qemuMonitorJSONNBDServerStart(qemuMonitor *mon, 491 const virStorageNetHostDef *server, 492 const char *tls_alias); 493 int qemuMonitorJSONNBDServerAdd(qemuMonitor *mon, 494 const char *deviceID, 495 const char *export, 496 bool writable, 497 const char *bitmap); 498 int qemuMonitorJSONNBDServerStop(qemuMonitor *mon); 499 500 int qemuMonitorJSONBlockExportAdd(qemuMonitor *mon, 501 virJSONValue **props); 502 503 int qemuMonitorJSONGetTPMModels(qemuMonitor *mon, 504 char ***tpmmodels) 505 ATTRIBUTE_NONNULL(2); 506 507 int qemuMonitorJSONGetTPMTypes(qemuMonitor *mon, 508 char ***tpmtypes) 509 ATTRIBUTE_NONNULL(2); 510 511 int qemuMonitorJSONAttachCharDev(qemuMonitor *mon, 512 const char *chrID, 513 virDomainChrSourceDef *chr); 514 int qemuMonitorJSONDetachCharDev(qemuMonitor *mon, 515 const char *chrID); 516 517 int qemuMonitorJSONGetDeviceAliases(qemuMonitor *mon, 518 char ***aliases); 519 520 int qemuMonitorJSONGetCPUx86Data(qemuMonitor *mon, 521 const char *property, 522 virCPUData **cpudata); 523 524 int qemuMonitorJSONGetGuestCPUx86(qemuMonitor *mon, 525 virCPUData **data, 526 virCPUData **disabled); 527 528 int qemuMonitorJSONGetGuestCPU(qemuMonitor *mon, 529 virArch arch, 530 qemuMonitorCPUFeatureTranslationCallback translate, 531 void *opaque, 532 virCPUData **enabled, 533 virCPUData **disabled); 534 535 int qemuMonitorJSONRTCResetReinjection(qemuMonitor *mon); 536 537 int qemuMonitorJSONGetIOThreads(qemuMonitor *mon, 538 qemuMonitorIOThreadInfo ***iothreads, 539 int *niothreads) 540 ATTRIBUTE_NONNULL(2); 541 542 int qemuMonitorJSONSetIOThread(qemuMonitor *mon, 543 qemuMonitorIOThreadInfo *iothreadInfo) 544 ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); 545 546 int qemuMonitorJSONGetMemoryDeviceInfo(qemuMonitor *mon, 547 GHashTable *info) 548 ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); 549 550 int qemuMonitorJSONFindLinkPath(qemuMonitor *mon, 551 const char *name, 552 const char *alias, 553 char **path) 554 ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(4); 555 556 int qemuMonitorJSONMigrateIncoming(qemuMonitor *mon, 557 const char *uri) 558 ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); 559 560 int qemuMonitorJSONMigrateStartPostCopy(qemuMonitor *mon) 561 ATTRIBUTE_NONNULL(1); 562 563 int qemuMonitorJSONMigrateContinue(qemuMonitor *mon, 564 qemuMonitorMigrationStatus status) 565 ATTRIBUTE_NONNULL(1); 566 567 int qemuMonitorJSONGetRTCTime(qemuMonitor *mon, 568 struct tm *tm) 569 ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); 570 571 int qemuMonitorJSONGetHotpluggableCPUs(qemuMonitor *mon, 572 struct qemuMonitorQueryHotpluggableCpusEntry **entries, 573 size_t *nentries) 574 ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3); 575 576 virJSONValue *qemuMonitorJSONQueryQMPSchema(qemuMonitor *mon) 577 ATTRIBUTE_NONNULL(1); 578 579 int qemuMonitorJSONSetBlockThreshold(qemuMonitor *mon, 580 const char *nodename, 581 unsigned long long threshold) 582 ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); 583 584 virJSONValue *qemuMonitorJSONQueryNamedBlockNodes(qemuMonitor *mon, 585 bool flat) 586 ATTRIBUTE_NONNULL(1); 587 588 int qemuMonitorJSONSetWatchdogAction(qemuMonitor *mon, 589 const char *action) 590 ATTRIBUTE_NONNULL(1); 591 592 int qemuMonitorJSONBlockdevCreate(qemuMonitor *mon, 593 const char *jobname, 594 virJSONValue *props) 595 ATTRIBUTE_NONNULL(1); 596 597 int qemuMonitorJSONBlockdevAdd(qemuMonitor *mon, 598 virJSONValue **props) 599 ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); 600 601 int qemuMonitorJSONBlockdevReopen(qemuMonitor *mon, 602 virJSONValue **props) 603 ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); 604 605 int qemuMonitorJSONBlockdevDel(qemuMonitor *mon, 606 const char *nodename) 607 ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); 608 609 int qemuMonitorJSONBlockdevTrayOpen(qemuMonitor *mon, 610 const char *id, 611 bool force) 612 ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); 613 614 int qemuMonitorJSONBlockdevTrayClose(qemuMonitor *mon, 615 const char *id) 616 ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); 617 618 int qemuMonitorJSONBlockdevMediumRemove(qemuMonitor *mon, 619 const char *id) 620 ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); 621 622 int qemuMonitorJSONBlockdevMediumInsert(qemuMonitor *mon, 623 const char *id, 624 const char *nodename) 625 ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3); 626 627 int qemuMonitorJSONGetPRManagerInfo(qemuMonitor *mon, 628 GHashTable *info) 629 ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); 630 631 int 632 qemuMonitorJSONGetCurrentMachineInfo(qemuMonitor *mon, 633 qemuMonitorCurrentMachineInfo *info) 634 ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); 635 636 int 637 qemuMonitorJSONTransactionBitmapAdd(virJSONValue *actions, 638 const char *node, 639 const char *name, 640 bool persistent, 641 bool disabled, 642 unsigned long long granularity); 643 int 644 qemuMonitorJSONTransactionBitmapRemove(virJSONValue *actions, 645 const char *node, 646 const char *name); 647 648 int 649 qemuMonitorJSONBitmapRemove(qemuMonitor *mon, 650 const char *node, 651 const char *name); 652 653 int 654 qemuMonitorJSONTransactionBitmapEnable(virJSONValue *actions, 655 const char *node, 656 const char *name); 657 int 658 qemuMonitorJSONTransactionBitmapDisable(virJSONValue *actions, 659 const char *node, 660 const char *name); 661 int 662 qemuMonitorJSONTransactionBitmapMerge(virJSONValue *actions, 663 const char *node, 664 const char *target, 665 virJSONValue **sources); 666 667 int 668 qemuMonitorJSONTransactionBitmapMergeSourceAddBitmap(virJSONValue *sources, 669 const char *sourcenode, 670 const char *sourcebitmap); 671 672 int 673 qemuMonitorJSONTransactionSnapshotLegacy(virJSONValue *actions, 674 const char *device, 675 const char *path, 676 const char *format, 677 bool existing); 678 int 679 qemuMonitorJSONTransactionSnapshotBlockdev(virJSONValue *actions, 680 const char *node, 681 const char *overlay); 682 683 int 684 qemuMonitorJSONTransactionBackup(virJSONValue *actions, 685 const char *device, 686 const char *jobname, 687 const char *target, 688 const char *bitmap, 689 qemuMonitorTransactionBackupSyncMode syncmode); 690 691 int qemuMonitorJSONSetDBusVMStateIdList(qemuMonitor *mon, 692 const char *vmstatepath, 693 const char *idstr) 694 ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3); 695 696 int 697 qemuMonitorJSONGetCPUMigratable(qemuMonitor *mon, 698 bool *migratable); 699 700 int 701 qemuMonitorJSONStartDirtyRateCalc(qemuMonitor *mon, 702 int seconds); 703 704 int 705 qemuMonitorJSONQueryDirtyRate(qemuMonitor *mon, 706 qemuMonitorDirtyRateInfo *info); 707 708 int 709 qemuMonitorJSONSetAction(qemuMonitor *mon, 710 qemuMonitorActionShutdown shutdown, 711 qemuMonitorActionReboot reboot, 712 qemuMonitorActionWatchdog watchdog, 713 qemuMonitorActionPanic panic); 714 715 int 716 qemuMonitorJSONChangeMemoryRequestedSize(qemuMonitor *mon, 717 const char *alias, 718 unsigned long long requestedsize); 719