qemu_command.h 7.1 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
virCommandPtr qemuBuildCommandLine(virQEMUDriverPtr driver,
48
                                   virLogManagerPtr logManager,
49
                                   virDomainDefPtr def,
50
                                   virDomainChrSourceDefPtr monitor_chr,
51
                                   bool monitor_json,
52
                                   virQEMUCapsPtr qemuCaps,
53
                                   const char *migrateURI,
54
                                   virDomainSnapshotObjPtr snapshot,
55
                                   virNetDevVPortProfileOp vmop,
56
                                   bool standalone,
57
                                   bool enableFips,
58 59
                                   virBitmapPtr nodeset,
                                   size_t *nnicindexes,
60 61 62
                                   int **nicindexes,
                                   const char *domainLibDir,
                                   const char *domainChannelTargetDir)
63
    ATTRIBUTE_NONNULL(15) ATTRIBUTE_NONNULL(16);
64

65 66 67
/* Generate '-device' string for chardev device */
int
qemuBuildChrDeviceStr(char **deviceStr,
68
                      const virDomainDef *vmdef,
69 70
                      virDomainChrDefPtr chr,
                      virQEMUCapsPtr qemuCaps);
71

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

/* Legacy, pre device support */
83 84 85
char *qemuBuildNicStr(virDomainNetDefPtr net,
                      const char *prefix,
                      int vlan);
86 87

/* Current, best practice */
88 89 90
char *qemuBuildNicDevStr(virDomainDefPtr def,
                         virDomainNetDefPtr net,
                         int vlan,
91
                         unsigned int bootindex,
92
                         size_t vhostfdSize,
93
                         virQEMUCapsPtr qemuCaps);
94

95
char *qemuDeviceDriveHostAlias(virDomainDiskDefPtr disk);
96 97

/* Both legacy & current support */
98
char *qemuBuildDriveStr(virDomainDiskDefPtr disk,
99
                        bool bootable,
100
                        virQEMUCapsPtr qemuCaps);
101 102

/* Current, best practice */
103
char *qemuBuildDriveDevStr(const virDomainDef *def,
104
                           virDomainDiskDefPtr disk,
105
                           unsigned int bootindex,
106
                           virQEMUCapsPtr qemuCaps);
107

108
/* Current, best practice */
109
char *qemuBuildControllerDevStr(const virDomainDef *domainDef,
110 111 112
                                virDomainControllerDefPtr def,
                                virQEMUCapsPtr qemuCaps,
                                int *nusbcontroller);
113

114 115 116 117 118 119 120 121 122 123 124 125
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);

126
char *qemuBuildMemoryDeviceStr(virDomainMemoryDefPtr mem);
127

128
/* Current, best practice */
129
char *qemuBuildPCIHostdevDevStr(const virDomainDef *def,
130
                                virDomainHostdevDefPtr dev,
131
                                unsigned int bootIndex,
132 133
                                const char *configfd,
                                virQEMUCapsPtr qemuCaps);
134

135
char *qemuBuildRNGDevStr(const virDomainDef *def,
136 137
                         virDomainRNGDefPtr dev,
                         virQEMUCapsPtr qemuCaps);
138 139 140 141
int qemuBuildRNGBackendProps(virDomainRNGDefPtr rng,
                             virQEMUCapsPtr qemuCaps,
                             const char **type,
                             virJSONValuePtr *props);
142

143 144 145
char *qemuBuildShmemDevStr(virDomainDefPtr def,
                           virDomainShmemDefPtr shmem,
                           virQEMUCapsPtr qemuCaps);
146 147 148 149
char *qemuBuildShmemBackendStr(virLogManagerPtr logManager,
                               virCommandPtr cmd,
                               virDomainDefPtr def,
                               virDomainShmemDefPtr shmem,
150 151 152
                               virQEMUCapsPtr qemuCaps);


153 154 155
int qemuOpenPCIConfig(virDomainHostdevDefPtr dev);

/* Current, best practice */
156
char *qemuBuildUSBHostdevDevStr(const virDomainDef *def,
157 158 159
                                virDomainHostdevDefPtr dev,
                                virQEMUCapsPtr qemuCaps);

160
char *qemuBuildSCSIHostdevDrvStr(virDomainHostdevDefPtr dev);
J
Ján Tomko 已提交
161

162
char *qemuBuildSCSIHostdevDevStr(const virDomainDef *def,
163
                                 virDomainHostdevDefPtr dev,
164
                                 virQEMUCapsPtr qemuCaps);
165

166
char *qemuBuildRedirdevDevStr(const virDomainDef *def,
167 168
                              virDomainRedirdevDefPtr dev,
                              virQEMUCapsPtr qemuCaps);
169

170 171
int qemuNetworkPrepareDevices(virDomainDefPtr def);

172
int qemuGetDriveSourceString(virStorageSourcePtr src,
173
                             qemuDomainSecretInfoPtr secinfo,
174
                             char **source);
175 176

int qemuCheckDiskConfig(virDomainDiskDefPtr disk);
177 178 179

bool
qemuCheckFips(void);
180

181
bool qemuCheckCCWS390AddressSupport(const virDomainDef *def,
182 183 184
                                    virDomainDeviceInfo info,
                                    virQEMUCapsPtr qemuCaps,
                                    const char *devicename);
185

186
#endif /* __QEMU_COMMAND_H__*/