qemu_command.h 7.4 KB
Newer Older
1 2 3
/*
 * qemu_command.h: QEMU command generation
 *
4
 * Copyright (C) 2006-2016 Red Hat, Inc.
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/>.
20 21 22 23 24 25 26
 *
 * Author: Daniel P. Berrange <berrange@redhat.com>
 */

#ifndef __QEMU_COMMAND_H__
# define __QEMU_COMMAND_H__

27
# include "domain_addr.h"
28
# include "domain_conf.h"
29
# include "vircommand.h"
30 31
# include "capabilities.h"
# include "qemu_conf.h"
32
# include "qemu_domain.h"
33
# include "qemu_domain_address.h"
34
# include "qemu_capabilities.h"
35
# include "logging/log_manager.h"
36 37 38 39 40 41 42

/* Config type for XML import/export conversions */
# define QEMU_CONFIG_FORMAT_ARGV "qemu-argv"

# define QEMU_DRIVE_HOST_PREFIX "drive-"
# define QEMU_FSDEV_HOST_PREFIX "fsdev-"

43 44
# define QEMU_BLOCK_IOTUNE_MAX 1000000000000000LL

45
VIR_ENUM_DECL(qemuVideo)
46

47 48 49 50
char *qemuBuildObjectCommandlineFromJSON(const char *type,
                                         const char *alias,
                                         virJSONValuePtr props);

51
virCommandPtr qemuBuildCommandLine(virQEMUDriverPtr driver,
52
                                   virLogManagerPtr logManager,
53
                                   virDomainDefPtr def,
54
                                   virDomainChrSourceDefPtr monitor_chr,
55
                                   bool monitor_json,
56
                                   virQEMUCapsPtr qemuCaps,
57
                                   const char *migrateURI,
58
                                   virDomainSnapshotObjPtr snapshot,
59
                                   virNetDevVPortProfileOp vmop,
60
                                   bool standalone,
61
                                   bool enableFips,
62 63
                                   virBitmapPtr nodeset,
                                   size_t *nnicindexes,
64 65 66
                                   int **nicindexes,
                                   const char *domainLibDir,
                                   const char *domainChannelTargetDir)
67
    ATTRIBUTE_NONNULL(15) ATTRIBUTE_NONNULL(16);
68

69 70 71
/* Generate '-device' string for chardev device */
int
qemuBuildChrDeviceStr(char **deviceStr,
72
                      const virDomainDef *vmdef,
73 74
                      virDomainChrDefPtr chr,
                      virQEMUCapsPtr qemuCaps);
75

76
/* With vlan == -1, use netdev syntax, else old hostnet */
77 78 79 80 81
char *qemuBuildHostNetStr(virDomainNetDefPtr net,
                          virQEMUDriverPtr driver,
                          char type_sep,
                          int vlan,
                          char **tapfd,
82
                          size_t tapfdSize,
83
                          char **vhostfd,
84
                          size_t vhostfdSize);
85 86

/* Legacy, pre device support */
87 88 89
char *qemuBuildNicStr(virDomainNetDefPtr net,
                      const char *prefix,
                      int vlan);
90 91

/* Current, best practice */
92 93 94
char *qemuBuildNicDevStr(virDomainDefPtr def,
                         virDomainNetDefPtr net,
                         int vlan,
95
                         unsigned int bootindex,
96
                         size_t vhostfdSize,
97
                         virQEMUCapsPtr qemuCaps);
98

99
char *qemuDeviceDriveHostAlias(virDomainDiskDefPtr disk);
100 101

/* Both legacy & current support */
102
char *qemuBuildDriveStr(virDomainDiskDefPtr disk,
103
                        bool bootable,
104
                        virQEMUCapsPtr qemuCaps);
105 106

/* Current, best practice */
107
char *qemuBuildDriveDevStr(const virDomainDef *def,
108
                           virDomainDiskDefPtr disk,
109
                           unsigned int bootindex,
110
                           virQEMUCapsPtr qemuCaps);
111

112
/* Current, best practice */
113
char *qemuBuildControllerDevStr(const virDomainDef *domainDef,
114 115 116
                                virDomainControllerDefPtr def,
                                virQEMUCapsPtr qemuCaps,
                                int *nusbcontroller);
117

118 119 120 121 122 123 124 125 126 127 128 129
int qemuBuildMemoryBackendStr(unsigned long long size,
                              unsigned long long pagesize,
                              int guestNode,
                              virBitmapPtr userNodeset,
                              virBitmapPtr autoNodeset,
                              virDomainDefPtr def,
                              virQEMUCapsPtr qemuCaps,
                              virQEMUDriverConfigPtr cfg,
                              const char **backendType,
                              virJSONValuePtr *backendProps,
                              bool force);

130
char *qemuBuildMemoryDeviceStr(virDomainMemoryDefPtr mem);
131

132
/* Current, best practice */
133
char *qemuBuildPCIHostdevDevStr(const virDomainDef *def,
134
                                virDomainHostdevDefPtr dev,
135
                                unsigned int bootIndex,
136 137
                                const char *configfd,
                                virQEMUCapsPtr qemuCaps);
138

139
char *qemuBuildRNGDevStr(const virDomainDef *def,
140 141
                         virDomainRNGDefPtr dev,
                         virQEMUCapsPtr qemuCaps);
142 143 144 145
int qemuBuildRNGBackendProps(virDomainRNGDefPtr rng,
                             virQEMUCapsPtr qemuCaps,
                             const char **type,
                             virJSONValuePtr *props);
146

147 148 149
char *qemuBuildShmemDevStr(virDomainDefPtr def,
                           virDomainShmemDefPtr shmem,
                           virQEMUCapsPtr qemuCaps);
150 151 152 153
char *qemuBuildShmemBackendStr(virLogManagerPtr logManager,
                               virCommandPtr cmd,
                               virDomainDefPtr def,
                               virDomainShmemDefPtr shmem,
154 155 156
                               virQEMUCapsPtr qemuCaps);


157 158 159
int qemuOpenPCIConfig(virDomainHostdevDefPtr dev);

/* Current, best practice */
160
char *qemuBuildUSBHostdevDevStr(const virDomainDef *def,
161 162 163
                                virDomainHostdevDefPtr dev,
                                virQEMUCapsPtr qemuCaps);

164
char *qemuBuildSCSIHostdevDrvStr(virDomainHostdevDefPtr dev,
J
Ján Tomko 已提交
165 166
                                 virQEMUCapsPtr qemuCaps);

167
char *qemuBuildSCSIHostdevDevStr(const virDomainDef *def,
168
                                 virDomainHostdevDefPtr dev,
169
                                 virQEMUCapsPtr qemuCaps);
170

171
char *qemuBuildRedirdevDevStr(const virDomainDef *def,
172 173
                              virDomainRedirdevDefPtr dev,
                              virQEMUCapsPtr qemuCaps);
174

175 176
int qemuNetworkPrepareDevices(virDomainDefPtr def);

177
int qemuGetDriveSourceString(virStorageSourcePtr src,
178
                             qemuDomainSecretInfoPtr secinfo,
179
                             char **source);
180 181

int qemuCheckDiskConfig(virDomainDiskDefPtr disk);
182 183 184

bool
qemuCheckFips(void);
185

186
bool qemuCheckCCWS390AddressSupport(const virDomainDef *def,
187 188 189
                                    virDomainDeviceInfo info,
                                    virQEMUCapsPtr qemuCaps,
                                    const char *devicename);
190

191
#endif /* __QEMU_COMMAND_H__*/