Mailing List Archive

[PATCH v2 4/8] lib: move parse_size_and_unit()
... into its own CU, to build it into an archive.

Signed-off-by: Jan Beulich <jbeulich@suse.com>

... into its own CU, to build it into an archive.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
xen/common/lib.c | 39 ----------------------------------
xen/lib/Makefile | 1 +
xen/lib/parse-size.c | 50 ++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 51 insertions(+), 39 deletions(-)
create mode 100644 xen/lib/parse-size.c

diff --git a/xen/common/lib.c b/xen/common/lib.c
index a224efa8f6e8..6cfa332142a5 100644
--- a/xen/common/lib.c
+++ b/xen/common/lib.c
@@ -423,45 +423,6 @@ uint64_t muldiv64(uint64_t a, uint32_t b, uint32_t c)
#endif
}

-unsigned long long parse_size_and_unit(const char *s, const char **ps)
-{
- unsigned long long ret;
- const char *s1;
-
- ret = simple_strtoull(s, &s1, 0);
-
- switch ( *s1 )
- {
- case 'T': case 't':
- ret <<= 10;
- /* fallthrough */
- case 'G': case 'g':
- ret <<= 10;
- /* fallthrough */
- case 'M': case 'm':
- ret <<= 10;
- /* fallthrough */
- case 'K': case 'k':
- ret <<= 10;
- /* fallthrough */
- case 'B': case 'b':
- s1++;
- break;
- case '%':
- if ( ps )
- break;
- /* fallthrough */
- default:
- ret <<= 10; /* default to kB */
- break;
- }
-
- if ( ps != NULL )
- *ps = s1;
-
- return ret;
-}
-
typedef void (*ctor_func_t)(void);
extern const ctor_func_t __ctors_start[], __ctors_end[];

diff --git a/xen/lib/Makefile b/xen/lib/Makefile
index 764f3624b5f9..99f857540c99 100644
--- a/xen/lib/Makefile
+++ b/xen/lib/Makefile
@@ -2,3 +2,4 @@ obj-$(CONFIG_X86) += x86/

lib-y += ctype.o
lib-y += list-sort.o
+lib-y += parse-size.o
diff --git a/xen/lib/parse-size.c b/xen/lib/parse-size.c
new file mode 100644
index 000000000000..ec980cadfff3
--- /dev/null
+++ b/xen/lib/parse-size.c
@@ -0,0 +1,50 @@
+#include <xen/lib.h>
+
+unsigned long long parse_size_and_unit(const char *s, const char **ps)
+{
+ unsigned long long ret;
+ const char *s1;
+
+ ret = simple_strtoull(s, &s1, 0);
+
+ switch ( *s1 )
+ {
+ case 'T': case 't':
+ ret <<= 10;
+ /* fallthrough */
+ case 'G': case 'g':
+ ret <<= 10;
+ /* fallthrough */
+ case 'M': case 'm':
+ ret <<= 10;
+ /* fallthrough */
+ case 'K': case 'k':
+ ret <<= 10;
+ /* fallthrough */
+ case 'B': case 'b':
+ s1++;
+ break;
+ case '%':
+ if ( ps )
+ break;
+ /* fallthrough */
+ default:
+ ret <<= 10; /* default to kB */
+ break;
+ }
+
+ if ( ps != NULL )
+ *ps = s1;
+
+ return ret;
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
--
2.22.0
Re: [PATCH v2 4/8] lib: move parse_size_and_unit() [ In reply to ]
Hi Jan,

On 23/10/2020 11:17, Jan Beulich wrote:
> ... into its own CU, to build it into an archive.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>
> ... into its own CU, to build it into an archive.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Acked-by: Julien Grall <jgrall@amazon.com>

Cheers,

--
Julien Grall
Re: [PATCH v2 4/8] lib: move parse_size_and_unit() [ In reply to ]
On 18/11/2020 17:39, Julien Grall wrote:
> Hi Jan,
>
> On 23/10/2020 11:17, Jan Beulich wrote:
>> ... into its own CU, to build it into an archive.
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>

I forgot to mention the commit message was duplicated.

>> ... into its own CU, to build it into an archive.
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>
> Acked-by: Julien Grall <jgrall@amazon.com>
>
> Cheers,
>

--
Julien Grall
Re: [PATCH v2 4/8] lib: move parse_size_and_unit() [ In reply to ]
On 23/10/2020 11:17, Jan Beulich wrote:
> ... into its own CU, to build it into an archive.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> ---
> xen/common/lib.c | 39 ----------------------------------
> xen/lib/Makefile | 1 +
> xen/lib/parse-size.c | 50 ++++++++++++++++++++++++++++++++++++++++++++
> 3 files changed, 51 insertions(+), 39 deletions(-)
> create mode 100644 xen/lib/parse-size.c

What is the point of turning this into a library?  It isn't a leaf
function (calls simple_strtoull()) and doesn't have any any plausible
way of losing all its callers in various configurations (given its
direct use by the cmdline parsing logic).

~Andrew
Re: [PATCH v2 4/8] lib: move parse_size_and_unit() [ In reply to ]
On 24.11.2020 01:58, Andrew Cooper wrote:
> On 23/10/2020 11:17, Jan Beulich wrote:
>> ... into its own CU, to build it into an archive.
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>> ---
>> xen/common/lib.c | 39 ----------------------------------
>> xen/lib/Makefile | 1 +
>> xen/lib/parse-size.c | 50 ++++++++++++++++++++++++++++++++++++++++++++
>> 3 files changed, 51 insertions(+), 39 deletions(-)
>> create mode 100644 xen/lib/parse-size.c
>
> What is the point of turning this into a library?  It isn't a leaf
> function (calls simple_strtoull()) and doesn't have any any plausible
> way of losing all its callers in various configurations (given its
> direct use by the cmdline parsing logic).

It's still a library function. As said earlier, I think _all_
of what's now in lib.c should move to lib/. That's how it
should have been from the beginning, or stuff shouldn't have
been put in lib.c.

The one alternative I see is to move the code next to
parse_bool() / parse_boolean(), in kernel.c, or put all
parse_*() into a new common/parse.c.

Jan