δΊ 2013/11/13 8:59, John Ferlan ει:
On 10/27/2013 10:45 PM, Xu Wang wrote:Signed-off-by: Xu Wang <[email protected]> --- libxkutil/device_parsing.h | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 43 insertions(+), 0 deletions(-)I am going to try to take these one at a time. Run them through cimtest singly to see if I can flesh out errors. I didn't get very far - 2/48 causes some failures in cimtest ...diff --git a/libxkutil/device_parsing.h b/libxkutil/device_parsing.h index 2803d6a..147551a 100644 --- a/libxkutil/device_parsing.h +++ b/libxkutil/device_parsing.h @@ -33,6 +33,33 @@#include "../src/svpc_types.h" +/* The structure for saving unknown tag in the xml */+enum others_type { + TYPE_PROP, + TYPE_NODE +}; + +struct others {There's an extra space after the { which git am complains about+ /* To identify the different tags with same name */ + int id; + char *name; + int parent_id; + char *parent_name; + enum others_type type; + char *value; + struct others *next; + enum status { + ACTIVE, + INACTIVE + };Older compiler complains: ../libxkutil/device_parsing.h:54: warning: declaration does not declare anything New compiler where I don't ignore warnings stops: In file included from device_parsing.c:33:0: device_parsing.h:54:10: error: declaration does not declare anything [-Werror] }; ^ cc1: all warnings being treated as errors I'll have to see more to determine whether I like this pointer to pointer within structures... There's usually some assumption somewhere which causes a failure... John
Dear John,My idea is, using a data structure (a link list) to keep the elements left after all kinds of virtual devices fetched tags they needed from xml. And if I just mark a node of others with status instead of delete it, the whole structure of xml could be saved as well. The introduction of 'id' in 'others' structure is to identify several <tags> with the same name. The console device support new introduced and some tags in 'unknown_device' have to use 'id' to identify elements. It maybe a little coarse now so I need any suggestion from you to make it works better. If you have any better idea to solve the unsupported tags missing issue please share with me :-) Because so many patches about it merged
and there will be more in the future.These 48 patches just the first part in my designing. After that I want to build the management about all data (even in 'others' member). And all of these updates are compatitable with older version libvirt-cim. So the upper layer need little change and
keep the original feature but could make libvirt-cim becomes more powerful.XFAIL about hotplug disappeared after updated. About the warning you mentioned above
I'll check and fix it in the new version. Thanks, Xu Wang
+}; + +/* The structure for saving unknown device */ +struct unknown_device { + char *name; + struct others *others; +}; + struct vsi_device { char *vsi_type; char *manager_id; @@ -56,6 +83,7 @@ struct disk_device { char *bus_type; char *cache; char *access_mode; /* access modes for DISK_FS (filesystem) type */ + struct others *others; };struct net_device {@@ -70,6 +98,7 @@ struct net_device { uint64_t reservation; uint64_t limit; struct vsi_device vsi; + struct others *others; };struct mem_device {@@ -78,16 +107,19 @@ struct mem_device { enum { MEM_DUMP_CORE_NOT_SET, MEM_DUMP_CORE_ON, MEM_DUMP_CORE_OFF } dumpCore; + struct others *others; };struct vcpu_device {uint64_t quantity; uint32_t weight; uint64_t limit; + struct others *others; };struct emu_device {char *path; + struct others *others; };struct vnc_device {@@ -95,12 +127,14 @@ struct vnc_device { char *host; char *keymap; char *passwd; + struct others *others; };struct sdl_device {char *display; char *xauth; char *fullscreen; + struct others *others; };struct graphics_device {@@ -109,6 +143,7 @@ struct graphics_device { struct vnc_device vnc; struct sdl_device sdl; } dev; + struct others *others; };struct path_device {@@ -146,11 +181,13 @@ struct console_device { struct udp_device udp; } source_dev; char *target_type; + struct others *others; };struct input_device {char *type; char *bus; + struct others *others; };struct virt_device {@@ -164,6 +201,7 @@ struct virt_device { struct graphics_device graphics; struct console_device console; struct input_device input; + struct unknown_device unknown; } dev; char *id; }; @@ -239,6 +277,11 @@ struct domain {struct virt_device *dev_vcpu;int dev_vcpu_ct; + + struct virt_device *dev_unknown; + int dev_unknown_ct; + + struct others *others; };struct virt_device *virt_device_dup(struct virt_device *dev);
_______________________________________________ Libvirt-cim mailing list [email protected] https://www.redhat.com/mailman/listinfo/libvirt-cim
