1 /*
2 * libvirt-gconfig-capabilities-cpu-topology.c: libvirt CPU topology capabilities
3 *
4 * Copyright (C) 2008 Daniel P. Berrange
5 * Copyright (C) 2010-2012 Red Hat, Inc.
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library. If not, see
19 * <http://www.gnu.org/licenses/>.
20 *
21 * Authors: Zeeshan Ali <zeenix@redhat.com>
22 * Daniel P. Berrange <berrange@redhat.com>
23 */
24
25 #include <config.h>
26
27 #include "libvirt-gconfig/libvirt-gconfig.h"
28 #include "libvirt-gconfig/libvirt-gconfig-private.h"
29
30 #define GVIR_CONFIG_CAPABILITIES_CPU_TOPOLOGY_GET_PRIVATE(obj) \
31 (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_CAPABILITIES_CPU_TOPOLOGY, GVirConfigCapabilitiesCpuTopologyPrivate))
32
33 struct _GVirConfigCapabilitiesCpuTopologyPrivate
34 {
35 gboolean unused;
36 };
37
38 G_DEFINE_TYPE_WITH_PRIVATE(GVirConfigCapabilitiesCpuTopology, gvir_config_capabilities_cpu_topology, GVIR_CONFIG_TYPE_OBJECT);
39
gvir_config_capabilities_cpu_topology_class_init(GVirConfigCapabilitiesCpuTopologyClass * klass G_GNUC_UNUSED)40 static void gvir_config_capabilities_cpu_topology_class_init(GVirConfigCapabilitiesCpuTopologyClass *klass G_GNUC_UNUSED)
41 {
42 }
43
gvir_config_capabilities_cpu_topology_init(GVirConfigCapabilitiesCpuTopology * topology)44 static void gvir_config_capabilities_cpu_topology_init(GVirConfigCapabilitiesCpuTopology *topology)
45 {
46 topology->priv = GVIR_CONFIG_CAPABILITIES_CPU_TOPOLOGY_GET_PRIVATE(topology);
47 }
48
gvir_config_capabilities_cpu_topology_new(void)49 GVirConfigCapabilitiesCpuTopology *gvir_config_capabilities_cpu_topology_new(void)
50 {
51 GVirConfigObject *object;
52
53 object = gvir_config_object_new(GVIR_CONFIG_TYPE_CAPABILITIES_CPU_TOPOLOGY,
54 "topology",
55 NULL);
56
57 return GVIR_CONFIG_CAPABILITIES_CPU_TOPOLOGY(object);
58 }
59
60 GVirConfigCapabilitiesCpuTopology *
gvir_config_capabilities_cpu_topology_new_from_xml(const gchar * xml,GError ** error)61 gvir_config_capabilities_cpu_topology_new_from_xml(const gchar *xml, GError **error)
62 {
63 GVirConfigObject *object;
64
65 object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_CAPABILITIES_CPU_TOPOLOGY,
66 "topology",
67 NULL,
68 xml,
69 error);
70
71 return GVIR_CONFIG_CAPABILITIES_CPU_TOPOLOGY(object);
72 }
73
74 guint64
gvir_config_capabilities_cpu_topology_get_sockets(GVirConfigCapabilitiesCpuTopology * topology)75 gvir_config_capabilities_cpu_topology_get_sockets(GVirConfigCapabilitiesCpuTopology *topology)
76 {
77 g_return_val_if_fail(GVIR_CONFIG_IS_CAPABILITIES_CPU_TOPOLOGY(topology), 0);
78
79 return gvir_config_object_get_attribute_uint64(GVIR_CONFIG_OBJECT(topology),
80 NULL,
81 "sockets",
82 0);
83 }
84
85 void
gvir_config_capabilities_cpu_topology_set_sockets(GVirConfigCapabilitiesCpuTopology * topology,guint64 sockets)86 gvir_config_capabilities_cpu_topology_set_sockets(GVirConfigCapabilitiesCpuTopology *topology,
87 guint64 sockets)
88 {
89 gvir_config_object_set_attribute_with_type(GVIR_CONFIG_OBJECT(topology),
90 "sockets", G_TYPE_UINT64, sockets,
91 NULL);
92 }
93
94 guint64
gvir_config_capabilities_cpu_topology_get_cores(GVirConfigCapabilitiesCpuTopology * topology)95 gvir_config_capabilities_cpu_topology_get_cores(GVirConfigCapabilitiesCpuTopology *topology)
96 {
97 g_return_val_if_fail(GVIR_CONFIG_IS_CAPABILITIES_CPU_TOPOLOGY(topology), 0);
98
99 return gvir_config_object_get_attribute_uint64(GVIR_CONFIG_OBJECT(topology),
100 NULL,
101 "cores",
102 0);
103 }
104
105 void
gvir_config_capabilities_cpu_topology_set_cores(GVirConfigCapabilitiesCpuTopology * topology,guint64 cores)106 gvir_config_capabilities_cpu_topology_set_cores(GVirConfigCapabilitiesCpuTopology *topology,
107 guint64 cores)
108 {
109 gvir_config_object_set_attribute_with_type(GVIR_CONFIG_OBJECT(topology),
110 "cores", G_TYPE_UINT64, cores,
111 NULL);
112 }
113
114 guint64
gvir_config_capabilities_cpu_topology_get_threads(GVirConfigCapabilitiesCpuTopology * topology)115 gvir_config_capabilities_cpu_topology_get_threads(GVirConfigCapabilitiesCpuTopology *topology)
116 {
117 g_return_val_if_fail(GVIR_CONFIG_IS_CAPABILITIES_CPU_TOPOLOGY(topology), 0);
118
119 return gvir_config_object_get_attribute_uint64(GVIR_CONFIG_OBJECT(topology),
120 NULL,
121 "threads",
122 0);
123 }
124
125 void
gvir_config_capabilities_cpu_topology_set_threads(GVirConfigCapabilitiesCpuTopology * topology,guint64 threads)126 gvir_config_capabilities_cpu_topology_set_threads(GVirConfigCapabilitiesCpuTopology *topology,
127 guint64 threads)
128 {
129 gvir_config_object_set_attribute_with_type(GVIR_CONFIG_OBJECT(topology),
130 "threads", G_TYPE_UINT64, threads,
131 NULL);
132 }
133