You need to sign in or sign up before continuing.
qemu_agent.h 4.7 KB
Newer Older
D
Daniel P. Berrange 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/*
 * qemu_agent.h: interaction with QEMU guest agent
 *
 * Copyright (C) 2006-2012 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
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 25
#include "internal.h"
#include "domain_conf.h"
D
Daniel P. Berrange 已提交
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

typedef struct _qemuAgent qemuAgent;
typedef qemuAgent *qemuAgentPtr;

typedef struct _qemuAgentCallbacks qemuAgentCallbacks;
typedef qemuAgentCallbacks *qemuAgentCallbacksPtr;
struct _qemuAgentCallbacks {
    void (*destroy)(qemuAgentPtr mon,
                    virDomainObjPtr vm);
    void (*eofNotify)(qemuAgentPtr mon,
                      virDomainObjPtr vm);
    void (*errorNotify)(qemuAgentPtr mon,
                        virDomainObjPtr vm);
};


qemuAgentPtr qemuAgentOpen(virDomainObjPtr vm,
43
                           const virDomainChrSourceDef *config,
D
Daniel P. Berrange 已提交
44 45 46 47
                           qemuAgentCallbacksPtr cb);

void qemuAgentClose(qemuAgentPtr mon);

48 49
void qemuAgentNotifyClose(qemuAgentPtr mon);

50 51 52
typedef enum {
    QEMU_AGENT_EVENT_NONE = 0,
    QEMU_AGENT_EVENT_SHUTDOWN,
53 54
    QEMU_AGENT_EVENT_SUSPEND,
    QEMU_AGENT_EVENT_RESET,
55 56 57 58 59
} qemuAgentEvent;

void qemuAgentNotifyEvent(qemuAgentPtr mon,
                          qemuAgentEvent event);

D
Daniel P. Berrange 已提交
60 61 62 63 64 65 66 67 68 69 70
typedef enum {
    QEMU_AGENT_SHUTDOWN_POWERDOWN,
    QEMU_AGENT_SHUTDOWN_REBOOT,
    QEMU_AGENT_SHUTDOWN_HALT,

    QEMU_AGENT_SHUTDOWN_LAST,
} qemuAgentShutdownMode;

int qemuAgentShutdown(qemuAgentPtr mon,
                      qemuAgentShutdownMode mode);

71 72
int qemuAgentFSFreeze(qemuAgentPtr mon,
                      const char **mountpoints, unsigned int nmountpoints);
73
int qemuAgentFSThaw(qemuAgentPtr mon);
74 75
int qemuAgentGetFSInfo(qemuAgentPtr mon, virDomainFSInfoPtr **info,
                       virDomainDefPtr vmdef);
76

77 78 79 80 81
int qemuAgentGetFSInfoParams(qemuAgentPtr mon,
                             virTypedParameterPtr *params,
                             int *nparams, int *maxparams,
                             virDomainDefPtr vmdef);

82 83
int qemuAgentSuspend(qemuAgentPtr mon,
                     unsigned int target);
84 85 86 87 88

int qemuAgentArbitraryCommand(qemuAgentPtr mon,
                              const char *cmd,
                              char **result,
                              int timeout);
M
Michal Privoznik 已提交
89 90
int qemuAgentFSTrim(qemuAgentPtr mon,
                    unsigned long long minimum);
91 92 93 94 95 96 97 98


typedef struct _qemuAgentCPUInfo qemuAgentCPUInfo;
typedef qemuAgentCPUInfo *qemuAgentCPUInfoPtr;
struct _qemuAgentCPUInfo {
    unsigned int id;    /* logical cpu ID */
    bool online;        /* true if the CPU is activated */
    bool offlinable;    /* true if the CPU can be offlined */
99 100

    bool modified; /* set to true if the vcpu state needs to be changed */
101 102 103 104
};

int qemuAgentGetVCPUs(qemuAgentPtr mon, qemuAgentCPUInfoPtr *info);
int qemuAgentSetVCPUs(qemuAgentPtr mon, qemuAgentCPUInfoPtr cpus, size_t ncpus);
105 106 107
int qemuAgentUpdateCPUInfo(unsigned int nvcpus,
                           qemuAgentCPUInfoPtr cpuinfo,
                           int ncpuinfo);
108

109 110 111 112
int
qemuAgentGetHostname(qemuAgentPtr mon,
                     char **hostname);

113 114 115 116 117 118 119
int qemuAgentGetTime(qemuAgentPtr mon,
                     long long *seconds,
                     unsigned int *nseconds);
int qemuAgentSetTime(qemuAgentPtr mon,
                     long long seconds,
                     unsigned int nseconds,
                     bool sync);
120 121 122 123

int qemuAgentGetInterfaces(qemuAgentPtr mon,
                           virDomainInterfacePtr **ifaces);

124 125 126 127
int qemuAgentSetUserPassword(qemuAgentPtr mon,
                             const char *user,
                             const char *password,
                             bool crypted);
128 129 130 131 132

int qemuAgentGetUsers(qemuAgentPtr mon,
                      virTypedParameterPtr *params,
                      int *nparams,
                      int *maxparams);
133 134 135 136 137

int qemuAgentGetOSInfo(qemuAgentPtr mon,
                       virTypedParameterPtr *params,
                       int *nparams,
                       int *maxparams);
138 139 140 141 142

int qemuAgentGetTimezone(qemuAgentPtr mon,
                         virTypedParameterPtr *params,
                         int *nparams,
                         int *maxparams);