mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
util: refactor virDomainDeviceCCWAddress into virccw.h
Refactor ccw data structure virDomainDeviceCCWAddress into util virccw.h and rename it as virCCWDeviceAddress. Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
78094a4bd1
commit
45a8e3988f
@ -259,7 +259,7 @@ virPCIDeviceAddressFormat(virBuffer *buf,
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
virDomainDeviceCCWAddressIsValid(virDomainDeviceCCWAddress *addr)
|
virDomainDeviceCCWAddressIsValid(virCCWDeviceAddress *addr)
|
||||||
{
|
{
|
||||||
return addr->cssid <= VIR_DOMAIN_DEVICE_CCW_MAX_CSSID &&
|
return addr->cssid <= VIR_DOMAIN_DEVICE_CCW_MAX_CSSID &&
|
||||||
addr->ssid <= VIR_DOMAIN_DEVICE_CCW_MAX_SSID &&
|
addr->ssid <= VIR_DOMAIN_DEVICE_CCW_MAX_SSID &&
|
||||||
@ -268,7 +268,7 @@ virDomainDeviceCCWAddressIsValid(virDomainDeviceCCWAddress *addr)
|
|||||||
|
|
||||||
int
|
int
|
||||||
virDomainDeviceCCWAddressParseXML(xmlNodePtr node,
|
virDomainDeviceCCWAddressParseXML(xmlNodePtr node,
|
||||||
virDomainDeviceCCWAddress *addr)
|
virCCWDeviceAddress *addr)
|
||||||
{
|
{
|
||||||
int cssid;
|
int cssid;
|
||||||
int ssid;
|
int ssid;
|
||||||
@ -307,8 +307,8 @@ virDomainDeviceCCWAddressParseXML(xmlNodePtr node,
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
virDomainDeviceCCWAddressEqual(virDomainDeviceCCWAddress *addr1,
|
virDomainDeviceCCWAddressEqual(virCCWDeviceAddress *addr1,
|
||||||
virDomainDeviceCCWAddress *addr2)
|
virCCWDeviceAddress *addr2)
|
||||||
{
|
{
|
||||||
if (addr1->cssid == addr2->cssid &&
|
if (addr1->cssid == addr2->cssid &&
|
||||||
addr1->ssid == addr2->ssid &&
|
addr1->ssid == addr2->ssid &&
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
#include "internal.h"
|
#include "internal.h"
|
||||||
#include "virthread.h"
|
#include "virthread.h"
|
||||||
#include "virbuffer.h"
|
#include "virbuffer.h"
|
||||||
|
#include "virccw.h"
|
||||||
#include "virpci.h"
|
#include "virpci.h"
|
||||||
#include "virnetdev.h"
|
#include "virnetdev.h"
|
||||||
#include "virenum.h"
|
#include "virenum.h"
|
||||||
@ -73,14 +74,6 @@ struct _virDomainDeviceVirtioSerialAddress {
|
|||||||
#define VIR_DOMAIN_DEVICE_CCW_MAX_SSID 3
|
#define VIR_DOMAIN_DEVICE_CCW_MAX_SSID 3
|
||||||
#define VIR_DOMAIN_DEVICE_CCW_MAX_DEVNO 65535
|
#define VIR_DOMAIN_DEVICE_CCW_MAX_DEVNO 65535
|
||||||
|
|
||||||
typedef struct _virDomainDeviceCCWAddress virDomainDeviceCCWAddress;
|
|
||||||
struct _virDomainDeviceCCWAddress {
|
|
||||||
unsigned int cssid;
|
|
||||||
unsigned int ssid;
|
|
||||||
unsigned int devno;
|
|
||||||
bool assigned;
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct _virDomainDeviceCcidAddress virDomainDeviceCcidAddress;
|
typedef struct _virDomainDeviceCcidAddress virDomainDeviceCcidAddress;
|
||||||
struct _virDomainDeviceCcidAddress {
|
struct _virDomainDeviceCcidAddress {
|
||||||
unsigned int controller;
|
unsigned int controller;
|
||||||
@ -136,7 +129,7 @@ struct _virDomainDeviceInfo {
|
|||||||
virDomainDeviceCcidAddress ccid;
|
virDomainDeviceCcidAddress ccid;
|
||||||
virDomainDeviceUSBAddress usb;
|
virDomainDeviceUSBAddress usb;
|
||||||
virDomainDeviceSpaprVioAddress spaprvio;
|
virDomainDeviceSpaprVioAddress spaprvio;
|
||||||
virDomainDeviceCCWAddress ccw;
|
virCCWDeviceAddress ccw;
|
||||||
virDomainDeviceISAAddress isa;
|
virDomainDeviceISAAddress isa;
|
||||||
virDomainDeviceDimmAddress dimm;
|
virDomainDeviceDimmAddress dimm;
|
||||||
} addr;
|
} addr;
|
||||||
@ -204,11 +197,11 @@ void virPCIDeviceAddressFormat(virBuffer *buf,
|
|||||||
virPCIDeviceAddress addr,
|
virPCIDeviceAddress addr,
|
||||||
bool includeTypeInAddr);
|
bool includeTypeInAddr);
|
||||||
|
|
||||||
bool virDomainDeviceCCWAddressIsValid(virDomainDeviceCCWAddress *addr);
|
bool virDomainDeviceCCWAddressIsValid(virCCWDeviceAddress *addr);
|
||||||
int virDomainDeviceCCWAddressParseXML(xmlNodePtr node,
|
int virDomainDeviceCCWAddressParseXML(xmlNodePtr node,
|
||||||
virDomainDeviceCCWAddress *addr);
|
virCCWDeviceAddress *addr);
|
||||||
bool virDomainDeviceCCWAddressEqual(virDomainDeviceCCWAddress *addr1,
|
bool virDomainDeviceCCWAddressEqual(virCCWDeviceAddress *addr1,
|
||||||
virDomainDeviceCCWAddress *addr2);
|
virCCWDeviceAddress *addr2);
|
||||||
#define VIR_CCW_DEVICE_ADDRESS_FMT "%x.%x.%04x"
|
#define VIR_CCW_DEVICE_ADDRESS_FMT "%x.%x.%04x"
|
||||||
|
|
||||||
int virDomainDeviceDriveAddressParseXML(xmlNodePtr node,
|
int virDomainDeviceDriveAddressParseXML(xmlNodePtr node,
|
||||||
|
@ -1304,15 +1304,15 @@ virDomainPCIAddressSetAllMulti(virDomainDef *def)
|
|||||||
|
|
||||||
|
|
||||||
char*
|
char*
|
||||||
virDomainCCWAddressAsString(virDomainDeviceCCWAddress *addr)
|
virDomainCCWAddressAsString(virCCWDeviceAddress *addr)
|
||||||
{
|
{
|
||||||
return g_strdup_printf("%x.%x.%04x", addr->cssid, addr->ssid, addr->devno);
|
return g_strdup_printf("%x.%x.%04x", addr->cssid, addr->ssid, addr->devno);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
virDomainCCWAddressIncrement(virDomainDeviceCCWAddress *addr)
|
virDomainCCWAddressIncrement(virCCWDeviceAddress *addr)
|
||||||
{
|
{
|
||||||
virDomainDeviceCCWAddress ccwaddr = *addr;
|
virCCWDeviceAddress ccwaddr = *addr;
|
||||||
|
|
||||||
/* We are not touching subchannel sets and channel subsystems */
|
/* We are not touching subchannel sets and channel subsystems */
|
||||||
if (++ccwaddr.devno > VIR_DOMAIN_DEVICE_CCW_MAX_DEVNO)
|
if (++ccwaddr.devno > VIR_DOMAIN_DEVICE_CCW_MAX_DEVNO)
|
||||||
|
@ -199,7 +199,7 @@ void virDomainPCIAddressSetAllMulti(virDomainDef *def)
|
|||||||
|
|
||||||
struct _virDomainCCWAddressSet {
|
struct _virDomainCCWAddressSet {
|
||||||
GHashTable *defined;
|
GHashTable *defined;
|
||||||
virDomainDeviceCCWAddress next;
|
virCCWDeviceAddress next;
|
||||||
};
|
};
|
||||||
typedef struct _virDomainCCWAddressSet virDomainCCWAddressSet;
|
typedef struct _virDomainCCWAddressSet virDomainCCWAddressSet;
|
||||||
|
|
||||||
@ -209,7 +209,7 @@ int virDomainCCWAddressAssign(virDomainDeviceInfo *dev,
|
|||||||
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
|
||||||
void virDomainCCWAddressSetFree(virDomainCCWAddressSet *addrs);
|
void virDomainCCWAddressSetFree(virDomainCCWAddressSet *addrs);
|
||||||
|
|
||||||
char* virDomainCCWAddressAsString(virDomainDeviceCCWAddress *addr)
|
char* virDomainCCWAddressAsString(virCCWDeviceAddress *addr)
|
||||||
ATTRIBUTE_NONNULL(1);
|
ATTRIBUTE_NONNULL(1);
|
||||||
|
|
||||||
virDomainCCWAddressSet *
|
virDomainCCWAddressSet *
|
||||||
|
@ -15491,7 +15491,7 @@ virDomainDiskControllerMatch(int controller_type, int disk_bus)
|
|||||||
int
|
int
|
||||||
virDomainDiskIndexByAddress(virDomainDef *def,
|
virDomainDiskIndexByAddress(virDomainDef *def,
|
||||||
virPCIDeviceAddress *pci_address,
|
virPCIDeviceAddress *pci_address,
|
||||||
virDomainDeviceCCWAddress *ccw_addr,
|
virCCWDeviceAddress *ccw_addr,
|
||||||
unsigned int bus, unsigned int target,
|
unsigned int bus, unsigned int target,
|
||||||
unsigned int unit)
|
unsigned int unit)
|
||||||
{
|
{
|
||||||
@ -15535,7 +15535,7 @@ virDomainDiskIndexByAddress(virDomainDef *def,
|
|||||||
virDomainDiskDef *
|
virDomainDiskDef *
|
||||||
virDomainDiskByAddress(virDomainDef *def,
|
virDomainDiskByAddress(virDomainDef *def,
|
||||||
virPCIDeviceAddress *pci_address,
|
virPCIDeviceAddress *pci_address,
|
||||||
virDomainDeviceCCWAddress *ccw_addr,
|
virCCWDeviceAddress *ccw_addr,
|
||||||
unsigned int bus,
|
unsigned int bus,
|
||||||
unsigned int target,
|
unsigned int target,
|
||||||
unsigned int unit)
|
unsigned int unit)
|
||||||
@ -16134,7 +16134,7 @@ virDomainControllerFindByType(virDomainDef *def,
|
|||||||
|
|
||||||
int
|
int
|
||||||
virDomainControllerFindByCCWAddress(virDomainDef *def,
|
virDomainControllerFindByCCWAddress(virDomainDef *def,
|
||||||
virDomainDeviceCCWAddress *addr)
|
virCCWDeviceAddress *addr)
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
|
@ -3674,12 +3674,12 @@ void virDomainRNGDefFree(virDomainRNGDef *def);
|
|||||||
|
|
||||||
int virDomainDiskIndexByAddress(virDomainDef *def,
|
int virDomainDiskIndexByAddress(virDomainDef *def,
|
||||||
virPCIDeviceAddress *pci_controller,
|
virPCIDeviceAddress *pci_controller,
|
||||||
virDomainDeviceCCWAddress *ccw_addr,
|
virCCWDeviceAddress *ccw_addr,
|
||||||
unsigned int bus, unsigned int target,
|
unsigned int bus, unsigned int target,
|
||||||
unsigned int unit);
|
unsigned int unit);
|
||||||
virDomainDiskDef *virDomainDiskByAddress(virDomainDef *def,
|
virDomainDiskDef *virDomainDiskByAddress(virDomainDef *def,
|
||||||
virPCIDeviceAddress *pci_controller,
|
virPCIDeviceAddress *pci_controller,
|
||||||
virDomainDeviceCCWAddress *ccw_addr,
|
virCCWDeviceAddress *ccw_addr,
|
||||||
unsigned int bus,
|
unsigned int bus,
|
||||||
unsigned int target,
|
unsigned int target,
|
||||||
unsigned int unit);
|
unsigned int unit);
|
||||||
@ -3764,7 +3764,7 @@ void virDomainControllerInsertPreAlloced(virDomainDef *def,
|
|||||||
int virDomainControllerFind(const virDomainDef *def, int type, int idx);
|
int virDomainControllerFind(const virDomainDef *def, int type, int idx);
|
||||||
int virDomainControllerFindByType(virDomainDef *def, int type);
|
int virDomainControllerFindByType(virDomainDef *def, int type);
|
||||||
int virDomainControllerFindByCCWAddress(virDomainDef *def,
|
int virDomainControllerFindByCCWAddress(virDomainDef *def,
|
||||||
virDomainDeviceCCWAddress *addr);
|
virCCWDeviceAddress *addr);
|
||||||
int virDomainControllerFindByPCIAddress(virDomainDef *def,
|
int virDomainControllerFindByPCIAddress(virDomainDef *def,
|
||||||
virPCIDeviceAddress *addr);
|
virPCIDeviceAddress *addr);
|
||||||
int virDomainControllerFindUnusedIndex(virDomainDef const *def, int type);
|
int virDomainControllerFindUnusedIndex(virDomainDef const *def, int type);
|
||||||
|
@ -661,7 +661,7 @@ nodeDeviceObjFormatAddress(virNodeDeviceObj *obj)
|
|||||||
}
|
}
|
||||||
|
|
||||||
case VIR_NODE_DEV_CAP_CSS_DEV: {
|
case VIR_NODE_DEV_CAP_CSS_DEV: {
|
||||||
virDomainDeviceCCWAddress ccw_addr = {
|
virCCWDeviceAddress ccw_addr = {
|
||||||
.cssid = caps->data.ccw_dev.cssid,
|
.cssid = caps->data.ccw_dev.cssid,
|
||||||
.ssid = caps->data.ccw_dev.ssid,
|
.ssid = caps->data.ccw_dev.ssid,
|
||||||
.devno = caps->data.ccw_dev.devno
|
.devno = caps->data.ccw_dev.devno
|
||||||
|
@ -1764,9 +1764,9 @@ qemuAgentGetDiskAddress(virJSONValue *json)
|
|||||||
GET_DISK_ADDR(pci, &addr->pci_controller.function, "function");
|
GET_DISK_ADDR(pci, &addr->pci_controller.function, "function");
|
||||||
|
|
||||||
if ((ccw = virJSONValueObjectGet(json, "ccw-address"))) {
|
if ((ccw = virJSONValueObjectGet(json, "ccw-address"))) {
|
||||||
g_autofree virDomainDeviceCCWAddress *ccw_addr = NULL;
|
g_autofree virCCWDeviceAddress *ccw_addr = NULL;
|
||||||
|
|
||||||
ccw_addr = g_new0(virDomainDeviceCCWAddress, 1);
|
ccw_addr = g_new0(virCCWDeviceAddress, 1);
|
||||||
|
|
||||||
GET_DISK_ADDR(ccw, &ccw_addr->cssid, "cssid");
|
GET_DISK_ADDR(ccw, &ccw_addr->cssid, "cssid");
|
||||||
if (ccw_addr->cssid == 0) /* Guest CSSID 0 is 0xfe on host */
|
if (ccw_addr->cssid == 0) /* Guest CSSID 0 is 0xfe on host */
|
||||||
|
@ -72,7 +72,7 @@ struct _qemuAgentDiskAddress {
|
|||||||
unsigned int target;
|
unsigned int target;
|
||||||
unsigned int unit;
|
unsigned int unit;
|
||||||
char *devnode;
|
char *devnode;
|
||||||
virDomainDeviceCCWAddress *ccw_addr;
|
virCCWDeviceAddress *ccw_addr;
|
||||||
};
|
};
|
||||||
void qemuAgentDiskAddressFree(qemuAgentDiskAddress *addr);
|
void qemuAgentDiskAddressFree(qemuAgentDiskAddress *addr);
|
||||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC(qemuAgentDiskAddress, qemuAgentDiskAddressFree);
|
G_DEFINE_AUTOPTR_CLEANUP_FUNC(qemuAgentDiskAddress, qemuAgentDiskAddressFree);
|
||||||
|
31
src/util/virccw.h
Normal file
31
src/util/virccw.h
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* virccw.h: helper APIs for managing host CCW devices
|
||||||
|
*
|
||||||
|
* Copyright (C) 2022 IBM Corporation
|
||||||
|
*
|
||||||
|
* 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, see
|
||||||
|
* <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "internal.h"
|
||||||
|
|
||||||
|
typedef struct _virCCWDeviceAddress virCCWDeviceAddress;
|
||||||
|
struct _virCCWDeviceAddress {
|
||||||
|
unsigned int cssid;
|
||||||
|
unsigned int ssid;
|
||||||
|
unsigned int devno;
|
||||||
|
bool assigned;
|
||||||
|
};
|
Loading…
x
Reference in New Issue
Block a user