[libvirt] [PATCH 4/5] capabilities: Switch CPU data in NUMA topology to a struct
Daniel P. Berrange
berrange at redhat.com
Tue Jan 22 17:06:06 UTC 2013
On Sat, Jan 19, 2013 at 12:06:41AM +0100, Peter Krempa wrote:
> This will allow storing additional topology data in the NUMA topology
> definition.
>
> This patch changes the storage type and fixes fallback of the change
s/fallback/fallout/
> across the drivers using it.
>
> This patch also changes semantics of adding new NUMA cell information.
> Until now the data were re-allocated and copied to the topology
> definition. This patch changes the addition function to steal the
> pointer to a pre-allocated structure to simplify the code.
> ---
> src/conf/capabilities.c | 29 ++++++++++++++++++-----------
> src/conf/capabilities.h | 14 ++++++++++++--
> src/nodeinfo.c | 22 ++++++++++++----------
> src/qemu/qemu_process.c | 2 +-
> src/test/test_driver.c | 15 ++++++++++++---
> src/xen/xend_internal.c | 24 +++++++++++++-----------
> 6 files changed, 68 insertions(+), 38 deletions(-)
>
> diff --git a/src/conf/capabilities.c b/src/conf/capabilities.c
> index 0d2512e..814c4d6 100644
> --- a/src/conf/capabilities.c
> +++ b/src/conf/capabilities.c
> @@ -65,12 +65,26 @@ virCapabilitiesNew(virArch hostarch,
> return caps;
> }
>
> +void
> +virCapabilitiesFreeHostNUMACellCPU(virCapsHostNUMACellCPUPtr cpu)
> +{
> + if (!cpu)
> + return;
> +
> + VIR_FREE(cpu->siblings_list);
> +}
> +
> static void
> virCapabilitiesFreeHostNUMACell(virCapsHostNUMACellPtr cell)
> {
> + int i;
s/int/size_t/
> +
> if (cell == NULL)
> return;
>
> + for (i = 0; i < cell->ncpus; i++)
> + virCapabilitiesFreeHostNUMACellCPU(cell->cpus + i);
> +
> VIR_FREE(cell->cpus);
> VIR_FREE(cell);
> }
> diff --git a/src/conf/capabilities.h b/src/conf/capabilities.h
> index 19b99c6..124d8c1 100644
> --- a/src/conf/capabilities.h
> +++ b/src/conf/capabilities.h
> @@ -84,12 +84,21 @@ struct _virCapsGuest {
> virCapsGuestFeaturePtr *features;
> };
>
> +typedef struct _virCapsHostNUMACellCPU virCapsHostNUMACellCPU;
> +typedef virCapsHostNUMACellCPU *virCapsHostNUMACellCPUPtr;
> +struct _virCapsHostNUMACellCPU {
> + int id;
> + int socket_id;
> + int core_id;
s/int/unsigned/ since we don't need to store -ve numbers
> + char *siblings_list;
Agree that this would be nicer as a virBitmap
> diff --git a/src/nodeinfo.c b/src/nodeinfo.c
> index 477104f..dffe7d1 100644
> --- a/src/nodeinfo.c
> +++ b/src/nodeinfo.c
> @@ -79,9 +79,11 @@ freebsdNodeGetCPUCount(void)
> #ifdef __linux__
> # define CPUINFO_PATH "/proc/cpuinfo"
> # define SYSFS_SYSTEM_PATH "/sys/devices/system"
> +# define SYSFS_CPU_PATH SYSFS_SYSTEM_PATH"/cpu"
> # define PROCSTAT_PATH "/proc/stat"
> # define MEMINFO_PATH "/proc/meminfo"
> # define SYSFS_MEMORY_SHARED_PATH "/sys/kernel/mm/ksm"
> +# define SYSFS_THREAD_SIBLINGS_LIST_LENGHT_MAX 1024
I think these two additions were meant for the next patch
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
More information about the libvir-list
mailing list