[libvirt] [libvirt-glib v2 1/8] Setters/adders for GVirConfigCapabilitiesCpu props

From: "Zeeshan Ali (Khattak)" <zeeshanak@gnome.org> - gvir_config_capabilities_cpu_add_feature - gvir_config_capabilities_cpu_set_topology --- libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c | 32 ++++++++++++++++++++ libvirt-gconfig/libvirt-gconfig-capabilities-cpu.h | 6 ++++ libvirt-gconfig/libvirt-gconfig.sym | 6 ++++ 3 files changed, 44 insertions(+) diff --git a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c index df77364..e517a20 100644 --- a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c +++ b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c @@ -56,6 +56,21 @@ gvir_config_capabilities_cpu_get_arch(GVirConfigCapabilitiesCpu *cpu) return gvir_config_object_get_node_content(GVIR_CONFIG_OBJECT(cpu), "arch"); } +/** + * gvir_config_capabilities_cpu_add_feature: + * + * Adds a new feature to CPU. + */ +void gvir_config_capabilities_cpu_add_feature(GVirConfigCapabilitiesCpu *cpu, + GVirConfigCapabilitiesCpuFeature *feature) +{ + g_return_if_fail(GVIR_CONFIG_IS_CAPABILITIES_CPU(cpu)); + g_return_if_fail(GVIR_CONFIG_IS_CAPABILITIES_CPU_FEATURE(feature)); + + gvir_config_object_attach_add(GVIR_CONFIG_OBJECT(cpu), + GVIR_CONFIG_OBJECT(feature)); +} + struct GetFeatureData { GVirConfigXmlDoc *doc; const gchar *schema; @@ -133,3 +148,20 @@ gvir_config_capabilities_cpu_get_topology(GVirConfigCapabilitiesCpu *cpu) return GVIR_CONFIG_CAPABILITIES_CPU_TOPOLOGY(object); } + +/** + * gvir_config_capabilities_cpu_set_topology: + * + * Sets the topology of the cpu. + */ +void +gvir_config_capabilities_cpu_set_topology(GVirConfigCapabilitiesCpu *cpu, + GVirConfigCapabilitiesCpuTopology *topology) +{ + g_return_if_fail(GVIR_CONFIG_IS_CAPABILITIES_CPU(cpu)); + g_return_if_fail(GVIR_CONFIG_IS_CAPABILITIES_CPU_TOPOLOGY(topology)); + + gvir_config_object_attach_replace(GVIR_CONFIG_OBJECT(cpu), + "topology", + GVIR_CONFIG_OBJECT(topology)); +} diff --git a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.h b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.h index 4d896ef..67fe607 100644 --- a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.h +++ b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.h @@ -29,6 +29,7 @@ #define __LIBVIRT_GCONFIG_CAPABILITIES_CPU_H__ #include "libvirt-gconfig-capabilities-cpu-topology.h" +#include "libvirt-gconfig-capabilities-cpu-feature.h" G_BEGIN_DECLS @@ -63,10 +64,15 @@ GType gvir_config_capabilities_cpu_get_type(void); const gchar * gvir_config_capabilities_cpu_get_arch(GVirConfigCapabilitiesCpu *cpu); +void gvir_config_capabilities_cpu_add_feature(GVirConfigCapabilitiesCpu *cpu, + GVirConfigCapabilitiesCpuFeature *feature); GList * gvir_config_capabilities_cpu_get_features(GVirConfigCapabilitiesCpu *cpu); GVirConfigCapabilitiesCpuTopology * gvir_config_capabilities_cpu_get_topology(GVirConfigCapabilitiesCpu *cpu); +void +gvir_config_capabilities_cpu_set_topology(GVirConfigCapabilitiesCpu *cpu, + GVirConfigCapabilitiesCpuTopology *topology); G_END_DECLS diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym index 21942b4..1741c51 100644 --- a/libvirt-gconfig/libvirt-gconfig.sym +++ b/libvirt-gconfig/libvirt-gconfig.sym @@ -425,4 +425,10 @@ LIBVIRT_GCONFIG_0.0.9 { gvir_config_capabilities_host_get_cpu; } LIBVIRT_GCONFIG_0.0.8; +LIBVIRT_GCONFIG_0.0.10 { + global: + gvir_config_capabilities_cpu_add_feature; + gvir_config_capabilities_cpu_set_topology; +} LIBVIRT_GCONFIG_0.0.9; + # .... define new API here using predicted next version number .... -- 1.7.10.4

From: "Zeeshan Ali (Khattak)" <zeeshanak@gnome.org> Provide constructor methods for GVirConfigCapabilitiesCpuTopology. --- .../libvirt-gconfig-capabilities-cpu-topology.c | 25 ++++++++++++++++++++ .../libvirt-gconfig-capabilities-cpu-topology.h | 3 +++ libvirt-gconfig/libvirt-gconfig.sym | 3 +++ 3 files changed, 31 insertions(+) diff --git a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-topology.c b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-topology.c index 65ebcb1..f34a4fe 100644 --- a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-topology.c +++ b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-topology.c @@ -49,6 +49,31 @@ static void gvir_config_capabilities_cpu_topology_init(GVirConfigCapabilitiesCpu topology->priv = GVIR_CONFIG_CAPABILITIES_CPU_TOPOLOGY_GET_PRIVATE(topology); } +GVirConfigCapabilitiesCpuTopology *gvir_config_capabilities_cpu_topology_new(void) +{ + GVirConfigObject *object; + + object = gvir_config_object_new(GVIR_CONFIG_TYPE_CAPABILITIES_CPU_TOPOLOGY, + "topology", + NULL); + + return GVIR_CONFIG_CAPABILITIES_CPU_TOPOLOGY(object); +} + +GVirConfigCapabilitiesCpuTopology * +gvir_config_capabilities_cpu_topology_new_from_xml(const gchar *xml, GError **error) +{ + GVirConfigObject *object; + + object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_CAPABILITIES_CPU_TOPOLOGY, + "topology", + NULL, + xml, + error); + + return GVIR_CONFIG_CAPABILITIES_CPU_TOPOLOGY(object); +} + guint64 gvir_config_capabilities_cpu_topology_get_sockets(GVirConfigCapabilitiesCpuTopology *topology) { diff --git a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-topology.h b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-topology.h index 673a340..b8075a0 100644 --- a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-topology.h +++ b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-topology.h @@ -59,6 +59,9 @@ struct _GVirConfigCapabilitiesCpuTopologyClass GType gvir_config_capabilities_cpu_topology_get_type(void); +GVirConfigCapabilitiesCpuTopology *gvir_config_capabilities_cpu_topology_new(void); +GVirConfigCapabilitiesCpuTopology * +gvir_config_capabilities_cpu_topology_new_from_xml(const gchar *xml, GError **error); guint64 gvir_config_capabilities_cpu_topology_get_sockets(GVirConfigCapabilitiesCpuTopology *topology); guint64 diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym index 1741c51..a7bb65d 100644 --- a/libvirt-gconfig/libvirt-gconfig.sym +++ b/libvirt-gconfig/libvirt-gconfig.sym @@ -429,6 +429,9 @@ LIBVIRT_GCONFIG_0.0.10 { global: gvir_config_capabilities_cpu_add_feature; gvir_config_capabilities_cpu_set_topology; + + gvir_config_capabilities_cpu_topology_new; + gvir_config_capabilities_cpu_topology_new_from_xml; } LIBVIRT_GCONFIG_0.0.9; # .... define new API here using predicted next version number .... -- 1.7.10.4

ACK On Tue, Jun 26, 2012 at 05:56:14AM +0300, Zeeshan Ali (Khattak) wrote:
From: "Zeeshan Ali (Khattak)" <zeeshanak@gnome.org>
Provide constructor methods for GVirConfigCapabilitiesCpuTopology. --- .../libvirt-gconfig-capabilities-cpu-topology.c | 25 ++++++++++++++++++++ .../libvirt-gconfig-capabilities-cpu-topology.h | 3 +++ libvirt-gconfig/libvirt-gconfig.sym | 3 +++ 3 files changed, 31 insertions(+)
diff --git a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-topology.c b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-topology.c index 65ebcb1..f34a4fe 100644 --- a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-topology.c +++ b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-topology.c @@ -49,6 +49,31 @@ static void gvir_config_capabilities_cpu_topology_init(GVirConfigCapabilitiesCpu topology->priv = GVIR_CONFIG_CAPABILITIES_CPU_TOPOLOGY_GET_PRIVATE(topology); }
+GVirConfigCapabilitiesCpuTopology *gvir_config_capabilities_cpu_topology_new(void) +{ + GVirConfigObject *object; + + object = gvir_config_object_new(GVIR_CONFIG_TYPE_CAPABILITIES_CPU_TOPOLOGY, + "topology", + NULL); + + return GVIR_CONFIG_CAPABILITIES_CPU_TOPOLOGY(object); +} + +GVirConfigCapabilitiesCpuTopology * +gvir_config_capabilities_cpu_topology_new_from_xml(const gchar *xml, GError **error) +{ + GVirConfigObject *object; + + object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_CAPABILITIES_CPU_TOPOLOGY, + "topology", + NULL, + xml, + error); + + return GVIR_CONFIG_CAPABILITIES_CPU_TOPOLOGY(object); +} + guint64 gvir_config_capabilities_cpu_topology_get_sockets(GVirConfigCapabilitiesCpuTopology *topology) { diff --git a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-topology.h b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-topology.h index 673a340..b8075a0 100644 --- a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-topology.h +++ b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-topology.h @@ -59,6 +59,9 @@ struct _GVirConfigCapabilitiesCpuTopologyClass
GType gvir_config_capabilities_cpu_topology_get_type(void);
+GVirConfigCapabilitiesCpuTopology *gvir_config_capabilities_cpu_topology_new(void); +GVirConfigCapabilitiesCpuTopology * +gvir_config_capabilities_cpu_topology_new_from_xml(const gchar *xml, GError **error); guint64 gvir_config_capabilities_cpu_topology_get_sockets(GVirConfigCapabilitiesCpuTopology *topology); guint64 diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym index 1741c51..a7bb65d 100644 --- a/libvirt-gconfig/libvirt-gconfig.sym +++ b/libvirt-gconfig/libvirt-gconfig.sym @@ -429,6 +429,9 @@ LIBVIRT_GCONFIG_0.0.10 { global: gvir_config_capabilities_cpu_add_feature; gvir_config_capabilities_cpu_set_topology; + + gvir_config_capabilities_cpu_topology_new; + gvir_config_capabilities_cpu_topology_new_from_xml; } LIBVIRT_GCONFIG_0.0.9;
# .... define new API here using predicted next version number .... -- 1.7.10.4
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list

From: "Zeeshan Ali (Khattak)" <zeeshanak@gnome.org> --- .../libvirt-gconfig-capabilities-cpu-topology.c | 27 ++++++++++++++++++++ .../libvirt-gconfig-capabilities-cpu-topology.h | 9 +++++++ libvirt-gconfig/libvirt-gconfig.sym | 3 +++ 3 files changed, 39 insertions(+) diff --git a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-topology.c b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-topology.c index f34a4fe..bd46a0e 100644 --- a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-topology.c +++ b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-topology.c @@ -85,6 +85,15 @@ gvir_config_capabilities_cpu_topology_get_sockets(GVirConfigCapabilitiesCpuTopol 0); } +void +gvir_config_capabilities_cpu_topology_set_sockets(GVirConfigCapabilitiesCpuTopology *topology, + guint64 sockets) +{ + gvir_config_object_set_attribute_with_type(GVIR_CONFIG_OBJECT(topology), + "sockets", G_TYPE_UINT64, sockets, + NULL); +} + guint64 gvir_config_capabilities_cpu_topology_get_cores(GVirConfigCapabilitiesCpuTopology *topology) { @@ -96,6 +105,15 @@ gvir_config_capabilities_cpu_topology_get_cores(GVirConfigCapabilitiesCpuTopolog 0); } +void +gvir_config_capabilities_cpu_topology_set_cores(GVirConfigCapabilitiesCpuTopology *topology, + guint64 cores) +{ + gvir_config_object_set_attribute_with_type(GVIR_CONFIG_OBJECT(topology), + "cores", G_TYPE_UINT64, cores, + NULL); +} + guint64 gvir_config_capabilities_cpu_topology_get_threads(GVirConfigCapabilitiesCpuTopology *topology) { @@ -106,3 +124,12 @@ gvir_config_capabilities_cpu_topology_get_threads(GVirConfigCapabilitiesCpuTopol "threads", 0); } + +void +gvir_config_capabilities_cpu_topology_set_threads(GVirConfigCapabilitiesCpuTopology *topology, + guint64 threads) +{ + gvir_config_object_set_attribute_with_type(GVIR_CONFIG_OBJECT(topology), + "threads", G_TYPE_UINT64, threads, + NULL); +} diff --git a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-topology.h b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-topology.h index b8075a0..c589110 100644 --- a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-topology.h +++ b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-topology.h @@ -64,10 +64,19 @@ GVirConfigCapabilitiesCpuTopology * gvir_config_capabilities_cpu_topology_new_from_xml(const gchar *xml, GError **error); guint64 gvir_config_capabilities_cpu_topology_get_sockets(GVirConfigCapabilitiesCpuTopology *topology); +void +gvir_config_capabilities_cpu_topology_set_sockets(GVirConfigCapabilitiesCpuTopology *topology, + guint64 sockets); guint64 gvir_config_capabilities_cpu_topology_get_cores(GVirConfigCapabilitiesCpuTopology *topology); +void +gvir_config_capabilities_cpu_topology_set_cores(GVirConfigCapabilitiesCpuTopology *topology, + guint64 cores); guint64 gvir_config_capabilities_cpu_topology_get_threads(GVirConfigCapabilitiesCpuTopology *topology); +void +gvir_config_capabilities_cpu_topology_set_threads(GVirConfigCapabilitiesCpuTopology *topology, + guint64 threads); G_END_DECLS diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym index a7bb65d..9894a3b 100644 --- a/libvirt-gconfig/libvirt-gconfig.sym +++ b/libvirt-gconfig/libvirt-gconfig.sym @@ -432,6 +432,9 @@ LIBVIRT_GCONFIG_0.0.10 { gvir_config_capabilities_cpu_topology_new; gvir_config_capabilities_cpu_topology_new_from_xml; + gvir_config_capabilities_cpu_topology_set_cores; + gvir_config_capabilities_cpu_topology_set_sockets; + gvir_config_capabilities_cpu_topology_set_threads; } LIBVIRT_GCONFIG_0.0.9; # .... define new API here using predicted next version number .... -- 1.7.10.4

On Tue, Jun 26, 2012 at 05:56:15AM +0300, Zeeshan Ali (Khattak) wrote:
From: "Zeeshan Ali (Khattak)" <zeeshanak@gnome.org>
--- .../libvirt-gconfig-capabilities-cpu-topology.c | 27 ++++++++++++++++++++ .../libvirt-gconfig-capabilities-cpu-topology.h | 9 +++++++ libvirt-gconfig/libvirt-gconfig.sym | 3 +++ 3 files changed, 39 insertions(+)
diff --git a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-topology.c b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-topology.c index f34a4fe..bd46a0e 100644 --- a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-topology.c +++ b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-topology.c @@ -85,6 +85,15 @@ gvir_config_capabilities_cpu_topology_get_sockets(GVirConfigCapabilitiesCpuTopol 0); }
+void +gvir_config_capabilities_cpu_topology_set_sockets(GVirConfigCapabilitiesCpuTopology *topology, + guint64 sockets) +{ + gvir_config_object_set_attribute_with_type(GVIR_CONFIG_OBJECT(topology), + "sockets", G_TYPE_UINT64, sockets, + NULL); +} + guint64 gvir_config_capabilities_cpu_topology_get_cores(GVirConfigCapabilitiesCpuTopology *topology) { @@ -96,6 +105,15 @@ gvir_config_capabilities_cpu_topology_get_cores(GVirConfigCapabilitiesCpuTopolog 0); }
+void +gvir_config_capabilities_cpu_topology_set_cores(GVirConfigCapabilitiesCpuTopology *topology, + guint64 cores) +{ + gvir_config_object_set_attribute_with_type(GVIR_CONFIG_OBJECT(topology), + "cores", G_TYPE_UINT64, cores, + NULL); +} + guint64 gvir_config_capabilities_cpu_topology_get_threads(GVirConfigCapabilitiesCpuTopology *topology) { @@ -106,3 +124,12 @@ gvir_config_capabilities_cpu_topology_get_threads(GVirConfigCapabilitiesCpuTopol "threads", 0); } + +void +gvir_config_capabilities_cpu_topology_set_threads(GVirConfigCapabilitiesCpuTopology *topology, + guint64 threads) +{ + gvir_config_object_set_attribute_with_type(GVIR_CONFIG_OBJECT(topology), + "threads", G_TYPE_UINT64, threads, + NULL); +} diff --git a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-topology.h b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-topology.h index b8075a0..c589110 100644 --- a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-topology.h +++ b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-topology.h @@ -64,10 +64,19 @@ GVirConfigCapabilitiesCpuTopology * gvir_config_capabilities_cpu_topology_new_from_xml(const gchar *xml, GError **error); guint64 gvir_config_capabilities_cpu_topology_get_sockets(GVirConfigCapabilitiesCpuTopology *topology); +void +gvir_config_capabilities_cpu_topology_set_sockets(GVirConfigCapabilitiesCpuTopology *topology, + guint64 sockets); guint64 gvir_config_capabilities_cpu_topology_get_cores(GVirConfigCapabilitiesCpuTopology *topology); +void +gvir_config_capabilities_cpu_topology_set_cores(GVirConfigCapabilitiesCpuTopology *topology, + guint64 cores); guint64 gvir_config_capabilities_cpu_topology_get_threads(GVirConfigCapabilitiesCpuTopology *topology); +void +gvir_config_capabilities_cpu_topology_set_threads(GVirConfigCapabilitiesCpuTopology *topology, + guint64 threads);
G_END_DECLS
diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym index a7bb65d..9894a3b 100644 --- a/libvirt-gconfig/libvirt-gconfig.sym +++ b/libvirt-gconfig/libvirt-gconfig.sym @@ -432,6 +432,9 @@ LIBVIRT_GCONFIG_0.0.10 {
gvir_config_capabilities_cpu_topology_new; gvir_config_capabilities_cpu_topology_new_from_xml; + gvir_config_capabilities_cpu_topology_set_cores; + gvir_config_capabilities_cpu_topology_set_sockets; + gvir_config_capabilities_cpu_topology_set_threads; } LIBVIRT_GCONFIG_0.0.9;
ACK (still the issue with the section name, but I'm assuming all patches will get fixed after 1/8 is fixed). Christophe

From: "Zeeshan Ali (Khattak)" <zeeshanak@gnome.org> Setter for CapabilitiesCpuFeature.name. --- libvirt-gconfig/libvirt-gconfig-capabilities-cpu-feature.c | 12 ++++++++++++ libvirt-gconfig/libvirt-gconfig-capabilities-cpu-feature.h | 3 +++ libvirt-gconfig/libvirt-gconfig.sym | 2 ++ 3 files changed, 17 insertions(+) diff --git a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-feature.c b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-feature.c index 0c71885..98e736d 100644 --- a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-feature.c +++ b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-feature.c @@ -56,3 +56,15 @@ gvir_config_capabilities_cpu_feature_get_name(GVirConfigCapabilitiesCpuFeature * NULL, "name"); } + +void +gvir_config_capabilities_cpu_feature_set_name(GVirConfigCapabilitiesCpuFeature *feature, + const gchar *name) +{ + g_return_if_fail(GVIR_CONFIG_IS_CAPABILITIES_CPU_FEATURE(feature)); + g_return_if_fail(name != NULL); + + gvir_config_object_set_attribute(GVIR_CONFIG_OBJECT(feature), + "name", name, + NULL); +} diff --git a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-feature.h b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-feature.h index 8bb2f2b..f87693f 100644 --- a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-feature.h +++ b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-feature.h @@ -61,6 +61,9 @@ GType gvir_config_capabilities_cpu_feature_get_type(void); const gchar * gvir_config_capabilities_cpu_feature_get_name(GVirConfigCapabilitiesCpuFeature *feature); +void +gvir_config_capabilities_cpu_feature_set_name(GVirConfigCapabilitiesCpuFeature *feature, + const gchar *name); G_END_DECLS diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym index 9894a3b..57b446c 100644 --- a/libvirt-gconfig/libvirt-gconfig.sym +++ b/libvirt-gconfig/libvirt-gconfig.sym @@ -430,6 +430,8 @@ LIBVIRT_GCONFIG_0.0.10 { gvir_config_capabilities_cpu_add_feature; gvir_config_capabilities_cpu_set_topology; + gvir_config_capabilities_cpu_feature_set_name; + gvir_config_capabilities_cpu_topology_new; gvir_config_capabilities_cpu_topology_new_from_xml; gvir_config_capabilities_cpu_topology_set_cores; -- 1.7.10.4

ACK On Tue, Jun 26, 2012 at 05:56:16AM +0300, Zeeshan Ali (Khattak) wrote:
From: "Zeeshan Ali (Khattak)" <zeeshanak@gnome.org>
Setter for CapabilitiesCpuFeature.name. --- libvirt-gconfig/libvirt-gconfig-capabilities-cpu-feature.c | 12 ++++++++++++ libvirt-gconfig/libvirt-gconfig-capabilities-cpu-feature.h | 3 +++ libvirt-gconfig/libvirt-gconfig.sym | 2 ++ 3 files changed, 17 insertions(+)
diff --git a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-feature.c b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-feature.c index 0c71885..98e736d 100644 --- a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-feature.c +++ b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-feature.c @@ -56,3 +56,15 @@ gvir_config_capabilities_cpu_feature_get_name(GVirConfigCapabilitiesCpuFeature * NULL, "name"); } + +void +gvir_config_capabilities_cpu_feature_set_name(GVirConfigCapabilitiesCpuFeature *feature, + const gchar *name) +{ + g_return_if_fail(GVIR_CONFIG_IS_CAPABILITIES_CPU_FEATURE(feature)); + g_return_if_fail(name != NULL); + + gvir_config_object_set_attribute(GVIR_CONFIG_OBJECT(feature), + "name", name, + NULL); +} diff --git a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-feature.h b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-feature.h index 8bb2f2b..f87693f 100644 --- a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-feature.h +++ b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu-feature.h @@ -61,6 +61,9 @@ GType gvir_config_capabilities_cpu_feature_get_type(void);
const gchar * gvir_config_capabilities_cpu_feature_get_name(GVirConfigCapabilitiesCpuFeature *feature); +void +gvir_config_capabilities_cpu_feature_set_name(GVirConfigCapabilitiesCpuFeature *feature, + const gchar *name);
G_END_DECLS
diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym index 9894a3b..57b446c 100644 --- a/libvirt-gconfig/libvirt-gconfig.sym +++ b/libvirt-gconfig/libvirt-gconfig.sym @@ -430,6 +430,8 @@ LIBVIRT_GCONFIG_0.0.10 { gvir_config_capabilities_cpu_add_feature; gvir_config_capabilities_cpu_set_topology;
+ gvir_config_capabilities_cpu_feature_set_name; + gvir_config_capabilities_cpu_topology_new; gvir_config_capabilities_cpu_topology_new_from_xml; gvir_config_capabilities_cpu_topology_set_cores; -- 1.7.10.4
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list

From: "Zeeshan Ali (Khattak)" <zeeshanak@gnome.org> API to handle 'domain/cpu/feature' nodes. --- libvirt-gconfig/Makefile.am | 2 + .../libvirt-gconfig-domain-cpu-feature.c | 100 ++++++++++++++++++++ .../libvirt-gconfig-domain-cpu-feature.h | 81 ++++++++++++++++ libvirt-gconfig/libvirt-gconfig.h | 1 + libvirt-gconfig/libvirt-gconfig.sym | 7 ++ 5 files changed, 191 insertions(+) create mode 100644 libvirt-gconfig/libvirt-gconfig-domain-cpu-feature.c create mode 100644 libvirt-gconfig/libvirt-gconfig-domain-cpu-feature.h diff --git a/libvirt-gconfig/Makefile.am b/libvirt-gconfig/Makefile.am index 19aa6ba..7f0ea3b 100644 --- a/libvirt-gconfig/Makefile.am +++ b/libvirt-gconfig/Makefile.am @@ -33,6 +33,7 @@ GCONFIG_HEADER_FILES = \ libvirt-gconfig-domain-console.h \ libvirt-gconfig-domain-controller.h \ libvirt-gconfig-domain-controller-usb.h \ + libvirt-gconfig-domain-cpu-feature.h \ libvirt-gconfig-domain-device.h \ libvirt-gconfig-domain-disk.h \ libvirt-gconfig-domain-filesys.h \ @@ -101,6 +102,7 @@ GCONFIG_SOURCE_FILES = \ libvirt-gconfig-domain-console.c \ libvirt-gconfig-domain-controller.c \ libvirt-gconfig-domain-controller-usb.c \ + libvirt-gconfig-domain-cpu-feature.c \ libvirt-gconfig-domain-device.c \ libvirt-gconfig-domain-disk.c \ libvirt-gconfig-domain-filesys.c \ diff --git a/libvirt-gconfig/libvirt-gconfig-domain-cpu-feature.c b/libvirt-gconfig/libvirt-gconfig-domain-cpu-feature.c new file mode 100644 index 0000000..55dd375 --- /dev/null +++ b/libvirt-gconfig/libvirt-gconfig-domain-cpu-feature.c @@ -0,0 +1,100 @@ +/* + * libvirt-gconfig-capabilities-cpu-feature.c: libvirt domain CPU feature + * + * Copyright (C) 2008 Daniel P. Berrange + * Copyright (C) 2010-2012 Red Hat, Inc. + * + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Authors: Zeeshan Ali <zeenix@redhat.com> + * Daniel P. Berrange <berrange@redhat.com> + */ + +#include <config.h> + +#include "libvirt-gconfig/libvirt-gconfig.h" +#include "libvirt-gconfig/libvirt-gconfig-private.h" + +#define GVIR_CONFIG_DOMAIN_CPU_FEATURE_GET_PRIVATE(obj) \ + (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_CPU_FEATURE, GVirConfigDomainCpuFeaturePrivate)) + +struct _GVirConfigDomainCpuFeaturePrivate +{ + gboolean unused; +}; + +G_DEFINE_TYPE(GVirConfigDomainCpuFeature, gvir_config_domain_cpu_feature, GVIR_CONFIG_TYPE_CAPABILITIES_CPU_FEATURE); + +static void gvir_config_domain_cpu_feature_class_init(GVirConfigDomainCpuFeatureClass *klass) +{ + g_type_class_add_private(klass, sizeof(GVirConfigDomainCpuFeaturePrivate)); +} + +static void gvir_config_domain_cpu_feature_init(GVirConfigDomainCpuFeature *feature) +{ + g_debug("Init GVirConfigDomainCpuFeature=%p", feature); + + feature->priv = GVIR_CONFIG_DOMAIN_CPU_FEATURE_GET_PRIVATE(feature); +} + +GVirConfigDomainCpuFeature *gvir_config_domain_cpu_feature_new(void) +{ + GVirConfigObject *object; + + object = gvir_config_object_new(GVIR_CONFIG_TYPE_DOMAIN_CPU_FEATURE, + "feature", + NULL); + + return GVIR_CONFIG_DOMAIN_CPU_FEATURE(object); +} + +GVirConfigDomainCpuFeature * +gvir_config_domain_cpu_feature_new_from_xml(const gchar *xml, GError **error) +{ + GVirConfigObject *object; + + object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_DOMAIN_CPU_FEATURE, + "feature", + NULL, + xml, + error); + + return GVIR_CONFIG_DOMAIN_CPU_FEATURE(object); +} + +GVirConfigDomainCpuFeaturePolicy +gvir_config_domain_cpu_feature_get_policy(GVirConfigDomainCpuFeature *feature) +{ + g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_CPU_FEATURE(feature), + GVIR_CONFIG_DOMAIN_CPU_FEATURE_POLICY_REQUIRE); + + return gvir_config_object_get_attribute_genum + (GVIR_CONFIG_OBJECT(feature), + NULL, + "policy", + GVIR_CONFIG_TYPE_DOMAIN_CPU_FEATURE_POLICY, + GVIR_CONFIG_DOMAIN_CPU_FEATURE_POLICY_REQUIRE); +} + +void gvir_config_domain_cpu_feature_set_policy(GVirConfigDomainCpuFeature *feature, + GVirConfigDomainCpuFeaturePolicy policy) +{ + g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_CPU_FEATURE(feature)); + + gvir_config_object_set_attribute_with_type + (GVIR_CONFIG_OBJECT(feature), + "policy", GVIR_CONFIG_TYPE_DOMAIN_CPU_FEATURE_POLICY, policy, + NULL); +} diff --git a/libvirt-gconfig/libvirt-gconfig-domain-cpu-feature.h b/libvirt-gconfig/libvirt-gconfig-domain-cpu-feature.h new file mode 100644 index 0000000..e190380 --- /dev/null +++ b/libvirt-gconfig/libvirt-gconfig-domain-cpu-feature.h @@ -0,0 +1,81 @@ +/* + * libvirt-gconfig-capabilities-cpu-feature.h: libvirt domain CPU feature + * + * Copyright (C) 2010-2012 Red Hat, Inc. + * + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Authors: Zeeshan Ali <zeenix@redhat.com> + * Daniel P. Berrange <berrange@redhat.com> + */ + +#if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) +#error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." +#endif + +#ifndef __LIBVIRT_GCONFIG_DOMAIN_CPU_FEATURE_H__ +#define __LIBVIRT_GCONFIG_DOMAIN_CPU_FEATURE_H__ + +G_BEGIN_DECLS + +#define GVIR_CONFIG_TYPE_DOMAIN_CPU_FEATURE (gvir_config_domain_cpu_feature_get_type ()) +#define GVIR_CONFIG_DOMAIN_CPU_FEATURE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_CPU_FEATURE, GVirConfigDomainCpuFeature)) +#define GVIR_CONFIG_DOMAIN_CPU_FEATURE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_CPU_FEATURE, GVirConfigDomainCpuFeatureClass)) +#define GVIR_CONFIG_IS_DOMAIN_CPU_FEATURE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_CPU_FEATURE)) +#define GVIR_CONFIG_IS_DOMAIN_CPU_FEATURE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_CPU_FEATURE)) +#define GVIR_CONFIG_DOMAIN_CPU_FEATURE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_CPU_FEATURE, GVirConfigDomainCpuFeatureClass)) + +typedef struct _GVirConfigDomainCpuFeature GVirConfigDomainCpuFeature; +typedef struct _GVirConfigDomainCpuFeaturePrivate GVirConfigDomainCpuFeaturePrivate; +typedef struct _GVirConfigDomainCpuFeatureClass GVirConfigDomainCpuFeatureClass; + +struct _GVirConfigDomainCpuFeature +{ + GVirConfigCapabilitiesCpu parent; + + GVirConfigDomainCpuFeaturePrivate *priv; + + /* Do not add fields to this struct */ +}; + +struct _GVirConfigDomainCpuFeatureClass +{ + GVirConfigCapabilitiesCpuClass parent_class; + + gpointer padding[20]; +}; + +typedef enum { + GVIR_CONFIG_DOMAIN_CPU_FEATURE_POLICY_FORCE, + GVIR_CONFIG_DOMAIN_CPU_FEATURE_POLICY_REQUIRE, + GVIR_CONFIG_DOMAIN_CPU_FEATURE_POLICY_OPTIONAL, + GVIR_CONFIG_DOMAIN_CPU_FEATURE_POLICY_DISABLE, + GVIR_CONFIG_DOMAIN_CPU_FEATURE_POLICY_FORBID +} GVirConfigDomainCpuFeaturePolicy; + +GType gvir_config_domain_cpu_feature_get_type(void); +GVirConfigDomainCpuFeature *gvir_config_domain_cpu_feature_new(void); +GVirConfigDomainCpuFeature * +gvir_config_domain_cpu_feature_new_from_xml(const gchar *xml, GError **error); + +void +gvir_config_domain_cpu_feature_set_policy(GVirConfigDomainCpuFeature *feature, + GVirConfigDomainCpuFeaturePolicy policy); +GVirConfigDomainCpuFeaturePolicy +gvir_config_domain_cpu_feature_get_policy(GVirConfigDomainCpuFeature *feature); + +G_END_DECLS + +#endif /* __LIBVIRT_GCONFIG_DOMAIN_CPU_FEATURE_H__ */ diff --git a/libvirt-gconfig/libvirt-gconfig.h b/libvirt-gconfig/libvirt-gconfig.h index 1e69962..41c3d80 100644 --- a/libvirt-gconfig/libvirt-gconfig.h +++ b/libvirt-gconfig/libvirt-gconfig.h @@ -50,6 +50,7 @@ #include <libvirt-gconfig/libvirt-gconfig-domain-console.h> #include <libvirt-gconfig/libvirt-gconfig-domain-controller.h> #include <libvirt-gconfig/libvirt-gconfig-domain-controller-usb.h> +#include <libvirt-gconfig/libvirt-gconfig-domain-cpu-feature.h> #include <libvirt-gconfig/libvirt-gconfig-domain-device.h> #include <libvirt-gconfig/libvirt-gconfig-domain-disk.h> #include <libvirt-gconfig/libvirt-gconfig-domain-filesys.h> diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym index 57b446c..234ca93 100644 --- a/libvirt-gconfig/libvirt-gconfig.sym +++ b/libvirt-gconfig/libvirt-gconfig.sym @@ -437,6 +437,13 @@ LIBVIRT_GCONFIG_0.0.10 { gvir_config_capabilities_cpu_topology_set_cores; gvir_config_capabilities_cpu_topology_set_sockets; gvir_config_capabilities_cpu_topology_set_threads; + + gvir_config_domain_cpu_feature_get_type; + gvir_config_domain_cpu_feature_policy_get_type; + gvir_config_domain_cpu_feature_get_policy; + gvir_config_domain_cpu_feature_set_policy; + gvir_config_domain_cpu_feature_new; + gvir_config_domain_cpu_feature_new_from_xml; } LIBVIRT_GCONFIG_0.0.9; # .... define new API here using predicted next version number .... -- 1.7.10.4

On Tue, Jun 26, 2012 at 05:56:17AM +0300, Zeeshan Ali (Khattak) wrote:
From: "Zeeshan Ali (Khattak)" <zeeshanak@gnome.org>
API to handle 'domain/cpu/feature' nodes. --- libvirt-gconfig/Makefile.am | 2 + .../libvirt-gconfig-domain-cpu-feature.c | 100 ++++++++++++++++++++ .../libvirt-gconfig-domain-cpu-feature.h | 81 ++++++++++++++++ libvirt-gconfig/libvirt-gconfig.h | 1 + libvirt-gconfig/libvirt-gconfig.sym | 7 ++ 5 files changed, 191 insertions(+) create mode 100644 libvirt-gconfig/libvirt-gconfig-domain-cpu-feature.c create mode 100644 libvirt-gconfig/libvirt-gconfig-domain-cpu-feature.h
diff --git a/libvirt-gconfig/Makefile.am b/libvirt-gconfig/Makefile.am index 19aa6ba..7f0ea3b 100644 --- a/libvirt-gconfig/Makefile.am +++ b/libvirt-gconfig/Makefile.am @@ -33,6 +33,7 @@ GCONFIG_HEADER_FILES = \ libvirt-gconfig-domain-console.h \ libvirt-gconfig-domain-controller.h \ libvirt-gconfig-domain-controller-usb.h \ + libvirt-gconfig-domain-cpu-feature.h \ libvirt-gconfig-domain-device.h \ libvirt-gconfig-domain-disk.h \ libvirt-gconfig-domain-filesys.h \ @@ -101,6 +102,7 @@ GCONFIG_SOURCE_FILES = \ libvirt-gconfig-domain-console.c \ libvirt-gconfig-domain-controller.c \ libvirt-gconfig-domain-controller-usb.c \ + libvirt-gconfig-domain-cpu-feature.c \ libvirt-gconfig-domain-device.c \ libvirt-gconfig-domain-disk.c \ libvirt-gconfig-domain-filesys.c \ diff --git a/libvirt-gconfig/libvirt-gconfig-domain-cpu-feature.c b/libvirt-gconfig/libvirt-gconfig-domain-cpu-feature.c new file mode 100644 index 0000000..55dd375 --- /dev/null +++ b/libvirt-gconfig/libvirt-gconfig-domain-cpu-feature.c @@ -0,0 +1,100 @@ +/* + * libvirt-gconfig-capabilities-cpu-feature.c: libvirt domain CPU feature
still one occurrence of "capabilities" here
+ * + * Copyright (C) 2008 Daniel P. Berrange + * Copyright (C) 2010-2012 Red Hat, Inc. + * + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Authors: Zeeshan Ali <zeenix@redhat.com> + * Daniel P. Berrange <berrange@redhat.com> + */ + +#include <config.h> + +#include "libvirt-gconfig/libvirt-gconfig.h" +#include "libvirt-gconfig/libvirt-gconfig-private.h" + +#define GVIR_CONFIG_DOMAIN_CPU_FEATURE_GET_PRIVATE(obj) \ + (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_CPU_FEATURE, GVirConfigDomainCpuFeaturePrivate)) + +struct _GVirConfigDomainCpuFeaturePrivate +{ + gboolean unused; +}; + +G_DEFINE_TYPE(GVirConfigDomainCpuFeature, gvir_config_domain_cpu_feature, GVIR_CONFIG_TYPE_CAPABILITIES_CPU_FEATURE); + +static void gvir_config_domain_cpu_feature_class_init(GVirConfigDomainCpuFeatureClass *klass) +{ + g_type_class_add_private(klass, sizeof(GVirConfigDomainCpuFeaturePrivate)); +} + +static void gvir_config_domain_cpu_feature_init(GVirConfigDomainCpuFeature *feature) +{ + g_debug("Init GVirConfigDomainCpuFeature=%p", feature); + + feature->priv = GVIR_CONFIG_DOMAIN_CPU_FEATURE_GET_PRIVATE(feature); +} + +GVirConfigDomainCpuFeature *gvir_config_domain_cpu_feature_new(void) +{ + GVirConfigObject *object; + + object = gvir_config_object_new(GVIR_CONFIG_TYPE_DOMAIN_CPU_FEATURE, + "feature", + NULL); + + return GVIR_CONFIG_DOMAIN_CPU_FEATURE(object); +} + +GVirConfigDomainCpuFeature * +gvir_config_domain_cpu_feature_new_from_xml(const gchar *xml, GError **error) +{ + GVirConfigObject *object; + + object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_DOMAIN_CPU_FEATURE, + "feature", + NULL, + xml, + error); + + return GVIR_CONFIG_DOMAIN_CPU_FEATURE(object); +} + +GVirConfigDomainCpuFeaturePolicy +gvir_config_domain_cpu_feature_get_policy(GVirConfigDomainCpuFeature *feature) +{ + g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_CPU_FEATURE(feature), + GVIR_CONFIG_DOMAIN_CPU_FEATURE_POLICY_REQUIRE); + + return gvir_config_object_get_attribute_genum + (GVIR_CONFIG_OBJECT(feature), + NULL, + "policy", + GVIR_CONFIG_TYPE_DOMAIN_CPU_FEATURE_POLICY, + GVIR_CONFIG_DOMAIN_CPU_FEATURE_POLICY_REQUIRE); +} + +void gvir_config_domain_cpu_feature_set_policy(GVirConfigDomainCpuFeature *feature, + GVirConfigDomainCpuFeaturePolicy policy) +{ + g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_CPU_FEATURE(feature)); + + gvir_config_object_set_attribute_with_type + (GVIR_CONFIG_OBJECT(feature), + "policy", GVIR_CONFIG_TYPE_DOMAIN_CPU_FEATURE_POLICY, policy, + NULL); +} diff --git a/libvirt-gconfig/libvirt-gconfig-domain-cpu-feature.h b/libvirt-gconfig/libvirt-gconfig-domain-cpu-feature.h new file mode 100644 index 0000000..e190380 --- /dev/null +++ b/libvirt-gconfig/libvirt-gconfig-domain-cpu-feature.h @@ -0,0 +1,81 @@ +/* + * libvirt-gconfig-capabilities-cpu-feature.h: libvirt domain CPU feature
s/capabilities/domain
+ * + * Copyright (C) 2010-2012 Red Hat, Inc. + * + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Authors: Zeeshan Ali <zeenix@redhat.com> + * Daniel P. Berrange <berrange@redhat.com> + */ + +#if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) +#error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." +#endif + +#ifndef __LIBVIRT_GCONFIG_DOMAIN_CPU_FEATURE_H__ +#define __LIBVIRT_GCONFIG_DOMAIN_CPU_FEATURE_H__ + +G_BEGIN_DECLS + +#define GVIR_CONFIG_TYPE_DOMAIN_CPU_FEATURE (gvir_config_domain_cpu_feature_get_type ()) +#define GVIR_CONFIG_DOMAIN_CPU_FEATURE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_CPU_FEATURE, GVirConfigDomainCpuFeature)) +#define GVIR_CONFIG_DOMAIN_CPU_FEATURE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_CPU_FEATURE, GVirConfigDomainCpuFeatureClass)) +#define GVIR_CONFIG_IS_DOMAIN_CPU_FEATURE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_CPU_FEATURE)) +#define GVIR_CONFIG_IS_DOMAIN_CPU_FEATURE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_CPU_FEATURE)) +#define GVIR_CONFIG_DOMAIN_CPU_FEATURE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_CPU_FEATURE, GVirConfigDomainCpuFeatureClass)) + +typedef struct _GVirConfigDomainCpuFeature GVirConfigDomainCpuFeature; +typedef struct _GVirConfigDomainCpuFeaturePrivate GVirConfigDomainCpuFeaturePrivate; +typedef struct _GVirConfigDomainCpuFeatureClass GVirConfigDomainCpuFeatureClass; + +struct _GVirConfigDomainCpuFeature +{ + GVirConfigCapabilitiesCpu parent; + + GVirConfigDomainCpuFeaturePrivate *priv; + + /* Do not add fields to this struct */ +}; + +struct _GVirConfigDomainCpuFeatureClass +{ + GVirConfigCapabilitiesCpuClass parent_class; + + gpointer padding[20]; +}; + +typedef enum { + GVIR_CONFIG_DOMAIN_CPU_FEATURE_POLICY_FORCE, + GVIR_CONFIG_DOMAIN_CPU_FEATURE_POLICY_REQUIRE, + GVIR_CONFIG_DOMAIN_CPU_FEATURE_POLICY_OPTIONAL, + GVIR_CONFIG_DOMAIN_CPU_FEATURE_POLICY_DISABLE, + GVIR_CONFIG_DOMAIN_CPU_FEATURE_POLICY_FORBID +} GVirConfigDomainCpuFeaturePolicy; + +GType gvir_config_domain_cpu_feature_get_type(void); +GVirConfigDomainCpuFeature *gvir_config_domain_cpu_feature_new(void); +GVirConfigDomainCpuFeature * +gvir_config_domain_cpu_feature_new_from_xml(const gchar *xml, GError **error); + +void +gvir_config_domain_cpu_feature_set_policy(GVirConfigDomainCpuFeature *feature, + GVirConfigDomainCpuFeaturePolicy policy); +GVirConfigDomainCpuFeaturePolicy +gvir_config_domain_cpu_feature_get_policy(GVirConfigDomainCpuFeature *feature); + +G_END_DECLS + +#endif /* __LIBVIRT_GCONFIG_DOMAIN_CPU_FEATURE_H__ */ diff --git a/libvirt-gconfig/libvirt-gconfig.h b/libvirt-gconfig/libvirt-gconfig.h index 1e69962..41c3d80 100644 --- a/libvirt-gconfig/libvirt-gconfig.h +++ b/libvirt-gconfig/libvirt-gconfig.h @@ -50,6 +50,7 @@ #include <libvirt-gconfig/libvirt-gconfig-domain-console.h> #include <libvirt-gconfig/libvirt-gconfig-domain-controller.h> #include <libvirt-gconfig/libvirt-gconfig-domain-controller-usb.h> +#include <libvirt-gconfig/libvirt-gconfig-domain-cpu-feature.h> #include <libvirt-gconfig/libvirt-gconfig-domain-device.h> #include <libvirt-gconfig/libvirt-gconfig-domain-disk.h> #include <libvirt-gconfig/libvirt-gconfig-domain-filesys.h> diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym index 57b446c..234ca93 100644 --- a/libvirt-gconfig/libvirt-gconfig.sym +++ b/libvirt-gconfig/libvirt-gconfig.sym @@ -437,6 +437,13 @@ LIBVIRT_GCONFIG_0.0.10 { gvir_config_capabilities_cpu_topology_set_cores; gvir_config_capabilities_cpu_topology_set_sockets; gvir_config_capabilities_cpu_topology_set_threads; + + gvir_config_domain_cpu_feature_get_type; + gvir_config_domain_cpu_feature_policy_get_type; + gvir_config_domain_cpu_feature_get_policy; + gvir_config_domain_cpu_feature_set_policy; + gvir_config_domain_cpu_feature_new; + gvir_config_domain_cpu_feature_new_from_xml;
Usual order is _get_type, _new* and then _get/_set functions. ACK with these nits fixed. Christophe

From: "Zeeshan Ali (Khattak)" <zeeshanak@gnome.org> --- libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c | 30 +++++++++++++------- libvirt-gconfig/libvirt-gconfig-capabilities-cpu.h | 4 ++- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c index e517a20..03d77d6 100644 --- a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c +++ b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c @@ -37,10 +37,14 @@ struct _GVirConfigCapabilitiesCpuPrivate G_DEFINE_TYPE(GVirConfigCapabilitiesCpu, gvir_config_capabilities_cpu, GVIR_CONFIG_TYPE_OBJECT); +static GList * +_gvir_config_capabilities_cpu_get_features(GVirConfigCapabilitiesCpu *cpu); static void gvir_config_capabilities_cpu_class_init(GVirConfigCapabilitiesCpuClass *klass) { g_type_class_add_private(klass, sizeof(GVirConfigCapabilitiesCpuPrivate)); + + klass->get_features = _gvir_config_capabilities_cpu_get_features; } static void gvir_config_capabilities_cpu_init(GVirConfigCapabilitiesCpu *cpu) @@ -98,16 +102,8 @@ static gboolean add_feature(xmlNodePtr node, gpointer opaque) return TRUE; } -/** - * gvir_config_capabilities_cpu_get_features: - * - * Gets the features of this CPU. - * - * Returns: (element-type LibvirtGConfig.CapabilitiesCpuFeature) (transfer full): - * a newly allocated #GList of #GVirConfigCapabilitiesCpuFeature. - */ -GList * -gvir_config_capabilities_cpu_get_features(GVirConfigCapabilitiesCpu *cpu) +static GList * +_gvir_config_capabilities_cpu_get_features(GVirConfigCapabilitiesCpu *cpu) { struct GetFeatureData data; @@ -128,6 +124,20 @@ gvir_config_capabilities_cpu_get_features(GVirConfigCapabilitiesCpu *cpu) } /** + * gvir_config_capabilities_cpu_get_features: + * + * Gets the features of this CPU. + * + * Returns: (element-type LibvirtGConfig.CapabilitiesCpuFeature) (transfer full): + * a newly allocated #GList of #GVirConfigCapabilitiesCpuFeature. + */ +GList * +gvir_config_capabilities_cpu_get_features(GVirConfigCapabilitiesCpu *cpu) +{ + return GVIR_CONFIG_CAPABILITIES_CPU_GET_CLASS(cpu)->get_features(cpu); +} + +/** * gvir_config_capabilities_cpu_get_topology: * * Gets the topology of the cpu. diff --git a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.h b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.h index 67fe607..be6c06f 100644 --- a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.h +++ b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.h @@ -57,7 +57,9 @@ struct _GVirConfigCapabilitiesCpuClass { GVirConfigObjectClass parent_class; - gpointer padding[20]; + GList *(*get_features)(GVirConfigCapabilitiesCpu *cpu); + + gpointer padding[19]; }; GType gvir_config_capabilities_cpu_get_type(void); -- 1.7.10.4

ACK On Tue, Jun 26, 2012 at 05:56:18AM +0300, Zeeshan Ali (Khattak) wrote:
From: "Zeeshan Ali (Khattak)" <zeeshanak@gnome.org>
--- libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c | 30 +++++++++++++------- libvirt-gconfig/libvirt-gconfig-capabilities-cpu.h | 4 ++- 2 files changed, 23 insertions(+), 11 deletions(-)
diff --git a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c index e517a20..03d77d6 100644 --- a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c +++ b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c @@ -37,10 +37,14 @@ struct _GVirConfigCapabilitiesCpuPrivate
G_DEFINE_TYPE(GVirConfigCapabilitiesCpu, gvir_config_capabilities_cpu, GVIR_CONFIG_TYPE_OBJECT);
+static GList * +_gvir_config_capabilities_cpu_get_features(GVirConfigCapabilitiesCpu *cpu);
static void gvir_config_capabilities_cpu_class_init(GVirConfigCapabilitiesCpuClass *klass) { g_type_class_add_private(klass, sizeof(GVirConfigCapabilitiesCpuPrivate)); + + klass->get_features = _gvir_config_capabilities_cpu_get_features; }
static void gvir_config_capabilities_cpu_init(GVirConfigCapabilitiesCpu *cpu) @@ -98,16 +102,8 @@ static gboolean add_feature(xmlNodePtr node, gpointer opaque) return TRUE; }
-/** - * gvir_config_capabilities_cpu_get_features: - * - * Gets the features of this CPU. - * - * Returns: (element-type LibvirtGConfig.CapabilitiesCpuFeature) (transfer full): - * a newly allocated #GList of #GVirConfigCapabilitiesCpuFeature. - */ -GList * -gvir_config_capabilities_cpu_get_features(GVirConfigCapabilitiesCpu *cpu) +static GList * +_gvir_config_capabilities_cpu_get_features(GVirConfigCapabilitiesCpu *cpu) { struct GetFeatureData data;
@@ -128,6 +124,20 @@ gvir_config_capabilities_cpu_get_features(GVirConfigCapabilitiesCpu *cpu) }
/** + * gvir_config_capabilities_cpu_get_features: + * + * Gets the features of this CPU. + * + * Returns: (element-type LibvirtGConfig.CapabilitiesCpuFeature) (transfer full): + * a newly allocated #GList of #GVirConfigCapabilitiesCpuFeature. + */ +GList * +gvir_config_capabilities_cpu_get_features(GVirConfigCapabilitiesCpu *cpu) +{ + return GVIR_CONFIG_CAPABILITIES_CPU_GET_CLASS(cpu)->get_features(cpu); +} + +/** * gvir_config_capabilities_cpu_get_topology: * * Gets the topology of the cpu. diff --git a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.h b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.h index 67fe607..be6c06f 100644 --- a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.h +++ b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.h @@ -57,7 +57,9 @@ struct _GVirConfigCapabilitiesCpuClass { GVirConfigObjectClass parent_class;
- gpointer padding[20]; + GList *(*get_features)(GVirConfigCapabilitiesCpu *cpu); + + gpointer padding[19]; };
GType gvir_config_capabilities_cpu_get_type(void); -- 1.7.10.4
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list

From: "Zeeshan Ali (Khattak)" <zeeshanak@gnome.org> API to handle 'domain/cpu' nodes. --- libvirt-gconfig/Makefile.am | 2 + libvirt-gconfig/libvirt-gconfig-domain-cpu.c | 179 ++++++++++++++++++++++++++ libvirt-gconfig/libvirt-gconfig-domain-cpu.h | 88 +++++++++++++ libvirt-gconfig/libvirt-gconfig-domain.c | 38 ++++++ libvirt-gconfig/libvirt-gconfig-domain.h | 4 + libvirt-gconfig/libvirt-gconfig.h | 1 + libvirt-gconfig/libvirt-gconfig.sym | 14 ++ 7 files changed, 326 insertions(+) create mode 100644 libvirt-gconfig/libvirt-gconfig-domain-cpu.c create mode 100644 libvirt-gconfig/libvirt-gconfig-domain-cpu.h diff --git a/libvirt-gconfig/Makefile.am b/libvirt-gconfig/Makefile.am index 7f0ea3b..fa43f28 100644 --- a/libvirt-gconfig/Makefile.am +++ b/libvirt-gconfig/Makefile.am @@ -33,6 +33,7 @@ GCONFIG_HEADER_FILES = \ libvirt-gconfig-domain-console.h \ libvirt-gconfig-domain-controller.h \ libvirt-gconfig-domain-controller-usb.h \ + libvirt-gconfig-domain-cpu.h \ libvirt-gconfig-domain-cpu-feature.h \ libvirt-gconfig-domain-device.h \ libvirt-gconfig-domain-disk.h \ @@ -102,6 +103,7 @@ GCONFIG_SOURCE_FILES = \ libvirt-gconfig-domain-console.c \ libvirt-gconfig-domain-controller.c \ libvirt-gconfig-domain-controller-usb.c \ + libvirt-gconfig-domain-cpu.c \ libvirt-gconfig-domain-cpu-feature.c \ libvirt-gconfig-domain-device.c \ libvirt-gconfig-domain-disk.c \ diff --git a/libvirt-gconfig/libvirt-gconfig-domain-cpu.c b/libvirt-gconfig/libvirt-gconfig-domain-cpu.c new file mode 100644 index 0000000..0a39584 --- /dev/null +++ b/libvirt-gconfig/libvirt-gconfig-domain-cpu.c @@ -0,0 +1,179 @@ +/* + * libvirt-gconfig-domain-cpu.c: libvirt Domain CPU + * + * Copyright (C) 2008 Daniel P. Berrange + * Copyright (C) 2010-2012 Red Hat, Inc. + * + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Authors: Zeeshan Ali <zeenix@redhat.com> + * Daniel P. Berrange <berrange@redhat.com> + */ + +#include <config.h> + +#include "libvirt-gconfig/libvirt-gconfig.h" +#include "libvirt-gconfig/libvirt-gconfig-private.h" + +#define GVIR_CONFIG_DOMAIN_CPU_GET_PRIVATE(obj) \ + (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_CPU, GVirConfigDomainCpuPrivate)) + +struct _GVirConfigDomainCpuPrivate +{ + gboolean unused; +}; + +G_DEFINE_TYPE(GVirConfigDomainCpu, gvir_config_domain_cpu, GVIR_CONFIG_TYPE_CAPABILITIES_CPU); + +static GList * +_gvir_config_domain_cpu_get_features(GVirConfigCapabilitiesCpu *cpu); + +static void gvir_config_domain_cpu_class_init(GVirConfigDomainCpuClass *klass) +{ + GVirConfigCapabilitiesCpuClass *capabilities_class; + + capabilities_class = GVIR_CONFIG_CAPABILITIES_CPU_CLASS(klass); + capabilities_class->get_features = _gvir_config_domain_cpu_get_features; + + g_type_class_add_private(klass, sizeof(GVirConfigDomainCpuPrivate)); +} + +static void gvir_config_domain_cpu_init(GVirConfigDomainCpu *cpu) +{ + g_debug("Init GVirConfigDomainCpu=%p", cpu); + + cpu->priv = GVIR_CONFIG_DOMAIN_CPU_GET_PRIVATE(cpu); +} + +GVirConfigDomainCpu *gvir_config_domain_cpu_new(void) +{ + GVirConfigObject *object; + + object = gvir_config_object_new(GVIR_CONFIG_TYPE_DOMAIN_CPU, "cpu", NULL); + + return GVIR_CONFIG_DOMAIN_CPU(object); +} + +GVirConfigDomainCpu *gvir_config_domain_cpu_new_from_xml(const gchar *xml, + GError **error) +{ + GVirConfigObject *object; + + object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_DOMAIN_CPU, + "cpu", + NULL, + xml, + error); + + return GVIR_CONFIG_DOMAIN_CPU(object); +} + +struct GetFeatureData { + GVirConfigXmlDoc *doc; + const gchar *schema; + GList *features; +}; + +static gboolean add_feature(xmlNodePtr node, gpointer opaque) +{ + struct GetFeatureData* data = (struct GetFeatureData*)opaque; + GVirConfigObject *feature; + + if (g_strcmp0((const gchar *)node->name, "feature") != 0) + return TRUE; + + feature = gvir_config_object_new_from_tree + (GVIR_CONFIG_TYPE_DOMAIN_CPU_FEATURE, + data->doc, + data->schema, + node); + if (feature != NULL) + data->features = g_list_append(data->features, feature); + else + g_debug("Failed to parse %s node", node->name); + + return TRUE; +} + +static GList * +_gvir_config_domain_cpu_get_features(GVirConfigCapabilitiesCpu *cpu) +{ + struct GetFeatureData data; + + g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_CPU(cpu), NULL); + + data.schema = gvir_config_object_get_schema(GVIR_CONFIG_OBJECT(cpu)); + g_object_get(G_OBJECT(cpu), "doc", &data.doc, NULL); + g_return_val_if_fail(data.doc != NULL, NULL); + data.features = NULL; + + gvir_config_object_foreach_child(GVIR_CONFIG_OBJECT(cpu), + NULL, + add_feature, + &data); + g_clear_object(&data.doc); + + return data.features; +} + +GVirConfigDomainCpuMatchPolicy +gvir_config_domain_cpu_get_match_policy(GVirConfigDomainCpu *cpu) +{ + g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_CPU(cpu), + GVIR_CONFIG_DOMAIN_CPU_MATCH_POLICY_EXACT); + + return gvir_config_object_get_attribute_genum + (GVIR_CONFIG_OBJECT(cpu), + NULL, + "match", + GVIR_CONFIG_TYPE_DOMAIN_CPU_MATCH_POLICY, + GVIR_CONFIG_DOMAIN_CPU_MATCH_POLICY_EXACT); +} + +void gvir_config_domain_cpu_set_match_policy(GVirConfigDomainCpu *cpu, + GVirConfigDomainCpuMatchPolicy policy) +{ + g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_CPU(cpu)); + + gvir_config_object_set_attribute_with_type + (GVIR_CONFIG_OBJECT(cpu), + "match", GVIR_CONFIG_TYPE_DOMAIN_CPU_MATCH_POLICY, policy, + NULL); +} + +GVirConfigDomainCpuMode +gvir_config_domain_cpu_get_mode(GVirConfigDomainCpu *cpu) +{ + g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_CPU(cpu), + GVIR_CONFIG_DOMAIN_CPU_MODE_CUSTOM); + + return gvir_config_object_get_attribute_genum + (GVIR_CONFIG_OBJECT(cpu), + NULL, + "mode", + GVIR_CONFIG_TYPE_DOMAIN_CPU_MODE, + GVIR_CONFIG_DOMAIN_CPU_MODE_CUSTOM); +} + +void gvir_config_domain_cpu_set_mode(GVirConfigDomainCpu *cpu, + GVirConfigDomainCpuMode mode) +{ + g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_CPU(cpu)); + + gvir_config_object_set_attribute_with_type + (GVIR_CONFIG_OBJECT(cpu), + "mode", GVIR_CONFIG_TYPE_DOMAIN_CPU_MODE, mode, + NULL); +} diff --git a/libvirt-gconfig/libvirt-gconfig-domain-cpu.h b/libvirt-gconfig/libvirt-gconfig-domain-cpu.h new file mode 100644 index 0000000..0b14975 --- /dev/null +++ b/libvirt-gconfig/libvirt-gconfig-domain-cpu.h @@ -0,0 +1,88 @@ +/* + * libvirt-gconfig-domain-cpu.h: libvirt Domain CPU + * + * Copyright (C) 2010-2012 Red Hat, Inc. + * + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Authors: Zeeshan Ali <zeenix@redhat.com> + * Daniel P. Berrange <berrange@redhat.com> + */ + +#if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) +#error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." +#endif + +#ifndef __LIBVIRT_GCONFIG_DOMAIN_CPU_H__ +#define __LIBVIRT_GCONFIG_DOMAIN_CPU_H__ + +G_BEGIN_DECLS + +#define GVIR_CONFIG_TYPE_DOMAIN_CPU (gvir_config_domain_cpu_get_type ()) +#define GVIR_CONFIG_DOMAIN_CPU(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_CPU, GVirConfigDomainCpu)) +#define GVIR_CONFIG_DOMAIN_CPU_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_CPU, GVirConfigDomainCpuClass)) +#define GVIR_CONFIG_IS_DOMAIN_CPU(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_CPU)) +#define GVIR_CONFIG_IS_DOMAIN_CPU_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_CPU)) +#define GVIR_CONFIG_DOMAIN_CPU_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_CPU, GVirConfigDomainCpuClass)) + +typedef struct _GVirConfigDomainCpu GVirConfigDomainCpu; +typedef struct _GVirConfigDomainCpuPrivate GVirConfigDomainCpuPrivate; +typedef struct _GVirConfigDomainCpuClass GVirConfigDomainCpuClass; + +struct _GVirConfigDomainCpu +{ + GVirConfigCapabilitiesCpu parent; + + GVirConfigDomainCpuPrivate *priv; + + /* Do not add fields to this struct */ +}; + +struct _GVirConfigDomainCpuClass +{ + GVirConfigCapabilitiesCpuClass parent_class; + + gpointer padding[20]; +}; + +typedef enum { + GVIR_CONFIG_DOMAIN_CPU_MATCH_POLICY_MINIMUM, + GVIR_CONFIG_DOMAIN_CPU_MATCH_POLICY_EXACT, + GVIR_CONFIG_DOMAIN_CPU_MATCH_POLICY_STRICT +} GVirConfigDomainCpuMatchPolicy; + +typedef enum { + GVIR_CONFIG_DOMAIN_CPU_MODE_CUSTOM, + GVIR_CONFIG_DOMAIN_CPU_MODE_HOST_MODEL, + GVIR_CONFIG_DOMAIN_CPU_MODE_HOST_PASSTHROUGH +} GVirConfigDomainCpuMode; + +GType gvir_config_domain_cpu_get_type(void); +GVirConfigDomainCpu *gvir_config_domain_cpu_new(void); +GVirConfigDomainCpu *gvir_config_domain_cpu_new_from_xml(const gchar *xml, + GError **error); +void +gvir_config_domain_cpu_set_match_policy(GVirConfigDomainCpu *cpu, + GVirConfigDomainCpuMatchPolicy policy); +GVirConfigDomainCpuMatchPolicy +gvir_config_domain_cpu_get_match_policy(GVirConfigDomainCpu *cpu); +void gvir_config_domain_cpu_set_mode(GVirConfigDomainCpu *cpu, + GVirConfigDomainCpuMode mode); +GVirConfigDomainCpuMode +gvir_config_domain_cpu_get_mode(GVirConfigDomainCpu *cpu); + +G_END_DECLS + +#endif /* __LIBVIRT_GCONFIG_DOMAIN_CPU_H__ */ diff --git a/libvirt-gconfig/libvirt-gconfig-domain.c b/libvirt-gconfig/libvirt-gconfig-domain.c index fcb3172..2ca478f 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain.c +++ b/libvirt-gconfig/libvirt-gconfig-domain.c @@ -632,3 +632,41 @@ gchar *gvir_config_domain_get_custom_xml(GVirConfigDomain *domain, lookup_namespaced_node, &data); return gvir_config_xml_node_to_string(data.node); } + +/** + * gvir_config_domain_get_cpu: + * @domain: a #GVirConfigDomain + * + * Gets the CPU configuration of @domain + * + * Returns: (transfer full): A #GVirConfigDomainCpu. The returned object + * should be unreffed with g_object_unref() when no longer needed. + */ +GVirConfigDomainCpu *gvir_config_domain_get_cpu(GVirConfigDomain *domain) +{ + GVirConfigObject *object; + + g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN(domain), NULL); + + object = gvir_config_object_get_child_with_type(GVIR_CONFIG_OBJECT(domain), + "cpu", + GVIR_CONFIG_TYPE_DOMAIN_CPU); + + return GVIR_CONFIG_DOMAIN_CPU(object); +} + +/** + * gvir_config_domain_set_cpu: + * @domain: a #GVirConfigDomain + * @cpu: (allow-none): + */ +void gvir_config_domain_set_cpu(GVirConfigDomain *domain, + GVirConfigDomainCpu *cpu) +{ + g_return_if_fail(GVIR_CONFIG_IS_DOMAIN(domain)); + g_return_if_fail(cpu != NULL || GVIR_CONFIG_IS_DOMAIN_CPU(cpu)); + + gvir_config_object_attach_replace(GVIR_CONFIG_OBJECT(domain), + "cpu", + GVIR_CONFIG_OBJECT(cpu)); +} diff --git a/libvirt-gconfig/libvirt-gconfig-domain.h b/libvirt-gconfig/libvirt-gconfig-domain.h index af8b86a..b9a0dce 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain.h +++ b/libvirt-gconfig/libvirt-gconfig-domain.h @@ -31,6 +31,7 @@ #include <libvirt-gconfig/libvirt-gconfig-domain-os.h> #include <libvirt-gconfig/libvirt-gconfig-domain-device.h> #include <libvirt-gconfig/libvirt-gconfig-domain-seclabel.h> +#include <libvirt-gconfig/libvirt-gconfig-domain-cpu.h> G_BEGIN_DECLS @@ -137,6 +138,9 @@ gboolean gvir_config_domain_set_custom_xml(GVirConfigDomain *domain, GError **error); gchar *gvir_config_domain_get_custom_xml(GVirConfigDomain *domain, const gchar *ns_uri); +GVirConfigDomainCpu *gvir_config_domain_get_cpu(GVirConfigDomain *domain); +void gvir_config_domain_set_cpu(GVirConfigDomain *domain, + GVirConfigDomainCpu *cpu); G_END_DECLS diff --git a/libvirt-gconfig/libvirt-gconfig.h b/libvirt-gconfig/libvirt-gconfig.h index 41c3d80..4b5ccbd 100644 --- a/libvirt-gconfig/libvirt-gconfig.h +++ b/libvirt-gconfig/libvirt-gconfig.h @@ -50,6 +50,7 @@ #include <libvirt-gconfig/libvirt-gconfig-domain-console.h> #include <libvirt-gconfig/libvirt-gconfig-domain-controller.h> #include <libvirt-gconfig/libvirt-gconfig-domain-controller-usb.h> +#include <libvirt-gconfig/libvirt-gconfig-domain-cpu.h> #include <libvirt-gconfig/libvirt-gconfig-domain-cpu-feature.h> #include <libvirt-gconfig/libvirt-gconfig-domain-device.h> #include <libvirt-gconfig/libvirt-gconfig-domain-disk.h> diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym index 234ca93..cde5b08 100644 --- a/libvirt-gconfig/libvirt-gconfig.sym +++ b/libvirt-gconfig/libvirt-gconfig.sym @@ -438,6 +438,20 @@ LIBVIRT_GCONFIG_0.0.10 { gvir_config_capabilities_cpu_topology_set_sockets; gvir_config_capabilities_cpu_topology_set_threads; + gvir_config_domain_get_cpu; + gvir_config_domain_set_cpu; + + gvir_config_domain_cpu_get_type; + gvir_config_domain_cpu_match_policy_get_type; + gvir_config_domain_cpu_mode_get_type; + gvir_config_domain_cpu_get_features; + gvir_config_domain_cpu_get_match_policy; + gvir_config_domain_cpu_set_match_policy; + gvir_config_domain_cpu_get_mode; + gvir_config_domain_cpu_set_mode; + gvir_config_domain_cpu_new; + gvir_config_domain_cpu_new_from_xml; + gvir_config_domain_cpu_feature_get_type; gvir_config_domain_cpu_feature_policy_get_type; gvir_config_domain_cpu_feature_get_policy; -- 1.7.10.4

On Tue, Jun 26, 2012 at 05:56:19AM +0300, Zeeshan Ali (Khattak) wrote:
From: "Zeeshan Ali (Khattak)" <zeeshanak@gnome.org>
API to handle 'domain/cpu' nodes. --- libvirt-gconfig/Makefile.am | 2 + libvirt-gconfig/libvirt-gconfig-domain-cpu.c | 179 ++++++++++++++++++++++++++ libvirt-gconfig/libvirt-gconfig-domain-cpu.h | 88 +++++++++++++ libvirt-gconfig/libvirt-gconfig-domain.c | 38 ++++++ libvirt-gconfig/libvirt-gconfig-domain.h | 4 + libvirt-gconfig/libvirt-gconfig.h | 1 + libvirt-gconfig/libvirt-gconfig.sym | 14 ++ 7 files changed, 326 insertions(+) create mode 100644 libvirt-gconfig/libvirt-gconfig-domain-cpu.c create mode 100644 libvirt-gconfig/libvirt-gconfig-domain-cpu.h
diff --git a/libvirt-gconfig/Makefile.am b/libvirt-gconfig/Makefile.am index 7f0ea3b..fa43f28 100644 --- a/libvirt-gconfig/Makefile.am +++ b/libvirt-gconfig/Makefile.am @@ -33,6 +33,7 @@ GCONFIG_HEADER_FILES = \ libvirt-gconfig-domain-console.h \ libvirt-gconfig-domain-controller.h \ libvirt-gconfig-domain-controller-usb.h \ + libvirt-gconfig-domain-cpu.h \ libvirt-gconfig-domain-cpu-feature.h \ libvirt-gconfig-domain-device.h \ libvirt-gconfig-domain-disk.h \ @@ -102,6 +103,7 @@ GCONFIG_SOURCE_FILES = \ libvirt-gconfig-domain-console.c \ libvirt-gconfig-domain-controller.c \ libvirt-gconfig-domain-controller-usb.c \ + libvirt-gconfig-domain-cpu.c \ libvirt-gconfig-domain-cpu-feature.c \ libvirt-gconfig-domain-device.c \ libvirt-gconfig-domain-disk.c \ diff --git a/libvirt-gconfig/libvirt-gconfig-domain-cpu.c b/libvirt-gconfig/libvirt-gconfig-domain-cpu.c new file mode 100644 index 0000000..0a39584 --- /dev/null +++ b/libvirt-gconfig/libvirt-gconfig-domain-cpu.c @@ -0,0 +1,179 @@ +/* + * libvirt-gconfig-domain-cpu.c: libvirt Domain CPU + * + * Copyright (C) 2008 Daniel P. Berrange + * Copyright (C) 2010-2012 Red Hat, Inc. + * + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Authors: Zeeshan Ali <zeenix@redhat.com> + * Daniel P. Berrange <berrange@redhat.com> + */ + +#include <config.h> + +#include "libvirt-gconfig/libvirt-gconfig.h" +#include "libvirt-gconfig/libvirt-gconfig-private.h" + +#define GVIR_CONFIG_DOMAIN_CPU_GET_PRIVATE(obj) \ + (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_CPU, GVirConfigDomainCpuPrivate)) + +struct _GVirConfigDomainCpuPrivate +{ + gboolean unused; +}; + +G_DEFINE_TYPE(GVirConfigDomainCpu, gvir_config_domain_cpu, GVIR_CONFIG_TYPE_CAPABILITIES_CPU); + +static GList * +_gvir_config_domain_cpu_get_features(GVirConfigCapabilitiesCpu *cpu); + +static void gvir_config_domain_cpu_class_init(GVirConfigDomainCpuClass *klass) +{ + GVirConfigCapabilitiesCpuClass *capabilities_class; + + capabilities_class = GVIR_CONFIG_CAPABILITIES_CPU_CLASS(klass); + capabilities_class->get_features = _gvir_config_domain_cpu_get_features; + + g_type_class_add_private(klass, sizeof(GVirConfigDomainCpuPrivate)); +} + +static void gvir_config_domain_cpu_init(GVirConfigDomainCpu *cpu) +{ + g_debug("Init GVirConfigDomainCpu=%p", cpu); + + cpu->priv = GVIR_CONFIG_DOMAIN_CPU_GET_PRIVATE(cpu); +} + +GVirConfigDomainCpu *gvir_config_domain_cpu_new(void) +{ + GVirConfigObject *object; + + object = gvir_config_object_new(GVIR_CONFIG_TYPE_DOMAIN_CPU, "cpu", NULL); + + return GVIR_CONFIG_DOMAIN_CPU(object); +} + +GVirConfigDomainCpu *gvir_config_domain_cpu_new_from_xml(const gchar *xml, + GError **error) +{ + GVirConfigObject *object; + + object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_DOMAIN_CPU, + "cpu", + NULL, + xml, + error); + + return GVIR_CONFIG_DOMAIN_CPU(object); +} + +struct GetFeatureData { + GVirConfigXmlDoc *doc; + const gchar *schema; + GList *features; +}; + +static gboolean add_feature(xmlNodePtr node, gpointer opaque) +{ + struct GetFeatureData* data = (struct GetFeatureData*)opaque; + GVirConfigObject *feature; + + if (g_strcmp0((const gchar *)node->name, "feature") != 0) + return TRUE; + + feature = gvir_config_object_new_from_tree + (GVIR_CONFIG_TYPE_DOMAIN_CPU_FEATURE, + data->doc, + data->schema, + node); + if (feature != NULL) + data->features = g_list_append(data->features, feature); + else + g_debug("Failed to parse %s node", node->name); + + return TRUE; +} + +static GList * +_gvir_config_domain_cpu_get_features(GVirConfigCapabilitiesCpu *cpu) +{ + struct GetFeatureData data; + + g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_CPU(cpu), NULL); + + data.schema = gvir_config_object_get_schema(GVIR_CONFIG_OBJECT(cpu)); + g_object_get(G_OBJECT(cpu), "doc", &data.doc, NULL); + g_return_val_if_fail(data.doc != NULL, NULL); + data.features = NULL; + + gvir_config_object_foreach_child(GVIR_CONFIG_OBJECT(cpu), + NULL, + add_feature, + &data); + g_clear_object(&data.doc); + + return data.features; +}
The only difference between the base class implementation and this one is the type of the feature objects, it would be better to have an internal gvir_config_capabilities_get_features_with_type helper in the base class to avoid duplicating all of this.
+ +GVirConfigDomainCpuMatchPolicy +gvir_config_domain_cpu_get_match_policy(GVirConfigDomainCpu *cpu) +{ + g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_CPU(cpu), + GVIR_CONFIG_DOMAIN_CPU_MATCH_POLICY_EXACT); + + return gvir_config_object_get_attribute_genum + (GVIR_CONFIG_OBJECT(cpu), + NULL, + "match", + GVIR_CONFIG_TYPE_DOMAIN_CPU_MATCH_POLICY, + GVIR_CONFIG_DOMAIN_CPU_MATCH_POLICY_EXACT); +} + +void gvir_config_domain_cpu_set_match_policy(GVirConfigDomainCpu *cpu, + GVirConfigDomainCpuMatchPolicy policy) +{ + g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_CPU(cpu)); + + gvir_config_object_set_attribute_with_type + (GVIR_CONFIG_OBJECT(cpu), + "match", GVIR_CONFIG_TYPE_DOMAIN_CPU_MATCH_POLICY, policy, + NULL); +} + +GVirConfigDomainCpuMode +gvir_config_domain_cpu_get_mode(GVirConfigDomainCpu *cpu) +{ + g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_CPU(cpu), + GVIR_CONFIG_DOMAIN_CPU_MODE_CUSTOM); + + return gvir_config_object_get_attribute_genum + (GVIR_CONFIG_OBJECT(cpu), + NULL, + "mode", + GVIR_CONFIG_TYPE_DOMAIN_CPU_MODE, + GVIR_CONFIG_DOMAIN_CPU_MODE_CUSTOM); +} + +void gvir_config_domain_cpu_set_mode(GVirConfigDomainCpu *cpu, + GVirConfigDomainCpuMode mode) +{ + g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_CPU(cpu)); + + gvir_config_object_set_attribute_with_type + (GVIR_CONFIG_OBJECT(cpu), + "mode", GVIR_CONFIG_TYPE_DOMAIN_CPU_MODE, mode, + NULL); +} diff --git a/libvirt-gconfig/libvirt-gconfig-domain-cpu.h b/libvirt-gconfig/libvirt-gconfig-domain-cpu.h new file mode 100644 index 0000000..0b14975 --- /dev/null +++ b/libvirt-gconfig/libvirt-gconfig-domain-cpu.h @@ -0,0 +1,88 @@ +/* + * libvirt-gconfig-domain-cpu.h: libvirt Domain CPU + * + * Copyright (C) 2010-2012 Red Hat, Inc. + * + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Authors: Zeeshan Ali <zeenix@redhat.com> + * Daniel P. Berrange <berrange@redhat.com> + */ + +#if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) +#error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." +#endif + +#ifndef __LIBVIRT_GCONFIG_DOMAIN_CPU_H__ +#define __LIBVIRT_GCONFIG_DOMAIN_CPU_H__ + +G_BEGIN_DECLS + +#define GVIR_CONFIG_TYPE_DOMAIN_CPU (gvir_config_domain_cpu_get_type ()) +#define GVIR_CONFIG_DOMAIN_CPU(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_CPU, GVirConfigDomainCpu)) +#define GVIR_CONFIG_DOMAIN_CPU_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_CPU, GVirConfigDomainCpuClass)) +#define GVIR_CONFIG_IS_DOMAIN_CPU(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_CPU)) +#define GVIR_CONFIG_IS_DOMAIN_CPU_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_CPU)) +#define GVIR_CONFIG_DOMAIN_CPU_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_CPU, GVirConfigDomainCpuClass)) + +typedef struct _GVirConfigDomainCpu GVirConfigDomainCpu; +typedef struct _GVirConfigDomainCpuPrivate GVirConfigDomainCpuPrivate; +typedef struct _GVirConfigDomainCpuClass GVirConfigDomainCpuClass; + +struct _GVirConfigDomainCpu +{ + GVirConfigCapabilitiesCpu parent; + + GVirConfigDomainCpuPrivate *priv; + + /* Do not add fields to this struct */ +}; + +struct _GVirConfigDomainCpuClass +{ + GVirConfigCapabilitiesCpuClass parent_class; + + gpointer padding[20]; +}; + +typedef enum { + GVIR_CONFIG_DOMAIN_CPU_MATCH_POLICY_MINIMUM, + GVIR_CONFIG_DOMAIN_CPU_MATCH_POLICY_EXACT, + GVIR_CONFIG_DOMAIN_CPU_MATCH_POLICY_STRICT +} GVirConfigDomainCpuMatchPolicy; + +typedef enum { + GVIR_CONFIG_DOMAIN_CPU_MODE_CUSTOM, + GVIR_CONFIG_DOMAIN_CPU_MODE_HOST_MODEL, + GVIR_CONFIG_DOMAIN_CPU_MODE_HOST_PASSTHROUGH +} GVirConfigDomainCpuMode; + +GType gvir_config_domain_cpu_get_type(void); +GVirConfigDomainCpu *gvir_config_domain_cpu_new(void); +GVirConfigDomainCpu *gvir_config_domain_cpu_new_from_xml(const gchar *xml, + GError **error); +void +gvir_config_domain_cpu_set_match_policy(GVirConfigDomainCpu *cpu, + GVirConfigDomainCpuMatchPolicy policy); +GVirConfigDomainCpuMatchPolicy +gvir_config_domain_cpu_get_match_policy(GVirConfigDomainCpu *cpu); +void gvir_config_domain_cpu_set_mode(GVirConfigDomainCpu *cpu, + GVirConfigDomainCpuMode mode); +GVirConfigDomainCpuMode +gvir_config_domain_cpu_get_mode(GVirConfigDomainCpu *cpu); + +G_END_DECLS + +#endif /* __LIBVIRT_GCONFIG_DOMAIN_CPU_H__ */ diff --git a/libvirt-gconfig/libvirt-gconfig-domain.c b/libvirt-gconfig/libvirt-gconfig-domain.c index fcb3172..2ca478f 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain.c +++ b/libvirt-gconfig/libvirt-gconfig-domain.c @@ -632,3 +632,41 @@ gchar *gvir_config_domain_get_custom_xml(GVirConfigDomain *domain, lookup_namespaced_node, &data); return gvir_config_xml_node_to_string(data.node); } + +/** + * gvir_config_domain_get_cpu: + * @domain: a #GVirConfigDomain + * + * Gets the CPU configuration of @domain + * + * Returns: (transfer full): A #GVirConfigDomainCpu. The returned object + * should be unreffed with g_object_unref() when no longer needed. + */ +GVirConfigDomainCpu *gvir_config_domain_get_cpu(GVirConfigDomain *domain) +{ + GVirConfigObject *object; + + g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN(domain), NULL); + + object = gvir_config_object_get_child_with_type(GVIR_CONFIG_OBJECT(domain), + "cpu", + GVIR_CONFIG_TYPE_DOMAIN_CPU); + + return GVIR_CONFIG_DOMAIN_CPU(object); +} + +/** + * gvir_config_domain_set_cpu: + * @domain: a #GVirConfigDomain + * @cpu: (allow-none):
"the #GVirConfigDomainCpu description of the CPU to use for domain"
+ */ +void gvir_config_domain_set_cpu(GVirConfigDomain *domain, + GVirConfigDomainCpu *cpu) +{ + g_return_if_fail(GVIR_CONFIG_IS_DOMAIN(domain)); + g_return_if_fail(cpu != NULL || GVIR_CONFIG_IS_DOMAIN_CPU(cpu)); + + gvir_config_object_attach_replace(GVIR_CONFIG_OBJECT(domain), + "cpu", + GVIR_CONFIG_OBJECT(cpu)); +} diff --git a/libvirt-gconfig/libvirt-gconfig-domain.h b/libvirt-gconfig/libvirt-gconfig-domain.h index af8b86a..b9a0dce 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain.h +++ b/libvirt-gconfig/libvirt-gconfig-domain.h @@ -31,6 +31,7 @@ #include <libvirt-gconfig/libvirt-gconfig-domain-os.h> #include <libvirt-gconfig/libvirt-gconfig-domain-device.h> #include <libvirt-gconfig/libvirt-gconfig-domain-seclabel.h> +#include <libvirt-gconfig/libvirt-gconfig-domain-cpu.h>
G_BEGIN_DECLS
@@ -137,6 +138,9 @@ gboolean gvir_config_domain_set_custom_xml(GVirConfigDomain *domain, GError **error); gchar *gvir_config_domain_get_custom_xml(GVirConfigDomain *domain, const gchar *ns_uri); +GVirConfigDomainCpu *gvir_config_domain_get_cpu(GVirConfigDomain *domain); +void gvir_config_domain_set_cpu(GVirConfigDomain *domain, + GVirConfigDomainCpu *cpu);
G_END_DECLS
diff --git a/libvirt-gconfig/libvirt-gconfig.h b/libvirt-gconfig/libvirt-gconfig.h index 41c3d80..4b5ccbd 100644 --- a/libvirt-gconfig/libvirt-gconfig.h +++ b/libvirt-gconfig/libvirt-gconfig.h @@ -50,6 +50,7 @@ #include <libvirt-gconfig/libvirt-gconfig-domain-console.h> #include <libvirt-gconfig/libvirt-gconfig-domain-controller.h> #include <libvirt-gconfig/libvirt-gconfig-domain-controller-usb.h> +#include <libvirt-gconfig/libvirt-gconfig-domain-cpu.h> #include <libvirt-gconfig/libvirt-gconfig-domain-cpu-feature.h> #include <libvirt-gconfig/libvirt-gconfig-domain-device.h> #include <libvirt-gconfig/libvirt-gconfig-domain-disk.h> diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym index 234ca93..cde5b08 100644 --- a/libvirt-gconfig/libvirt-gconfig.sym +++ b/libvirt-gconfig/libvirt-gconfig.sym @@ -438,6 +438,20 @@ LIBVIRT_GCONFIG_0.0.10 { gvir_config_capabilities_cpu_topology_set_sockets; gvir_config_capabilities_cpu_topology_set_threads;
+ gvir_config_domain_get_cpu; + gvir_config_domain_set_cpu; + + gvir_config_domain_cpu_get_type; + gvir_config_domain_cpu_match_policy_get_type; + gvir_config_domain_cpu_mode_get_type;
I'd put the _new_* here for consistency with what's done for the other classes. Rest of the patch looks good. Christophe

From: "Zeeshan Ali (Khattak)" <zeeshanak@gnome.org> --- libvirt-gconfig/tests/test-domain-create.c | 55 ++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/libvirt-gconfig/tests/test-domain-create.c b/libvirt-gconfig/tests/test-domain-create.c index d22850d..c3e627b 100644 --- a/libvirt-gconfig/tests/test-domain-create.c +++ b/libvirt-gconfig/tests/test-domain-create.c @@ -173,6 +173,61 @@ int main(int argc, char **argv) gvir_config_domain_set_os(domain, os); g_object_unref(G_OBJECT(os)); + /* cpu node */ + GVirConfigDomainCpu *cpu; + + cpu = gvir_config_domain_cpu_new(); + + /* cpu/feature nodes */ + GVirConfigDomainCpuFeature *feature; + GList *cpu_features = NULL; + + gvir_config_domain_cpu_set_match_policy(cpu, GVIR_CONFIG_DOMAIN_CPU_MATCH_POLICY_STRICT); + gvir_config_domain_cpu_set_mode(cpu, GVIR_CONFIG_DOMAIN_CPU_MODE_HOST_PASSTHROUGH); + feature = gvir_config_domain_cpu_feature_new(); + gvir_config_capabilities_cpu_feature_set_name(GVIR_CONFIG_CAPABILITIES_CPU_FEATURE(feature), + "foo"); + gvir_config_domain_cpu_feature_set_policy(feature, GVIR_CONFIG_DOMAIN_CPU_FEATURE_POLICY_REQUIRE); + gvir_config_capabilities_cpu_add_feature(GVIR_CONFIG_CAPABILITIES_CPU(cpu), + GVIR_CONFIG_CAPABILITIES_CPU_FEATURE(feature)); + g_object_unref(feature); + + /* cpu/topology nodes */ + GVirConfigCapabilitiesCpuTopology *topology; + + topology = gvir_config_capabilities_cpu_topology_new(); + gvir_config_capabilities_cpu_topology_set_cores(topology, 1); + gvir_config_capabilities_cpu_topology_set_sockets(topology, 2); + gvir_config_capabilities_cpu_topology_set_threads(topology, 3); + gvir_config_capabilities_cpu_set_topology(GVIR_CONFIG_CAPABILITIES_CPU(cpu), + topology); + g_object_unref(topology); + gvir_config_domain_set_cpu(domain, cpu); + g_object_unref(cpu); + + cpu = gvir_config_domain_get_cpu(domain); + g_assert(gvir_config_domain_cpu_get_match_policy(cpu) == GVIR_CONFIG_DOMAIN_CPU_MATCH_POLICY_STRICT); + g_assert(gvir_config_domain_cpu_get_mode(cpu) == GVIR_CONFIG_DOMAIN_CPU_MODE_HOST_PASSTHROUGH); + g_assert(cpu != NULL); + g_assert(GVIR_CONFIG_IS_CAPABILITIES_CPU(cpu)); + + cpu_features = gvir_config_capabilities_cpu_get_features(GVIR_CONFIG_CAPABILITIES_CPU(cpu)); + g_assert(g_list_length(cpu_features) >= 1); + g_assert(GVIR_CONFIG_IS_DOMAIN_CPU_FEATURE(cpu_features->data)); + feature = GVIR_CONFIG_DOMAIN_CPU_FEATURE(cpu_features->data); + g_str_const_check(gvir_config_capabilities_cpu_feature_get_name + (GVIR_CONFIG_CAPABILITIES_CPU_FEATURE(feature)), "foo"); + g_assert(gvir_config_domain_cpu_feature_get_policy(feature) == GVIR_CONFIG_DOMAIN_CPU_FEATURE_POLICY_REQUIRE); + g_list_free_full(cpu_features, g_object_unref); + + topology = gvir_config_capabilities_cpu_get_topology(GVIR_CONFIG_CAPABILITIES_CPU(cpu)); + g_assert(topology != NULL); + g_assert(gvir_config_capabilities_cpu_topology_get_cores(topology) == 1); + g_assert(gvir_config_capabilities_cpu_topology_get_sockets(topology) == 2); + g_assert(gvir_config_capabilities_cpu_topology_get_threads(topology) == 3); + g_object_unref(topology); + g_object_unref(cpu); + /* disk node */ GVirConfigDomainDisk *disk; -- 1.7.10.4

ACK Christophe On Tue, Jun 26, 2012 at 05:56:20AM +0300, Zeeshan Ali (Khattak) wrote:
From: "Zeeshan Ali (Khattak)" <zeeshanak@gnome.org>
--- libvirt-gconfig/tests/test-domain-create.c | 55 ++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+)
diff --git a/libvirt-gconfig/tests/test-domain-create.c b/libvirt-gconfig/tests/test-domain-create.c index d22850d..c3e627b 100644 --- a/libvirt-gconfig/tests/test-domain-create.c +++ b/libvirt-gconfig/tests/test-domain-create.c @@ -173,6 +173,61 @@ int main(int argc, char **argv) gvir_config_domain_set_os(domain, os); g_object_unref(G_OBJECT(os));
+ /* cpu node */ + GVirConfigDomainCpu *cpu; + + cpu = gvir_config_domain_cpu_new(); + + /* cpu/feature nodes */ + GVirConfigDomainCpuFeature *feature; + GList *cpu_features = NULL; + + gvir_config_domain_cpu_set_match_policy(cpu, GVIR_CONFIG_DOMAIN_CPU_MATCH_POLICY_STRICT); + gvir_config_domain_cpu_set_mode(cpu, GVIR_CONFIG_DOMAIN_CPU_MODE_HOST_PASSTHROUGH); + feature = gvir_config_domain_cpu_feature_new(); + gvir_config_capabilities_cpu_feature_set_name(GVIR_CONFIG_CAPABILITIES_CPU_FEATURE(feature), + "foo"); + gvir_config_domain_cpu_feature_set_policy(feature, GVIR_CONFIG_DOMAIN_CPU_FEATURE_POLICY_REQUIRE); + gvir_config_capabilities_cpu_add_feature(GVIR_CONFIG_CAPABILITIES_CPU(cpu), + GVIR_CONFIG_CAPABILITIES_CPU_FEATURE(feature)); + g_object_unref(feature); + + /* cpu/topology nodes */ + GVirConfigCapabilitiesCpuTopology *topology; + + topology = gvir_config_capabilities_cpu_topology_new(); + gvir_config_capabilities_cpu_topology_set_cores(topology, 1); + gvir_config_capabilities_cpu_topology_set_sockets(topology, 2); + gvir_config_capabilities_cpu_topology_set_threads(topology, 3); + gvir_config_capabilities_cpu_set_topology(GVIR_CONFIG_CAPABILITIES_CPU(cpu), + topology); + g_object_unref(topology); + gvir_config_domain_set_cpu(domain, cpu); + g_object_unref(cpu); + + cpu = gvir_config_domain_get_cpu(domain); + g_assert(gvir_config_domain_cpu_get_match_policy(cpu) == GVIR_CONFIG_DOMAIN_CPU_MATCH_POLICY_STRICT); + g_assert(gvir_config_domain_cpu_get_mode(cpu) == GVIR_CONFIG_DOMAIN_CPU_MODE_HOST_PASSTHROUGH); + g_assert(cpu != NULL); + g_assert(GVIR_CONFIG_IS_CAPABILITIES_CPU(cpu)); + + cpu_features = gvir_config_capabilities_cpu_get_features(GVIR_CONFIG_CAPABILITIES_CPU(cpu)); + g_assert(g_list_length(cpu_features) >= 1); + g_assert(GVIR_CONFIG_IS_DOMAIN_CPU_FEATURE(cpu_features->data)); + feature = GVIR_CONFIG_DOMAIN_CPU_FEATURE(cpu_features->data); + g_str_const_check(gvir_config_capabilities_cpu_feature_get_name + (GVIR_CONFIG_CAPABILITIES_CPU_FEATURE(feature)), "foo"); + g_assert(gvir_config_domain_cpu_feature_get_policy(feature) == GVIR_CONFIG_DOMAIN_CPU_FEATURE_POLICY_REQUIRE); + g_list_free_full(cpu_features, g_object_unref); + + topology = gvir_config_capabilities_cpu_get_topology(GVIR_CONFIG_CAPABILITIES_CPU(cpu)); + g_assert(topology != NULL); + g_assert(gvir_config_capabilities_cpu_topology_get_cores(topology) == 1); + g_assert(gvir_config_capabilities_cpu_topology_get_sockets(topology) == 2); + g_assert(gvir_config_capabilities_cpu_topology_get_threads(topology) == 3); + g_object_unref(topology); + g_object_unref(cpu); + /* disk node */ GVirConfigDomainDisk *disk;
-- 1.7.10.4
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list

On Tue, Jun 26, 2012 at 05:56:13AM +0300, Zeeshan Ali (Khattak) wrote:
From: "Zeeshan Ali (Khattak)" <zeeshanak@gnome.org>
- gvir_config_capabilities_cpu_add_feature - gvir_config_capabilities_cpu_set_topology --- libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c | 32 ++++++++++++++++++++ libvirt-gconfig/libvirt-gconfig-capabilities-cpu.h | 6 ++++ libvirt-gconfig/libvirt-gconfig.sym | 6 ++++ 3 files changed, 44 insertions(+)
diff --git a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c index df77364..e517a20 100644 --- a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c +++ b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c @@ -56,6 +56,21 @@ gvir_config_capabilities_cpu_get_arch(GVirConfigCapabilitiesCpu *cpu) return gvir_config_object_get_node_content(GVIR_CONFIG_OBJECT(cpu), "arch"); }
+/** + * gvir_config_capabilities_cpu_add_feature: + * + * Adds a new feature to CPU.
I don't know if it's worth mentioning in the doc that some of these objects can be read-only? I'm not sure how to say that in a non-confusing way though.
+ */ +void gvir_config_capabilities_cpu_add_feature(GVirConfigCapabilitiesCpu *cpu, + GVirConfigCapabilitiesCpuFeature *feature) +{ + g_return_if_fail(GVIR_CONFIG_IS_CAPABILITIES_CPU(cpu)); + g_return_if_fail(GVIR_CONFIG_IS_CAPABILITIES_CPU_FEATURE(feature)); + + gvir_config_object_attach_add(GVIR_CONFIG_OBJECT(cpu), + GVIR_CONFIG_OBJECT(feature)); +} + struct GetFeatureData { GVirConfigXmlDoc *doc; const gchar *schema; @@ -133,3 +148,20 @@ gvir_config_capabilities_cpu_get_topology(GVirConfigCapabilitiesCpu *cpu)
return GVIR_CONFIG_CAPABILITIES_CPU_TOPOLOGY(object); } + +/** + * gvir_config_capabilities_cpu_set_topology: + * + * Sets the topology of the cpu. + */ +void +gvir_config_capabilities_cpu_set_topology(GVirConfigCapabilitiesCpu *cpu, + GVirConfigCapabilitiesCpuTopology *topology) +{ + g_return_if_fail(GVIR_CONFIG_IS_CAPABILITIES_CPU(cpu)); + g_return_if_fail(GVIR_CONFIG_IS_CAPABILITIES_CPU_TOPOLOGY(topology)); + + gvir_config_object_attach_replace(GVIR_CONFIG_OBJECT(cpu), + "topology", + GVIR_CONFIG_OBJECT(topology)); +} diff --git a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.h b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.h index 4d896ef..67fe607 100644 --- a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.h +++ b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.h @@ -29,6 +29,7 @@ #define __LIBVIRT_GCONFIG_CAPABILITIES_CPU_H__
#include "libvirt-gconfig-capabilities-cpu-topology.h" +#include "libvirt-gconfig-capabilities-cpu-feature.h"
G_BEGIN_DECLS
@@ -63,10 +64,15 @@ GType gvir_config_capabilities_cpu_get_type(void);
const gchar * gvir_config_capabilities_cpu_get_arch(GVirConfigCapabilitiesCpu *cpu); +void gvir_config_capabilities_cpu_add_feature(GVirConfigCapabilitiesCpu *cpu, + GVirConfigCapabilitiesCpuFeature *feature); GList * gvir_config_capabilities_cpu_get_features(GVirConfigCapabilitiesCpu *cpu); GVirConfigCapabilitiesCpuTopology * gvir_config_capabilities_cpu_get_topology(GVirConfigCapabilitiesCpu *cpu); +void +gvir_config_capabilities_cpu_set_topology(GVirConfigCapabilitiesCpu *cpu, + GVirConfigCapabilitiesCpuTopology *topology);
G_END_DECLS
diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym index 21942b4..1741c51 100644 --- a/libvirt-gconfig/libvirt-gconfig.sym +++ b/libvirt-gconfig/libvirt-gconfig.sym @@ -425,4 +425,10 @@ LIBVIRT_GCONFIG_0.0.9 { gvir_config_capabilities_host_get_cpu; } LIBVIRT_GCONFIG_0.0.8;
+LIBVIRT_GCONFIG_0.0.10 {
The version has been set to 0.1.0 in git. Apart from these comments, ACK Christophe
+ global: + gvir_config_capabilities_cpu_add_feature; + gvir_config_capabilities_cpu_set_topology; +} LIBVIRT_GCONFIG_0.0.9; + # .... define new API here using predicted next version number .... -- 1.7.10.4
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list

On Tue, Jun 26, 2012 at 12:16 PM, Christophe Fergeau <cfergeau@redhat.com> wrote:
On Tue, Jun 26, 2012 at 05:56:13AM +0300, Zeeshan Ali (Khattak) wrote:
From: "Zeeshan Ali (Khattak)" <zeeshanak@gnome.org>
- gvir_config_capabilities_cpu_add_feature - gvir_config_capabilities_cpu_set_topology --- libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c | 32 ++++++++++++++++++++ libvirt-gconfig/libvirt-gconfig-capabilities-cpu.h | 6 ++++ libvirt-gconfig/libvirt-gconfig.sym | 6 ++++ 3 files changed, 44 insertions(+)
diff --git a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c index df77364..e517a20 100644 --- a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c +++ b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c @@ -56,6 +56,21 @@ gvir_config_capabilities_cpu_get_arch(GVirConfigCapabilitiesCpu *cpu) return gvir_config_object_get_node_content(GVIR_CONFIG_OBJECT(cpu), "arch"); }
+/** + * gvir_config_capabilities_cpu_add_feature: + * + * Adds a new feature to CPU.
I don't know if it's worth mentioning in the doc that some of these objects can be read-only? I'm not sure how to say that in a non-confusing way though.
Why are they read-only? You can change the XML in every way you like, just that in case of capabilities itself, you cant do anything with the modified XML but since we don't have any API for setting caps, its already obvious? -- Regards, Zeeshan Ali (Khattak) FSF member#5124

On Tue, Jun 26, 2012 at 06:05:41PM +0300, Zeeshan Ali (Khattak) wrote:
On Tue, Jun 26, 2012 at 12:16 PM, Christophe Fergeau <cfergeau@redhat.com> wrote:
On Tue, Jun 26, 2012 at 05:56:13AM +0300, Zeeshan Ali (Khattak) wrote:
From: "Zeeshan Ali (Khattak)" <zeeshanak@gnome.org>
- gvir_config_capabilities_cpu_add_feature - gvir_config_capabilities_cpu_set_topology --- libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c | 32 ++++++++++++++++++++ libvirt-gconfig/libvirt-gconfig-capabilities-cpu.h | 6 ++++ libvirt-gconfig/libvirt-gconfig.sym | 6 ++++ 3 files changed, 44 insertions(+)
diff --git a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c index df77364..e517a20 100644 --- a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c +++ b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c @@ -56,6 +56,21 @@ gvir_config_capabilities_cpu_get_arch(GVirConfigCapabilitiesCpu *cpu) return gvir_config_object_get_node_content(GVIR_CONFIG_OBJECT(cpu), "arch"); }
+/** + * gvir_config_capabilities_cpu_add_feature: + * + * Adds a new feature to CPU.
I don't know if it's worth mentioning in the doc that some of these objects can be read-only? I'm not sure how to say that in a non-confusing way though.
Why are they read-only? You can change the XML in every way you like, just that in case of capabilities itself, you cant do anything with the modified XML but since we don't have any API for setting caps
This is what I wanted to say ;)
its already obvious?
Hmm true in this case, my comment would have been more appropriate on the topology setters then ;) Christophe
participants (2)
-
Christophe Fergeau
-
Zeeshan Ali (Khattak)