You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
222 lines
7.6 KiB
222 lines
7.6 KiB
From 4954aa8c9e659fe593cf368c82a62124754d4c9c Mon Sep 17 00:00:00 2001 |
|
From: Xu Wang <gesaint@linux.vnet.ibm.com> |
|
Date: Tue, 18 Mar 2014 08:52:53 -0400 |
|
Subject: [PATCH 50/60] Add virtual controller device types |
|
|
|
Add data and strutures for a virtual controller device |
|
|
|
Signed-off-by: John Ferlan <jferlan@redhat.com> |
|
--- |
|
libxkutil/device_parsing.h | 17 +++++- |
|
src/svpc_types.h | 129 ++++++++++++++++++++++++++++++++++++++++++++- |
|
2 files changed, 144 insertions(+), 2 deletions(-) |
|
|
|
diff --git a/libxkutil/device_parsing.h b/libxkutil/device_parsing.h |
|
index a92e223..afddc1d 100644 |
|
--- a/libxkutil/device_parsing.h |
|
+++ b/libxkutil/device_parsing.h |
|
@@ -1,5 +1,5 @@ |
|
/* |
|
- * Copyright IBM Corp. 2007, 2013 |
|
+ * Copyright IBM Corp. 2007-2014 |
|
* |
|
* Authors: |
|
* Dan Smith <danms@us.ibm.com> |
|
@@ -163,6 +163,17 @@ struct input_device { |
|
char *bus; |
|
}; |
|
|
|
+#define CONTROLLER_INDEX_NOT_SET -1 |
|
+struct controller_device { |
|
+ uint16_t type; |
|
+ uint64_t index; |
|
+ char *model; |
|
+ char *ports; |
|
+ char *vectors; |
|
+ char *queues; |
|
+ struct device_address address; |
|
+}; |
|
+ |
|
struct virt_device { |
|
uint16_t type; |
|
union { |
|
@@ -174,6 +185,7 @@ struct virt_device { |
|
struct graphics_device graphics; |
|
struct console_device console; |
|
struct input_device input; |
|
+ struct controller_device controller; |
|
} dev; |
|
char *id; |
|
}; |
|
@@ -249,6 +261,9 @@ struct domain { |
|
|
|
struct virt_device *dev_vcpu; |
|
int dev_vcpu_ct; |
|
+ |
|
+ struct virt_device *dev_controller; |
|
+ int dev_controller_ct; |
|
}; |
|
|
|
struct virt_device *virt_device_dup(struct virt_device *dev); |
|
diff --git a/src/svpc_types.h b/src/svpc_types.h |
|
index 404e428..d9f8032 100644 |
|
--- a/src/svpc_types.h |
|
+++ b/src/svpc_types.h |
|
@@ -1,5 +1,5 @@ |
|
/* |
|
- * Copyright IBM Corp. 2007, 2013 |
|
+ * Copyright IBM Corp. 2007-2014 |
|
* |
|
* Authors: |
|
* Dan Smith <danms@us.ibm.com> |
|
@@ -24,6 +24,9 @@ |
|
|
|
#define CIM_OPERATIONAL_STATUS 2 |
|
|
|
+/* From the ResourceType list for CIM_ResourceAllocationSettingData.html |
|
+ * Found on http://schemas.dmtf.org/wbem/cim-html/2.31.0 |
|
+ */ |
|
#define CIM_RES_TYPE_ALL 0 |
|
#define CIM_RES_TYPE_OTHER 1 |
|
#define CIM_RES_TYPE_PROC 3 |
|
@@ -33,9 +36,11 @@ |
|
#define CIM_RES_TYPE_GRAPHICS 24 |
|
#define CIM_RES_TYPE_INPUT 13 |
|
#define CIM_RES_TYPE_UNKNOWN 1000 |
|
+/* libvirt-cim specific values can start here */ |
|
#define CIM_RES_TYPE_IMAGE 32768 |
|
#define CIM_RES_TYPE_CONSOLE 32769 |
|
#define CIM_RES_TYPE_EMU 32770 |
|
+#define CIM_RES_TYPE_CONTROLLER 32771 |
|
|
|
#define CIM_RES_TYPE_COUNT 7 |
|
const static int cim_res_types[CIM_RES_TYPE_COUNT] = |
|
@@ -266,4 +271,126 @@ static inline const char* chardev_source_type_IDToStr(int type) |
|
return type_str; |
|
} |
|
|
|
+/* enum for Controller ProtocolSupported values |
|
+ * |
|
+ * From the ProtocolSupported list for CIM_Controller.html |
|
+ * Found on http://schemas.dmtf.org/wbem/cim-html/2.31.0 |
|
+ */ |
|
+enum CIM_controller_protocol_type { |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_OTHER = 1, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_UNKNOWN = 2, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_EISA = 3, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_ISA = 4, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_PCI = 5, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_ATA = 6, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_FD = 7, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_1496 = 8, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_SCSI_PI = 9, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_SCSI_FC = 10, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_SCSI_SB = 11, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_SCSI_SB2 = 12, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_SCSI_SSA = 13, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_VESA = 14, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_PCMCIA = 15, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_USB = 16, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_PP = 17, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_ESCON = 18, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_DIAG = 19, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_I2C = 20, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_POWER = 21, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_HIPPI = 22, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_MULTIBUS = 23, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_VME = 24, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_IPI = 25, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_IEEE488 = 26, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_RS232 = 27, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_IEEE8023_10BASE5 = 28, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_IEEE8023_10BASE2 = 29, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_IEEE8023_1BASE5 = 30, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_IEEE8023_10BROAD36 = 31, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_IEEE8023_100BASEVG = 32, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_TOKENRING = 33, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_ANSIX3T9 = 34, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_MCA = 35, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_ESDI = 36, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_IDE = 37, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_CMD = 38, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_ST506 = 39, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_DSSI = 40, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_QIC2 = 41, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_ENH_ATA = 42, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_AGP = 43, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_TWIRP = 44, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_FIR = 45, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_SIR = 46, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_IRBUS = 47, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_SATA = 48, |
|
+ /* libvirt specific */ |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_CCID = 32678, |
|
+ CIM_CONTROLLER_PROTOCOL_TYPE_VIRTIO_SERIAL = 32769, |
|
+}; |
|
+ |
|
+static inline int controller_protocol_type_StrToID(const char *type_str) |
|
+{ |
|
+ int rc = CIM_CONTROLLER_PROTOCOL_TYPE_UNKNOWN; |
|
+ |
|
+ if (type_str == NULL) |
|
+ return rc; |
|
+ |
|
+ if (STREQC(type_str, "ide")) |
|
+ rc = CIM_CONTROLLER_PROTOCOL_TYPE_IDE; |
|
+ else if (STREQC(type_str, "fdc")) |
|
+ rc = CIM_CONTROLLER_PROTOCOL_TYPE_FD; |
|
+ else if (STREQC(type_str, "scsi")) |
|
+ rc = CIM_CONTROLLER_PROTOCOL_TYPE_SCSI_SSA; /* REVISIT */ |
|
+ else if (STREQC(type_str, "sata")) |
|
+ rc = CIM_CONTROLLER_PROTOCOL_TYPE_SATA; |
|
+ else if (STREQC(type_str, "ccid")) |
|
+ rc = CIM_CONTROLLER_PROTOCOL_TYPE_CCID; |
|
+ else if (STREQC(type_str, "virtio-serial")) |
|
+ rc = CIM_CONTROLLER_PROTOCOL_TYPE_VIRTIO_SERIAL; |
|
+ else if (STREQC(type_str, "pci")) |
|
+ rc = CIM_CONTROLLER_PROTOCOL_TYPE_PCI; |
|
+ else if (STREQC(type_str, "usb")) |
|
+ rc = CIM_CONTROLLER_PROTOCOL_TYPE_USB; |
|
+ |
|
+ return rc; |
|
+} |
|
+ |
|
+static inline const char* controller_protocol_type_IDToStr(int type) |
|
+{ |
|
+ char *type_str = NULL; |
|
+ |
|
+ switch (type) |
|
+ { |
|
+ case CIM_CONTROLLER_PROTOCOL_TYPE_IDE: |
|
+ type_str = "ide"; |
|
+ break; |
|
+ case CIM_CONTROLLER_PROTOCOL_TYPE_FD: |
|
+ type_str = "fdc"; |
|
+ break; |
|
+ case CIM_CONTROLLER_PROTOCOL_TYPE_SCSI_SSA: |
|
+ type_str = "scsi"; |
|
+ break; |
|
+ case CIM_CONTROLLER_PROTOCOL_TYPE_SATA: |
|
+ type_str = "sata"; |
|
+ break; |
|
+ case CIM_CONTROLLER_PROTOCOL_TYPE_CCID: |
|
+ type_str = "ccid"; |
|
+ break; |
|
+ case CIM_CONTROLLER_PROTOCOL_TYPE_VIRTIO_SERIAL: |
|
+ type_str = "virtio-serial"; |
|
+ break; |
|
+ case CIM_CONTROLLER_PROTOCOL_TYPE_PCI: |
|
+ type_str = "pci"; |
|
+ break; |
|
+ case CIM_CONTROLLER_PROTOCOL_TYPE_USB: |
|
+ type_str = "usb"; |
|
+ break; |
|
+ default: |
|
+ break; |
|
+ } |
|
+ return type_str; |
|
+} |
|
+ |
|
#endif |
|
-- |
|
2.1.0
|
|
|