public inbox for linux-s390@vger.kernel.org
 help / color / mirror / Atom feed
From: Janosch Frank <frankja@linux.ibm.com>
To: Pierre Morel <pmorel@linux.ibm.com>, kvm@vger.kernel.org
Cc: linux-s390@vger.kernel.org, david@redhat.com, thuth@redhat.com,
	cohuck@redhat.com, Andrew Jones <drjones@redhat.com>
Subject: Re: [kvm-unit-tests PATCH v9 08/12] s390x: retrieve decimal and hexadecimal kernel parameters
Date: Mon, 22 Jun 2020 11:33:24 +0200	[thread overview]
Message-ID: <a86a71c7-8c5e-7216-0a74-7bdc36355c02@linux.ibm.com> (raw)
In-Reply-To: <1592213521-19390-9-git-send-email-pmorel@linux.ibm.com>


[-- Attachment #1.1: Type: text/plain, Size: 3499 bytes --]

On 6/15/20 11:31 AM, Pierre Morel wrote:
> We often need to retrieve hexadecimal kernel parameters.
> Let's implement a shared utility to do it.

Often?

My main problem with this patch is that it doesn't belong into the s390
library. atol() is already in string.c so htol() can be next to it.

util.c already has parse_keyval() so you should be able to extend it a
bit for hex values and add a function below that goes through argv[].

CCing Andrew as he wrote most of the common library

> 
> Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
> ---
>  lib/s390x/kernel-args.c | 60 +++++++++++++++++++++++++++++++++++++++++
>  lib/s390x/kernel-args.h | 18 +++++++++++++
>  s390x/Makefile          |  1 +
>  3 files changed, 79 insertions(+)
>  create mode 100644 lib/s390x/kernel-args.c
>  create mode 100644 lib/s390x/kernel-args.h
> 
> diff --git a/lib/s390x/kernel-args.c b/lib/s390x/kernel-args.c
> new file mode 100644
> index 0000000..2d3b2c2
> --- /dev/null
> +++ b/lib/s390x/kernel-args.c
> @@ -0,0 +1,60 @@
> +/*
> + * Retrieving kernel arguments
> + *
> + * Copyright (c) 2020 IBM Corp
> + *
> + * Authors:
> + *  Pierre Morel <pmorel@linux.ibm.com>
> + *
> + * This code is free software; you can redistribute it and/or modify it
> + * under the terms of the GNU General Public License version 2.
> + */
> +
> +#include <libcflat.h>
> +#include <string.h>
> +#include <asm/arch_def.h>
> +#include <kernel-args.h>
> +
> +static const char *hex_digit = "0123456789abcdef";
> +
> +static unsigned long htol(char *s)
> +{
> +	unsigned long v = 0, shift = 0, value = 0;
> +	int i, digit, len = strlen(s);
> +
> +	for (shift = 0, i = len - 1; i >= 0; i--, shift += 4) {
> +		digit = s[i] | 0x20;	/* Set lowercase */
> +		if (!strchr(hex_digit, digit))
> +			return 0;	/* this is not a digit ! */
> +
> +		if (digit <= '9')
> +			v = digit - '0';
> +		else
> +			v = digit - 'a' + 10;
> +		value += (v << shift);
> +	}
> +
> +	return value;
> +}
> +
> +int kernel_arg(int argc, char *argv[], const char *str, unsigned long *val)
> +{
> +	int i, ret;
> +	char *p, *q;
> +
> +	for (i = 0; i < argc; i++) {
> +		ret = strncmp(argv[i], str, strlen(str));
> +		if (ret)
> +			continue;
> +		p = strchr(argv[i], '=');
> +		if (!p)
> +			return -1;
> +		q = strchr(p, 'x');
> +		if (!q)
> +			*val = atol(p + 1);
> +		else
> +			*val = htol(q + 1);
> +		return 0;
> +	}
> +	return -2;
> +}
> diff --git a/lib/s390x/kernel-args.h b/lib/s390x/kernel-args.h
> new file mode 100644
> index 0000000..a88e34e
> --- /dev/null
> +++ b/lib/s390x/kernel-args.h
> @@ -0,0 +1,18 @@
> +/*
> + * Kernel argument
> + *
> + * Copyright (c) 2020 IBM Corp
> + *
> + * Authors:
> + *  Pierre Morel <pmorel@linux.ibm.com>
> + *
> + * This code is free software; you can redistribute it and/or modify it
> + * under the terms of the GNU General Public License version 2.
> + */
> +
> +#ifndef KERNEL_ARGS_H
> +#define KERNEL_ARGS_H
> +
> +int kernel_arg(int argc, char *argv[], const char *str, unsigned long *val);
> +
> +#endif
> diff --git a/s390x/Makefile b/s390x/Makefile
> index ddb4b48..47a94cc 100644
> --- a/s390x/Makefile
> +++ b/s390x/Makefile
> @@ -51,6 +51,7 @@ cflatobjs += lib/s390x/sclp-console.o
>  cflatobjs += lib/s390x/interrupt.o
>  cflatobjs += lib/s390x/mmu.o
>  cflatobjs += lib/s390x/smp.o
> +cflatobjs += lib/s390x/kernel-args.o
>  
>  OBJDIRS += lib/s390x
>  
> 



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  parent reply	other threads:[~2020-06-22  9:33 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-15  9:31 [kvm-unit-tests PATCH v9 00/12] s390x: Testing the Channel Subsystem I/O Pierre Morel
2020-06-15  9:31 ` [kvm-unit-tests PATCH v9 01/12] s390x: Use PSW bits definitions in cstart Pierre Morel
2020-06-16  9:31   ` Thomas Huth
2020-06-16  9:39     ` Pierre Morel
2020-06-16 13:13   ` Thomas Huth
2020-06-16 13:58     ` Pierre Morel
2020-06-16 14:01       ` Pierre Morel
2020-06-16 15:14       ` Thomas Huth
2020-06-16 16:08     ` Pierre Morel
2020-06-16 16:11       ` Pierre Morel
2020-06-15  9:31 ` [kvm-unit-tests PATCH v9 02/12] s390x: Move control register bit definitions and add AFP to them Pierre Morel
2020-06-15  9:31 ` [kvm-unit-tests PATCH v9 03/12] s390x: saving regs for interrupts Pierre Morel
2020-06-17  8:13   ` Cornelia Huck
2020-06-15  9:31 ` [kvm-unit-tests PATCH v9 04/12] s390x: interrupt registration Pierre Morel
2020-06-17  8:20   ` Cornelia Huck
2020-06-17 11:01     ` Pierre Morel
2020-06-15  9:31 ` [kvm-unit-tests PATCH v9 05/12] s390x: export the clock get_clock_ms() utility Pierre Morel
2020-06-15  9:31 ` [kvm-unit-tests PATCH v9 06/12] s390x: clock and delays caluculations Pierre Morel
2020-06-16  9:35   ` Thomas Huth
2020-06-16  9:40     ` Pierre Morel
2020-06-17  8:27   ` Cornelia Huck
2020-06-17 11:04     ` Pierre Morel
2020-06-22  9:09   ` Janosch Frank
2020-06-30 16:13     ` Pierre Morel
2020-06-15  9:31 ` [kvm-unit-tests PATCH v9 07/12] s390x: define function to wait for interrupt Pierre Morel
2020-06-15  9:31 ` [kvm-unit-tests PATCH v9 08/12] s390x: retrieve decimal and hexadecimal kernel parameters Pierre Morel
2020-06-16  9:47   ` Thomas Huth
2020-06-16 13:43     ` Pierre Morel
2020-06-17  8:37   ` Cornelia Huck
2020-06-17 11:05     ` Pierre Morel
2020-06-22  9:33   ` Janosch Frank [this message]
2020-06-22 10:57     ` Andrew Jones
2020-07-02 12:53       ` Pierre Morel
2020-06-15  9:31 ` [kvm-unit-tests PATCH v9 09/12] s390x: Library resources for CSS tests Pierre Morel
2020-06-16 10:31   ` Thomas Huth
2020-06-16 13:42     ` Pierre Morel
2020-06-17  8:42     ` Cornelia Huck
2020-06-17 11:08       ` Pierre Morel
2020-06-22  9:35   ` Janosch Frank
2020-06-24 12:26   ` Thomas Huth
2020-06-30 16:30     ` Pierre Morel
2020-06-15  9:31 ` [kvm-unit-tests PATCH v9 10/12] s390x: css: stsch, enumeration test Pierre Morel
2020-06-16 11:37   ` Thomas Huth
2020-06-16 13:42     ` Pierre Morel
2020-06-17  8:48   ` Cornelia Huck
2020-06-17 11:14     ` Pierre Morel
2020-06-15  9:32 ` [kvm-unit-tests PATCH v9 11/12] s390x: css: msch, enable test Pierre Morel
2020-06-16 11:43   ` Thomas Huth
2020-06-16 13:43     ` Pierre Morel
2020-06-17  8:54   ` Cornelia Huck
2020-06-17 11:25     ` Pierre Morel
2020-06-15  9:32 ` [kvm-unit-tests PATCH v9 12/12] s390x: css: ssch/tsch with sense and interrupt Pierre Morel
2020-06-17  9:54   ` Cornelia Huck
2020-06-17 11:55     ` Pierre Morel
2020-06-19  6:57       ` Cornelia Huck
2020-07-02 12:56         ` Pierre Morel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a86a71c7-8c5e-7216-0a74-7bdc36355c02@linux.ibm.com \
    --to=frankja@linux.ibm.com \
    --cc=cohuck@redhat.com \
    --cc=david@redhat.com \
    --cc=drjones@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=pmorel@linux.ibm.com \
    --cc=thuth@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox