* [PATCH v2 ]libxl: allow to allocate cpumap with specific size
@ 2012-06-01 2:41 Zhang, Yang Z
2012-06-01 6:26 ` Dario Faggioli
0 siblings, 1 reply; 4+ messages in thread
From: Zhang, Yang Z @ 2012-06-01 2:41 UTC (permalink / raw)
To: xen-devel@lists.xensource.com; +Cc: Ian Campbell
Currently, libxl_cpumap_alloc()allocate the cpumap with size of max_cpus. In some place, we may want to allocate specific size of cpumap.
This patch allow to pass a argument to specific the size that you want to allocate. If pass 0, it means the size is equal to number of max_cpus.
Signed-off-by: Yang Zhang <yang.z.zhang@Intel.com>
diff -r d7318231cfe3 -r 3b0eed731020 tools/libxl/libxl.c
--- a/tools/libxl/libxl.c Thu May 31 10:18:52 2012 +0200
+++ b/tools/libxl/libxl.c Fri Jun 01 09:27:17 2012 +0800
@@ -577,7 +577,7 @@ libxl_cpupoolinfo * libxl_list_cpupool(l
ptr[i].poolid = info->cpupool_id;
ptr[i].sched = info->sched_id;
ptr[i].n_dom = info->n_dom;
- if (libxl_cpumap_alloc(ctx, &ptr[i].cpumap)) {
+ if (libxl_cpumap_alloc(ctx, &ptr[i].cpumap, 0)) {
xc_cpupool_infofree(ctx->xch, info);
break;
}
@@ -3177,7 +3177,7 @@ libxl_vcpuinfo *libxl_list_vcpu(libxl_ct
}
for (*nb_vcpu = 0; *nb_vcpu <= domaininfo.max_vcpu_id; ++*nb_vcpu, ++ptr) {
- if (libxl_cpumap_alloc(ctx, &ptr->cpumap)) {
+ if (libxl_cpumap_alloc(ctx, &ptr->cpumap, 0)) {
LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "allocating cpumap");
return NULL;
}
@@ -3854,8 +3854,8 @@ int libxl_cpupool_destroy(libxl_ctx *ctx
if ((info->cpupool_id != poolid) || (info->n_dom))
goto out;
- rc = ERROR_NOMEM;
- if (libxl_cpumap_alloc(ctx, &cpumap))
+ rc = libxl_cpumap_alloc(ctx, &cpumap, 0);
+ if (rc)
goto out;
memcpy(cpumap.map, info->cpumap, cpumap.size);
diff -r d7318231cfe3 -r 3b0eed731020 tools/libxl/libxl_create.c
--- a/tools/libxl/libxl_create.c Thu May 31 10:18:52 2012 +0200
+++ b/tools/libxl/libxl_create.c Fri Jun 01 09:27:17 2012 +0800
@@ -150,8 +150,8 @@ int libxl__domain_build_info_setdefault(
b_info->cur_vcpus = 1;
if (!b_info->cpumap.size) {
- if (libxl_cpumap_alloc(CTX, &b_info->cpumap))
- return ERROR_NOMEM;
+ if (libxl_cpumap_alloc(CTX, &b_info->cpumap, 0))
+ return ERROR_FAIL;
libxl_cpumap_set_any(&b_info->cpumap);
}
diff -r d7318231cfe3 -r 3b0eed731020 tools/libxl/libxl_utils.c
--- a/tools/libxl/libxl_utils.c Thu May 31 10:18:52 2012 +0200
+++ b/tools/libxl/libxl_utils.c Fri Jun 01 09:27:17 2012 +0800
@@ -490,19 +490,19 @@ int libxl_mac_to_device_nic(libxl_ctx *c
return rc;
}
-int libxl_cpumap_alloc(libxl_ctx *ctx, libxl_cpumap *cpumap)
+int libxl_cpumap_alloc(libxl_ctx *ctx, libxl_cpumap *cpumap, int max_cpus)
{
- int max_cpus;
int sz;
- max_cpus = libxl_get_max_cpus(ctx);
+ if (max_cpus < 0)
+ return ERROR_INVAL;
+ if (max_cpus == 0)
+ max_cpus = libxl_get_max_cpus(ctx);
if (max_cpus == 0)
return ERROR_FAIL;
sz = (max_cpus + 7) / 8;
- cpumap->map = calloc(sz, sizeof(*cpumap->map));
- if (!cpumap->map)
- return ERROR_NOMEM;
+ cpumap->map = libxl__calloc(NULL, sizeof(*cpumap->map), sz);
cpumap->size = sz;
return 0;
}
diff -r d7318231cfe3 -r 3b0eed731020 tools/libxl/libxl_utils.h
--- a/tools/libxl/libxl_utils.h Thu May 31 10:18:52 2012 +0200
+++ b/tools/libxl/libxl_utils.h Fri Jun 01 09:27:17 2012 +0800
@@ -63,7 +63,7 @@ int libxl_devid_to_device_nic(libxl_ctx
int libxl_vdev_to_device_disk(libxl_ctx *ctx, uint32_t domid, const char *vdev,
libxl_device_disk *disk);
-int libxl_cpumap_alloc(libxl_ctx *ctx, libxl_cpumap *cpumap);
+int libxl_cpumap_alloc(libxl_ctx *ctx, libxl_cpumap *cpumap, int max_cpus);
int libxl_cpumap_test(libxl_cpumap *cpumap, int cpu);
void libxl_cpumap_set(libxl_cpumap *cpumap, int cpu);
void libxl_cpumap_reset(libxl_cpumap *cpumap, int cpu);
diff -r d7318231cfe3 -r 3b0eed731020 tools/libxl/xl_cmdimpl.c
--- a/tools/libxl/xl_cmdimpl.c Thu May 31 10:18:52 2012 +0200
+++ b/tools/libxl/xl_cmdimpl.c Fri Jun 01 09:27:17 2012 +0800
@@ -503,7 +503,7 @@ static int vcpupin_parse(char *cpu, libx
return 0;
}
- if (libxl_cpumap_alloc(ctx, &exclude_cpumap)) {
+ if (libxl_cpumap_alloc(ctx, &exclude_cpumap, 0)) {
fprintf(stderr, "Error: Failed to allocate cpumap.\n");
return ENOMEM;
}
@@ -659,7 +659,7 @@ static void parse_config_data(const char
if (!xlu_cfg_get_list (config, "cpus", &cpus, 0, 1)) {
int i, n_cpus = 0;
- if (libxl_cpumap_alloc(ctx, &b_info->cpumap)) {
+ if (libxl_cpumap_alloc(ctx, &b_info->cpumap, 0)) {
fprintf(stderr, "Unable to allocate cpumap\n");
exit(1);
}
@@ -695,7 +695,7 @@ static void parse_config_data(const char
else if (!xlu_cfg_get_string (config, "cpus", &buf, 0)) {
char *buf2 = strdup(buf);
- if (libxl_cpumap_alloc(ctx, &b_info->cpumap)) {
+ if (libxl_cpumap_alloc(ctx, &b_info->cpumap, 0)) {
fprintf(stderr, "Unable to allocate cpumap\n");
exit(1);
}
@@ -1782,7 +1782,9 @@ start:
if (vcpu_to_pcpu) {
libxl_cpumap vcpu_cpumap;
- libxl_cpumap_alloc(ctx, &vcpu_cpumap);
+ ret = libxl_cpumap_alloc(ctx, &vcpu_cpumap, 0);
+ if (ret)
+ goto error_out;
for (i = 0; i < d_config.b_info.max_vcpus; i++) {
if (vcpu_to_pcpu[i] != -1) {
@@ -4054,7 +4056,7 @@ static void vcpupin(const char *d, const
find_domain(d);
- if (libxl_cpumap_alloc(ctx, &cpumap)) {
+ if (libxl_cpumap_alloc(ctx, &cpumap, 0)) {
goto vcpupin_out;
}
@@ -4111,7 +4113,7 @@ static void vcpuset(const char *d, const
find_domain(d);
- if (libxl_cpumap_alloc(ctx, &cpumap)) {
+ if (libxl_cpumap_alloc(ctx, &cpumap, 0)) {
fprintf(stderr, "libxl_cpumap_alloc failed\n");
return;
}
@@ -5970,7 +5972,7 @@ int main_cpupoolcreate(int argc, char **
fprintf(stderr, "libxl_get_freecpus failed\n");
goto out_cfg;
}
- if (libxl_cpumap_alloc(ctx, &cpumap)) {
+ if (libxl_cpumap_alloc(ctx, &cpumap, 0)) {
fprintf(stderr, "Failed to allocate cpumap\n");
goto out_cfg;
}
@@ -6337,7 +6339,7 @@ int main_cpupoolnumasplit(int argc, char
return -ERROR_FAIL;
}
- if (libxl_cpumap_alloc(ctx, &cpumap)) {
+ if (libxl_cpumap_alloc(ctx, &cpumap, 0)) {
fprintf(stderr, "Failed to allocate cpumap\n");
libxl_cputopology_list_free(topology, n_cpus);
return -ERROR_FAIL;
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v2 ]libxl: allow to allocate cpumap with specific size
2012-06-01 2:41 [PATCH v2 ]libxl: allow to allocate cpumap with specific size Zhang, Yang Z
@ 2012-06-01 6:26 ` Dario Faggioli
2012-06-01 6:30 ` Ian Campbell
0 siblings, 1 reply; 4+ messages in thread
From: Dario Faggioli @ 2012-06-01 6:26 UTC (permalink / raw)
To: Zhang, Yang Z; +Cc: xen-devel@lists.xensource.com, Ian Campbell
[-- Attachment #1.1: Type: text/plain, Size: 707 bytes --]
Hi all,
Sorry, my fault I missed the v1 of this but...
On Fri, 2012-06-01 at 02:41 +0000, Zhang, Yang Z wrote:
> Currently, libxl_cpumap_alloc()allocate the cpumap with size of max_cpus. In some place, we may want to allocate specific size of cpumap.
>
... Do we? I fail to see this in the code below (you're only replacing
libxl_cpumap_alloc calls with new versions _always_ passing 0 as
max_cpus, am I right?)
Dario
--
<<This happens because I choose it to happen!>> (Raistlin Majere)
-----------------------------------------------------------------
Dario Faggioli, Ph.D, http://retis.sssup.it/people/faggioli
Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK)
[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 198 bytes --]
[-- Attachment #2: Type: text/plain, Size: 126 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v2 ]libxl: allow to allocate cpumap with specific size
2012-06-01 6:26 ` Dario Faggioli
@ 2012-06-01 6:30 ` Ian Campbell
2012-06-01 6:38 ` Dario Faggioli
0 siblings, 1 reply; 4+ messages in thread
From: Ian Campbell @ 2012-06-01 6:30 UTC (permalink / raw)
To: Dario Faggioli; +Cc: Zhang, Yang Z, xen-devel@lists.xensource.com
On Fri, 2012-06-01 at 07:26 +0100, Dario Faggioli wrote:
> Hi all,
>
> Sorry, my fault I missed the v1 of this but...
>
> On Fri, 2012-06-01 at 02:41 +0000, Zhang, Yang Z wrote:
> > Currently, libxl_cpumap_alloc()allocate the cpumap with size of max_cpus. In some place, we may want to allocate specific size of cpumap.
> >
> ... Do we? I fail to see this in the code below (you're only replacing
> libxl_cpumap_alloc calls with new versions _always_ passing 0 as
> max_cpus, am I right?)
The change to actually use this is is a followup patch "libxl: allow to
set more than 31 vcpus".
Ian.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v2 ]libxl: allow to allocate cpumap with specific size
2012-06-01 6:30 ` Ian Campbell
@ 2012-06-01 6:38 ` Dario Faggioli
0 siblings, 0 replies; 4+ messages in thread
From: Dario Faggioli @ 2012-06-01 6:38 UTC (permalink / raw)
To: Ian Campbell; +Cc: Zhang, Yang Z, xen-devel@lists.xensource.com
[-- Attachment #1.1: Type: text/plain, Size: 936 bytes --]
On Fri, 2012-06-01 at 07:30 +0100, Ian Campbell wrote:
> > > Currently, libxl_cpumap_alloc()allocate the cpumap with size of max_cpus. In some place, we may want to allocate specific size of cpumap.
> > >
> > ... Do we? I fail to see this in the code below (you're only replacing
> > libxl_cpumap_alloc calls with new versions _always_ passing 0 as
> > max_cpus, am I right?)
>
> The change to actually use this is is a followup patch "libxl: allow to
> set more than 31 vcpus".
>
Yep, I saw that and commented on it too... If we go for this, I'd
suggest at least changing the changelog a bit and mention where/why
we're going to use it.
Dario
--
<<This happens because I choose it to happen!>> (Raistlin Majere)
-----------------------------------------------------------------
Dario Faggioli, Ph.D, http://retis.sssup.it/people/faggioli
Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK)
[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 198 bytes --]
[-- Attachment #2: Type: text/plain, Size: 126 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2012-06-01 6:38 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-06-01 2:41 [PATCH v2 ]libxl: allow to allocate cpumap with specific size Zhang, Yang Z
2012-06-01 6:26 ` Dario Faggioli
2012-06-01 6:30 ` Ian Campbell
2012-06-01 6:38 ` Dario Faggioli
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).