[libvirt] [PATCH v2.1 04/21] add function bitmapFromBytemap() to convert bytemap to bitmap
Daniel Veillard
veillard at redhat.com
Wed Aug 22 06:39:53 UTC 2012
On Tue, Aug 21, 2012 at 05:18:27PM +0800, Hu Tao wrote:
> ---
> src/conf/domain_conf.c | 39 +++++++++++++++++++++++++--------------
> 1 file changed, 25 insertions(+), 14 deletions(-)
>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index c9f5a3c..4e52177 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -10893,36 +10893,47 @@ virDomainVcpuPinFindByVcpu(virDomainVcpuPinDefPtr *def,
> return NULL;
> }
>
> -int
> -virDomainVcpuPinAdd(virDomainDefPtr def,
> - unsigned char *cpumap,
> - int maplen,
> - int vcpu)
> +char *bitmapFromBytemap(unsigned char *bytemap, int maplen)
I had to make that function static as it is not used anywhere else and
not exported .
> {
> - virDomainVcpuPinDefPtr *vcpupin_list = NULL;
> - virDomainVcpuPinDefPtr vcpupin = NULL;
> - char *cpumask = NULL;
> + char *bitmap = NULL;
> int i;
>
> - if (VIR_ALLOC_N(cpumask, VIR_DOMAIN_CPUMASK_LEN) < 0) {
> + if (VIR_ALLOC_N(bitmap, VIR_DOMAIN_CPUMASK_LEN) < 0) {
> virReportOOMError();
> goto cleanup;
> }
>
> - /* Reset cpumask to all 0s. */
> + /* Reset bitmap to all 0s. */
> for (i = 0; i < VIR_DOMAIN_CPUMASK_LEN; i++)
> - cpumask[i] = 0;
> + bitmap[i] = 0;
>
> - /* Convert bitmap (cpumap) to cpumask, which is byte map? */
> + /* Convert bitmap (bytemap) to bitmap, which is byte map? */
> for (i = 0; i < maplen; i++) {
> int cur;
>
> for (cur = 0; cur < 8; cur++) {
> - if (cpumap[i] & (1 << cur))
> - cpumask[i * 8 + cur] = 1;
> + if (bytemap[i] & (1 << cur))
> + bitmap[i * 8 + cur] = 1;
> }
> }
>
> +cleanup:
> + return bitmap;
> +}
> +
> +int
> +virDomainVcpuPinAdd(virDomainDefPtr def,
> + unsigned char *cpumap,
> + int maplen,
> + int vcpu)
> +{
> + virDomainVcpuPinDefPtr *vcpupin_list = NULL;
> + virDomainVcpuPinDefPtr vcpupin = NULL;
> + char *cpumask = NULL;
> +
> + if ((cpumask = bitmapFromBytemap(cpumap, maplen)) == NULL)
> + goto cleanup;
> +
> /* No vcpupin exists yet. */
> if (!def->cputune.nvcpupin) {
> if (VIR_ALLOC(vcpupin) < 0) {
Fine other wise, ACK,
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/
daniel at veillard.com | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library http://libvirt.org/
More information about the libvir-list
mailing list