[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH V3 06/10] NUMA: split out the common range parse
From: |
Bandan Das |
Subject: |
Re: [Qemu-devel] [PATCH V3 06/10] NUMA: split out the common range parser |
Date: |
Mon, 24 Jun 2013 15:15:48 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.2 (gnu/linux) |
Wanlong Gao <address@hidden> writes:
> Since cpus parser and hostnode parser have the common range parser
> part, split it out to the common range parser to avoid the duplicate
> code.
>
> Signed-off-by: Wanlong Gao <address@hidden>
> ---
> vl.c | 89
> ++++++++++++++++++++++++++++----------------------------------------
> 1 file changed, 37 insertions(+), 52 deletions(-)
For the patch order, I was thinking along the lines of introducing the common
function first followed by the ones that use it, but I guess this is fine too :)
Thanks for taking care of this!
Reviewed-by: Bandan Das <address@hidden>
> diff --git a/vl.c b/vl.c
> index 79c39b9..c9d25bd 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -1338,47 +1338,55 @@ char *get_boot_devices_list(size_t *size)
> return list;
> }
>
> -static void numa_node_parse_cpus(int nodenr, const char *cpus, Error **errp)
> +static int numa_node_parse_common(const char *str,
> + unsigned long long *value,
> + unsigned long long *endvalue)
> {
> char *endptr;
> - unsigned long long value, endvalue;
> -
> - /* Empty CPU range strings will be considered valid, they will simply
> - * not set any bit in the CPU bitmap.
> - */
> - if (!*cpus) {
> - return;
> + if (parse_uint(str, value, &endptr, 10) < 0) {
> + return -1;
> }
>
> - if (parse_uint(cpus, &value, &endptr, 10) < 0) {
> - goto error;
> - }
> if (*endptr == '-') {
> - if (parse_uint_full(endptr + 1, &endvalue, 10) < 0) {
> - goto error;
> + if (parse_uint_full(endptr + 1, endvalue, 10) < 0) {
> + return -1;
> }
> } else if (*endptr == '\0') {
> - endvalue = value;
> + *endvalue = *value;
> } else {
> - goto error;
> + return -1;
> }
>
> - if (endvalue >= MAX_CPUMASK_BITS) {
> - endvalue = MAX_CPUMASK_BITS - 1;
> - fprintf(stderr,
> - "qemu: NUMA: A max of %d VCPUs are supported\n",
> - MAX_CPUMASK_BITS);
> + if (*endvalue >= MAX_CPUMASK_BITS) {
> + *endvalue = MAX_CPUMASK_BITS - 1;
> + fprintf(stderr, "qemu: NUMA: A max number %d is supported\n",
> + MAX_CPUMASK_BITS);
> }
>
> - if (endvalue < value) {
> - goto error;
> + if (*endvalue < *value) {
> + return -1;
> }
>
> - bitmap_set(numa_info[nodenr].node_cpu, value, endvalue-value+1);
> - return;
> + return 0;
> +}
>
> -error:
> - error_setg(errp, "Invalid NUMA CPU range: %s\n", cpus);
> +static void numa_node_parse_cpus(int nodenr, const char *cpus, Error **errp)
> +{
> + unsigned long long value, endvalue;
> +
> + /* Empty CPU range strings will be considered valid, they will simply
> + * not set any bit in the CPU bitmap.
> + */
> + if (!*cpus) {
> + return;
> + }
> +
> + if (numa_node_parse_common(cpus, &value, &endvalue) < 0) {
> + error_setg(errp, "Invalid NUMA CPU range: %s", cpus);
> + return;
> + }
> +
> + bitmap_set(numa_info[nodenr].node_cpu, value, endvalue-value+1);
> return;
> }
>
> @@ -1403,7 +1411,6 @@ void numa_node_parse_mpol(int nodenr, const char *mpol,
> Error **errp)
> void numa_node_parse_hostnode(int nodenr, const char *hostnode, Error **errp)
> {
> unsigned long long value, endvalue;
> - char *endptr;
> bool clear = false;
> unsigned long *bm = numa_info[nodenr].host_mem;
>
> @@ -1422,27 +1429,9 @@ void numa_node_parse_hostnode(int nodenr, const char
> *hostnode, Error **errp)
> return;
> }
>
> - if (parse_uint(hostnode, &value, &endptr, 10) < 0)
> - goto error;
> - if (*endptr == '-') {
> - if (parse_uint_full(endptr + 1, &endvalue, 10) < 0) {
> - goto error;
> - }
> - } else if (*endptr == '\0') {
> - endvalue = value;
> - } else {
> - goto error;
> - }
> -
> - if (endvalue >= MAX_CPUMASK_BITS) {
> - endvalue = MAX_CPUMASK_BITS - 1;
> - fprintf(stderr,
> - "qemu: NUMA: A max of %d host nodes are supported\n",
> - MAX_CPUMASK_BITS);
> - }
> -
> - if (endvalue < value) {
> - goto error;
> + if (numa_node_parse_common(hostnode, &value, &endvalue) < 0) {
> + error_setg(errp, "Invalid host NUMA ndoes range: %s", hostnode);
> + return;
> }
>
> if (clear)
> @@ -1451,10 +1440,6 @@ void numa_node_parse_hostnode(int nodenr, const char
> *hostnode, Error **errp)
> bitmap_set(bm, value, endvalue - value + 1);
>
> return;
> -
> -error:
> - error_setg(errp, "Invalid host NUMA nodes range: %s", hostnode);
> - return;
> }
>
> static int numa_add_cpus(const char *name, const char *value, void *opaque)
- [Qemu-devel] [PATCH V3 00/10] Add support for binding guest numa nodes to host numa nodes, Wanlong Gao, 2013/06/24
- [Qemu-devel] [PATCH V3 02/10] NUMA: Add numa_info structure to contain numa nodes info, Wanlong Gao, 2013/06/24
- [Qemu-devel] [PATCH V3 03/10] NUMA: Add Linux libnuma detection, Wanlong Gao, 2013/06/24
- [Qemu-devel] [PATCH V3 04/10] NUMA: parse guest numa nodes memory policy, Wanlong Gao, 2013/06/24
- [Qemu-devel] [PATCH V3 07/10] NUMA: set guest numa nodes memory policy, Wanlong Gao, 2013/06/24
- [Qemu-devel] [PATCH V3 09/10] NUMA: add hmp command set-mpol, Wanlong Gao, 2013/06/24
- [Qemu-devel] [PATCH V3 05/10] NUMA: handle Error in cpus, mpol and hostnode parser, Wanlong Gao, 2013/06/24
- [Qemu-devel] [PATCH V3 01/10] NUMA: Support multiple CPU ranges on -numa option, Wanlong Gao, 2013/06/24
- [Qemu-devel] [PATCH V3 06/10] NUMA: split out the common range parser, Wanlong Gao, 2013/06/24
- Re: [Qemu-devel] [PATCH V3 06/10] NUMA: split out the common range parser,
Bandan Das <=
- [Qemu-devel] [PATCH V3 08/10] NUMA: add qmp command set-mpol to set memory policy for NUMA node, Wanlong Gao, 2013/06/24
- [Qemu-devel] [PATCH V3 10/10] NUMA: show host memory policy info in info numa command, Wanlong Gao, 2013/06/24