From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH v6 01/18] libxl: make cpupool_qualifier_to_cpupoolid a library function Date: Mon, 9 Jun 2014 13:43:12 +0100 Message-ID: <1402317809-26833-2-git-send-email-wei.liu2@citrix.com> References: <1402317809-26833-1-git-send-email-wei.liu2@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1402317809-26833-1-git-send-email-wei.liu2@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xen.org Cc: Wei Liu , ian.jackson@eu.citrix.com, ian.campbell@citrix.com List-Id: xen-devel@lists.xenproject.org Signed-off-by: Wei Liu Acked-by: Ian Campbell --- tools/libxl/libxl.h | 9 +++++++++ tools/libxl/libxl_utils.c | 31 ++++++++++++++++++++++++++++ tools/libxl/libxl_utils.h | 3 +++ tools/libxl/xl_cmdimpl.c | 49 +++++++++------------------------------------ 4 files changed, 52 insertions(+), 40 deletions(-) diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h index 80947c3..a57e2fe 100644 --- a/tools/libxl/libxl.h +++ b/tools/libxl/libxl.h @@ -67,6 +67,15 @@ * the same $(XEN_VERSION) (e.g. throughout a major release). */ +/* LIBXL_HAVE_CPUPOOL_QUALIFIER_TO_CPUPOOLID + * + * If this is defined, libxl has a library function called + * libxl_cpupool_qualifier_to_cpupoolid, which takes in a CPU pool + * qualifier in the form of number or string, then returns the ID of + * that CPU pool. + */ +#define LIBXL_HAVE_CPUPOOL_QUALIFIER_TO_CPUPOOLID 1 + /* * LIBXL_HAVE_FIRMWARE_PASSTHROUGH indicates the feature for * passing in SMBIOS and ACPI firmware to HVM guests is present diff --git a/tools/libxl/libxl_utils.c b/tools/libxl/libxl_utils.c index 1f334f2..476921e 100644 --- a/tools/libxl/libxl_utils.c +++ b/tools/libxl/libxl_utils.c @@ -108,6 +108,37 @@ int libxl_domain_qualifier_to_domid(libxl_ctx *ctx, const char *name, return rv; } +static int qualifier_to_id(const char *p, uint32_t *id_r) +{ + int i, alldigit; + + alldigit = 1; + for (i = 0; p[i]; i++) { + if (!isdigit((uint8_t)p[i])) { + alldigit = 0; + break; + } + } + + if (i > 0 && alldigit) { + *id_r = strtoul(p, NULL, 10); + return 0; + } else { + /* check here if it's a uuid and do proper conversion */ + } + return 1; +} + +int libxl_cpupool_qualifier_to_cpupoolid(libxl_ctx *ctx, const char *p, + uint32_t *poolid_r, + int *was_name_r) +{ + int was_name; + + was_name = qualifier_to_id(p, poolid_r); + if (was_name_r) *was_name_r = was_name; + return was_name ? libxl_name_to_cpupoolid(ctx, p, poolid_r) : 0; +} char *libxl_cpupoolid_to_name(libxl_ctx *ctx, uint32_t poolid) { diff --git a/tools/libxl/libxl_utils.h b/tools/libxl/libxl_utils.h index e37fb89..8bfb81b 100644 --- a/tools/libxl/libxl_utils.h +++ b/tools/libxl/libxl_utils.h @@ -23,6 +23,9 @@ unsigned long libxl_get_required_shadow_memory(unsigned long maxmem_kb, unsigned int libxl_name_to_domid(libxl_ctx *ctx, const char *name, uint32_t *domid); int libxl_domain_qualifier_to_domid(libxl_ctx *ctx, const char *name, uint32_t *domid); char *libxl_domid_to_name(libxl_ctx *ctx, uint32_t domid); +int libxl_cpupool_qualifier_to_cpupoolid(libxl_ctx *ctx, const char *p, + uint32_t *poolid_r, + int *was_name_r); int libxl_name_to_cpupoolid(libxl_ctx *ctx, const char *name, uint32_t *poolid); char *libxl_cpupoolid_to_name(libxl_ctx *ctx, uint32_t poolid); int libxl_cpupoolid_is_valid(libxl_ctx *ctx, uint32_t poolid); diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index 5195914..ac3188e 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -158,38 +158,6 @@ struct domain_create { }; - -static int qualifier_to_id(const char *p, uint32_t *id_r) -{ - int i, alldigit; - - alldigit = 1; - for (i = 0; p[i]; i++) { - if (!isdigit((uint8_t)p[i])) { - alldigit = 0; - break; - } - } - - if (i > 0 && alldigit) { - *id_r = strtoul(p, NULL, 10); - return 0; - } else { - /* check here if it's a uuid and do proper conversion */ - } - return 1; -} - -static int cpupool_qualifier_to_cpupoolid(const char *p, uint32_t *poolid_r, - int *was_name_r) -{ - int was_name; - - was_name = qualifier_to_id(p, poolid_r); - if (was_name_r) *was_name_r = was_name; - return was_name ? libxl_name_to_cpupoolid(ctx, p, poolid_r) : 0; -} - static uint32_t find_domain(const char *p) __attribute__((warn_unused_result)); static uint32_t find_domain(const char *p) { @@ -817,7 +785,7 @@ static void parse_config_data(const char *config_source, if (!xlu_cfg_get_string (config, "pool", &buf, 0)) { c_info->poolid = -1; - cpupool_qualifier_to_cpupoolid(buf, &c_info->poolid, NULL); + libxl_cpupool_qualifier_to_cpupoolid(ctx, buf, &c_info->poolid, NULL); } if (!libxl_cpupoolid_is_valid(ctx, c_info->poolid)) { fprintf(stderr, "Illegal pool specified\n"); @@ -5223,7 +5191,7 @@ static int sched_domain_output(libxl_scheduler sched, int (*output)(int), int rc = 0; if (cpupool) { - if (cpupool_qualifier_to_cpupoolid(cpupool, &poolid, NULL) || + if (libxl_cpupool_qualifier_to_cpupoolid(ctx, cpupool, &poolid, NULL) || !libxl_cpupoolid_is_valid(ctx, poolid)) { fprintf(stderr, "unknown cpupool \'%s\'\n", cpupool); return -ERROR_FAIL; @@ -5343,7 +5311,8 @@ int main_sched_credit(int argc, char **argv) uint32_t poolid = 0; if (cpupool) { - if (cpupool_qualifier_to_cpupoolid(cpupool, &poolid, NULL) || + if (libxl_cpupool_qualifier_to_cpupoolid(ctx, cpupool, + &poolid, NULL) || !libxl_cpupoolid_is_valid(ctx, poolid)) { fprintf(stderr, "unknown cpupool \'%s\'\n", cpupool); return -ERROR_FAIL; @@ -6852,7 +6821,7 @@ int main_cpupooldestroy(int argc, char **argv) pool = argv[optind]; - if (cpupool_qualifier_to_cpupoolid(pool, &poolid, NULL) || + if (libxl_cpupool_qualifier_to_cpupoolid(ctx, pool, &poolid, NULL) || !libxl_cpupoolid_is_valid(ctx, poolid)) { fprintf(stderr, "unknown cpupool \'%s\'\n", pool); return -ERROR_FAIL; @@ -6874,7 +6843,7 @@ int main_cpupoolrename(int argc, char **argv) pool = argv[optind++]; - if (cpupool_qualifier_to_cpupoolid(pool, &poolid, NULL) || + if (libxl_cpupool_qualifier_to_cpupoolid(ctx, pool, &poolid, NULL) || !libxl_cpupoolid_is_valid(ctx, poolid)) { fprintf(stderr, "unknown cpupool \'%s\'\n", pool); return -ERROR_FAIL; @@ -6912,7 +6881,7 @@ int main_cpupoolcpuadd(int argc, char **argv) cpu = atoi(argv[optind]); } - if (cpupool_qualifier_to_cpupoolid(pool, &poolid, NULL) || + if (libxl_cpupool_qualifier_to_cpupoolid(ctx, pool, &poolid, NULL) || !libxl_cpupoolid_is_valid(ctx, poolid)) { fprintf(stderr, "unknown cpupool \'%s\'\n", pool); return -ERROR_FAIL; @@ -6957,7 +6926,7 @@ int main_cpupoolcpuremove(int argc, char **argv) cpu = atoi(argv[optind]); } - if (cpupool_qualifier_to_cpupoolid(pool, &poolid, NULL) || + if (libxl_cpupool_qualifier_to_cpupoolid(ctx, pool, &poolid, NULL) || !libxl_cpupoolid_is_valid(ctx, poolid)) { fprintf(stderr, "unknown cpupool \'%s\'\n", pool); return -ERROR_FAIL; @@ -7001,7 +6970,7 @@ int main_cpupoolmigrate(int argc, char **argv) return -ERROR_FAIL; } - if (cpupool_qualifier_to_cpupoolid(pool, &poolid, NULL) || + if (libxl_cpupool_qualifier_to_cpupoolid(ctx, pool, &poolid, NULL) || !libxl_cpupoolid_is_valid(ctx, poolid)) { fprintf(stderr, "unknown cpupool \'%s\'\n", pool); return -ERROR_FAIL; -- 1.7.10.4