2009-09-22 18:48:40 +01:00
|
|
|
/*
|
|
|
|
* qemu_monitor_text.h: interaction with QEMU monitor console
|
|
|
|
*
|
|
|
|
* Copyright (C) 2006-2009 Red Hat, Inc.
|
|
|
|
* 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
|
|
|
|
* License along with this library; if not, write to the Free Software
|
|
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
|
|
*
|
|
|
|
* Author: Daniel P. Berrange <berrange@redhat.com>
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef QEMU_MONITOR_TEXT_H
|
|
|
|
#define QEMU_MONITOR_TEXT_H
|
|
|
|
|
|
|
|
#include "internal.h"
|
|
|
|
|
2009-10-09 21:13:06 +01:00
|
|
|
#include "qemu_monitor.h"
|
2009-12-14 10:50:01 +01:00
|
|
|
#include "hash.h"
|
2009-10-09 21:13:06 +01:00
|
|
|
|
Fully asynchronous monitor I/O processing
Change the QEMU monitor file handle watch to poll for both
read & write events, as well as EOF. All I/O to/from the
QEMU monitor FD is now done in the event callback thread.
When the QEMU driver needs to send a command, it puts the
data to be sent into a qemuMonitorMessagePtr object instance,
queues it for dispatch, and then goes to sleep on a condition
variable. The event thread sends all the data, and then waits
for the reply to arrive, putting the response / error data
back into the qemuMonitorMessagePtr and notifying the condition
variable.
There is a temporary hack in the disk passphrase callback to
avoid acquiring the domain lock. This avoids a deadlock in
the command processing, since the domain lock is still held
when running monitor commands. The next commit will remove
the locking when running commands & thus allow re-introduction
of locking the disk passphrase callback
* src/qemu/qemu_driver.c: Temporarily don't acquire lock in
disk passphrase callback. To be reverted in next commit
* src/qemu/qemu_monitor.c, src/qemu/qemu_monitor.h: Remove
raw I/O functions, and a generic qemuMonitorSend() for
invoking a command
* src/qemu/qemu_monitor_text.c, src/qemu/qemu_monitor_text.h:
Remove all low level I/O, and use the new qemuMonitorSend()
API. Provide a qemuMonitorTextIOProcess() method for detecting
command/reply/prompt boundaries in the monitor data stream
2009-10-14 18:40:51 +01:00
|
|
|
int qemuMonitorTextIOProcess(qemuMonitorPtr mon,
|
|
|
|
const char *data,
|
|
|
|
size_t len,
|
|
|
|
qemuMonitorMessagePtr msg);
|
|
|
|
|
2009-10-09 21:13:06 +01:00
|
|
|
int qemuMonitorTextStartCPUs(qemuMonitorPtr mon,
|
|
|
|
virConnectPtr conn);
|
|
|
|
int qemuMonitorTextStopCPUs(qemuMonitorPtr mon);
|
|
|
|
|
|
|
|
int qemuMonitorTextSystemPowerdown(qemuMonitorPtr mon);
|
|
|
|
|
|
|
|
int qemuMonitorTextGetCPUInfo(qemuMonitorPtr mon,
|
|
|
|
int **pids);
|
|
|
|
int qemuMonitorTextGetBalloonInfo(qemuMonitorPtr mon,
|
|
|
|
unsigned long *currmem);
|
|
|
|
int qemuMonitorTextGetBlockStatsInfo(qemuMonitorPtr mon,
|
|
|
|
const char *devname,
|
|
|
|
long long *rd_req,
|
|
|
|
long long *rd_bytes,
|
|
|
|
long long *wr_req,
|
|
|
|
long long *wr_bytes,
|
|
|
|
long long *errs);
|
|
|
|
|
|
|
|
|
|
|
|
int qemuMonitorTextSetVNCPassword(qemuMonitorPtr mon,
|
|
|
|
const char *password);
|
|
|
|
int qemuMonitorTextSetBalloon(qemuMonitorPtr mon,
|
|
|
|
unsigned long newmem);
|
|
|
|
|
|
|
|
int qemuMonitorTextEjectMedia(qemuMonitorPtr mon,
|
|
|
|
const char *devname);
|
|
|
|
int qemuMonitorTextChangeMedia(qemuMonitorPtr mon,
|
|
|
|
const char *devname,
|
2009-11-26 13:48:17 +00:00
|
|
|
const char *newmedia,
|
|
|
|
const char *format);
|
2009-10-09 21:13:06 +01:00
|
|
|
|
|
|
|
|
|
|
|
int qemuMonitorTextSaveVirtualMemory(qemuMonitorPtr mon,
|
|
|
|
unsigned long long offset,
|
|
|
|
size_t length,
|
|
|
|
const char *path);
|
|
|
|
int qemuMonitorTextSavePhysicalMemory(qemuMonitorPtr mon,
|
|
|
|
unsigned long long offset,
|
|
|
|
size_t length,
|
|
|
|
const char *path);
|
|
|
|
|
|
|
|
int qemuMonitorTextSetMigrationSpeed(qemuMonitorPtr mon,
|
|
|
|
unsigned long bandwidth);
|
|
|
|
|
|
|
|
int qemuMonitorTextGetMigrationStatus(qemuMonitorPtr mon,
|
|
|
|
int *status,
|
|
|
|
unsigned long long *transferred,
|
|
|
|
unsigned long long *remaining,
|
|
|
|
unsigned long long *total);
|
|
|
|
|
|
|
|
int qemuMonitorTextMigrateToHost(qemuMonitorPtr mon,
|
|
|
|
int background,
|
|
|
|
const char *hostname,
|
|
|
|
int port);
|
|
|
|
|
|
|
|
int qemuMonitorTextMigrateToCommand(qemuMonitorPtr mon,
|
|
|
|
int background,
|
|
|
|
const char * const *argv,
|
|
|
|
const char *target);
|
|
|
|
|
|
|
|
int qemuMonitorTextMigrateToUnix(qemuMonitorPtr mon,
|
|
|
|
int background,
|
|
|
|
const char *unixfile);
|
|
|
|
|
|
|
|
int qemuMonitorTextMigrateCancel(qemuMonitorPtr mon);
|
|
|
|
|
|
|
|
int qemuMonitorTextAddUSBDisk(qemuMonitorPtr mon,
|
|
|
|
const char *path);
|
|
|
|
|
|
|
|
int qemuMonitorTextAddUSBDeviceExact(qemuMonitorPtr mon,
|
|
|
|
int bus,
|
|
|
|
int dev);
|
|
|
|
int qemuMonitorTextAddUSBDeviceMatch(qemuMonitorPtr mon,
|
|
|
|
int vendor,
|
|
|
|
int product);
|
|
|
|
|
|
|
|
|
|
|
|
int qemuMonitorTextAddPCIHostDevice(qemuMonitorPtr mon,
|
|
|
|
unsigned hostDomain,
|
|
|
|
unsigned hostBus,
|
|
|
|
unsigned hostSlot,
|
|
|
|
unsigned hostFunction,
|
|
|
|
unsigned *guestDomain,
|
|
|
|
unsigned *guestBus,
|
|
|
|
unsigned *guestSlot);
|
|
|
|
|
|
|
|
int qemuMonitorTextAddPCIDisk(qemuMonitorPtr mon,
|
|
|
|
const char *path,
|
|
|
|
const char *bus,
|
|
|
|
unsigned *guestDomain,
|
|
|
|
unsigned *guestBus,
|
|
|
|
unsigned *guestSlot);
|
|
|
|
|
|
|
|
int qemuMonitorTextAddPCINetwork(qemuMonitorPtr mon,
|
|
|
|
const char *nicstr,
|
|
|
|
unsigned *guestDomain,
|
|
|
|
unsigned *guestBus,
|
|
|
|
unsigned *guestSlot);
|
|
|
|
|
|
|
|
int qemuMonitorTextRemovePCIDevice(qemuMonitorPtr mon,
|
|
|
|
unsigned guestDomain,
|
|
|
|
unsigned guestBus,
|
|
|
|
unsigned guestSlot);
|
|
|
|
|
|
|
|
|
|
|
|
int qemuMonitorTextSendFileHandle(qemuMonitorPtr mon,
|
|
|
|
const char *fdname,
|
|
|
|
int fd);
|
|
|
|
|
|
|
|
int qemuMonitorTextCloseFileHandle(qemuMonitorPtr mon,
|
|
|
|
const char *fdname);
|
|
|
|
|
|
|
|
int qemuMonitorTextAddHostNetwork(qemuMonitorPtr mon,
|
|
|
|
const char *netstr);
|
|
|
|
|
|
|
|
int qemuMonitorTextRemoveHostNetwork(qemuMonitorPtr mon,
|
|
|
|
int vlan,
|
|
|
|
const char *netname);
|
2009-09-23 17:32:50 +01:00
|
|
|
|
2009-12-14 10:50:01 +01:00
|
|
|
int qemuMonitorTextGetPtyPaths(qemuMonitorPtr mon,
|
|
|
|
virHashTablePtr paths);
|
|
|
|
|
2009-09-23 11:49:14 +01:00
|
|
|
#endif /* QEMU_MONITOR_TEXT_H */
|