mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
libxl: make cpupool_qualifier_to_cpupoolid a library function
Signed-off-by: Wei Liu <wei.liu2@citrix.com> Acked-by: Ian Campbell <ian.campbell@citrix.com>
This commit is contained in:
1 parent
60572c972b
commit
3a773be856
4 files changed
+52
-40
No files matched your search
@@ -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
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||