};
-typedef struct _qemuFirmwareMappingKernel qemuFirmwareMappingKernel;
-struct _qemuFirmwareMappingKernel {
- char *filename;
-};
-
-
typedef struct _qemuFirmwareMappingMemory qemuFirmwareMappingMemory;
struct _qemuFirmwareMappingMemory {
char *filename;
typedef enum {
QEMU_FIRMWARE_DEVICE_NONE = 0,
QEMU_FIRMWARE_DEVICE_FLASH,
- QEMU_FIRMWARE_DEVICE_KERNEL,
QEMU_FIRMWARE_DEVICE_MEMORY,
QEMU_FIRMWARE_DEVICE_LAST
QEMU_FIRMWARE_DEVICE_LAST,
"",
"flash",
- "kernel",
"memory",
);
union {
qemuFirmwareMappingFlash flash;
- qemuFirmwareMappingKernel kernel;
qemuFirmwareMappingMemory memory;
} data;
};
}
-static void
-qemuFirmwareMappingKernelFreeContent(qemuFirmwareMappingKernel *kernel)
-{
- g_free(kernel->filename);
-}
-
-
static void
qemuFirmwareMappingMemoryFreeContent(qemuFirmwareMappingMemory *memory)
{
case QEMU_FIRMWARE_DEVICE_FLASH:
qemuFirmwareMappingFlashFreeContent(&mapping->data.flash);
break;
- case QEMU_FIRMWARE_DEVICE_KERNEL:
- qemuFirmwareMappingKernelFreeContent(&mapping->data.kernel);
- break;
case QEMU_FIRMWARE_DEVICE_MEMORY:
qemuFirmwareMappingMemoryFreeContent(&mapping->data.memory);
break;
}
-static int
-qemuFirmwareMappingKernelParse(const char *path,
- virJSONValue *doc,
- qemuFirmwareMappingKernel *kernel)
-{
- const char *filename;
-
- if (!(filename = virJSONValueObjectGetString(doc, "filename"))) {
- VIR_DEBUG("missing 'filename' in '%s'", path);
- return -1;
- }
-
- kernel->filename = g_strdup(filename);
-
- return 0;
-}
-
-
static int
qemuFirmwareMappingMemoryParse(const char *path,
virJSONValue *doc,
if (qemuFirmwareMappingFlashParse(path, mapping, &fw->mapping.data.flash) < 0)
return -1;
break;
- case QEMU_FIRMWARE_DEVICE_KERNEL:
- if (qemuFirmwareMappingKernelParse(path, mapping, &fw->mapping.data.kernel) < 0)
- return -1;
- break;
case QEMU_FIRMWARE_DEVICE_MEMORY:
if (qemuFirmwareMappingMemoryParse(path, mapping, &fw->mapping.data.memory) < 0)
return -1;
}
-static int
-qemuFirmwareMappingKernelFormat(virJSONValue *mapping,
- qemuFirmwareMappingKernel *kernel)
-{
- if (virJSONValueObjectAppendString(mapping,
- "filename",
- kernel->filename) < 0)
- return -1;
-
- return 0;
-}
-
-
static int
qemuFirmwareMappingMemoryFormat(virJSONValue *mapping,
qemuFirmwareMappingMemory *memory)
if (qemuFirmwareMappingFlashFormat(mapping, &fw->mapping.data.flash) < 0)
return -1;
break;
- case QEMU_FIRMWARE_DEVICE_KERNEL:
- if (qemuFirmwareMappingKernelFormat(mapping, &fw->mapping.data.kernel) < 0)
- return -1;
- break;
case QEMU_FIRMWARE_DEVICE_MEMORY:
if (qemuFirmwareMappingMemoryFormat(mapping, &fw->mapping.data.memory) < 0)
return -1;
* qemuFirmwareMatchesPaths:
* @fw: firmware definition
* @loader: loader definition
- * @kernelPath: path to kernel image
*
* Checks whether @fw is compatible with the information provided as
* part of the domain definition.
*
- * Returns: true if @fw is compatible with @loader and @kernelPath,
- * false otherwise
+ * Returns: true if @fw is compatible with @loader, false otherwise
*/
static bool
qemuFirmwareMatchesPaths(const qemuFirmware *fw,
- const virDomainLoaderDef *loader,
- const char *kernelPath)
+ const virDomainLoaderDef *loader)
{
const qemuFirmwareMappingFlash *flash = &fw->mapping.data.flash;
- const qemuFirmwareMappingKernel *kernel = &fw->mapping.data.kernel;
const qemuFirmwareMappingMemory *memory = &fw->mapping.data.memory;
switch (fw->mapping.device) {
!virFileComparePaths(loader->path, memory->filename))
return false;
break;
- case QEMU_FIRMWARE_DEVICE_KERNEL:
- if (kernelPath &&
- !virFileComparePaths(kernelPath, kernel->filename))
- return false;
- break;
case QEMU_FIRMWARE_DEVICE_NONE:
case QEMU_FIRMWARE_DEVICE_LAST:
return false;
return false;
}
- if (!qemuFirmwareMatchesPaths(fw, def->os.loader, def->os.kernel)) {
+ if (!qemuFirmwareMatchesPaths(fw, def->os.loader)) {
VIR_DEBUG("No matching path in '%s'", path);
return false;
}
const qemuFirmware *fw)
{
const qemuFirmwareMappingFlash *flash = &fw->mapping.data.flash;
- const qemuFirmwareMappingKernel *kernel = &fw->mapping.data.kernel;
const qemuFirmwareMappingMemory *memory = &fw->mapping.data.memory;
virDomainLoaderDef *loader = NULL;
virStorageFileFormat format;
loader->path, NULLSTR(loader->nvramTemplate));
break;
- case QEMU_FIRMWARE_DEVICE_KERNEL:
- VIR_FREE(def->os.kernel);
- def->os.kernel = g_strdup(kernel->filename);
-
- VIR_DEBUG("decided on kernel '%s'",
- def->os.kernel);
- break;
-
case QEMU_FIRMWARE_DEVICE_MEMORY:
if (!def->os.loader)
def->os.loader = virDomainLoaderDefNew();
fwpath = memory->filename;
break;
- case QEMU_FIRMWARE_DEVICE_KERNEL:
case QEMU_FIRMWARE_DEVICE_NONE:
case QEMU_FIRMWARE_DEVICE_LAST:
break;