Re: [PATCH v4] lib: add size unit t/p/e to memparse
From: David Rientjes
Date: Mon Jun 16 2014 - 21:29:55 EST
On Tue, 17 Jun 2014, Gui Hecheng wrote:
> > > diff --git a/lib/cmdline.c b/lib/cmdline.c
> > > index d4932f7..76a712e 100644
> > > --- a/lib/cmdline.c
> > > +++ b/lib/cmdline.c
> > > @@ -121,11 +121,7 @@ EXPORT_SYMBOL(get_options);
> > > * @retptr: (output) Optional pointer to next char after parse completes
> > > *
> > > * Parses a string into a number. The number stored at @ptr is
> > > - * potentially suffixed with %K (for kilobytes, or 1024 bytes),
> > > - * %M (for megabytes, or 1048576 bytes), or %G (for gigabytes, or
> > > - * 1073741824). If the number is suffixed with K, M, or G, then
> > > - * the return value is the number multiplied by one kilobyte, one
> > > - * megabyte, or one gigabyte, respectively.
> > > + * potentially suffixed with K, M, G, T, P, E.
> > > */
> > >
> > > unsigned long long memparse(const char *ptr, char **retptr)
> > > @@ -135,6 +131,15 @@ unsigned long long memparse(const char *ptr, char **retptr)
> > > unsigned long long ret = simple_strtoull(ptr, &endptr, 0);
> > >
> > > switch (*endptr) {
> > > + case 'E':
> > > + case 'e':
> > > + ret <<= 10;
> > > + case 'P':
> > > + case 'p':
> > > + ret <<= 10;
> > > + case 'T':
> > > + case 't':
> > > + ret <<= 10;
> > > case 'G':
> > > case 'g':
> > > ret <<= 10;
> >
> > Seems fine since unsigned long long is always at least 64 bits, but
> > perhaps also change simple_strtoull() to use kstrtoull() at the same time
> > since the former is deprecated?
>
> Yes, that is a point. But the deprecated function is a separate problem
> and may not be included in this patch.
> Also, I find that simple_strtoull is used in many places in the kernel
> code, it is better to replace it globally?
>
If you're going to have a go at replacing the simple_strto*() functions
throughout the kernel, it's probably better to do it per subsystem (as
defined by the separate sections of MAINTAINERS) and propose the patches
individually to those maintainers. Once it has been removed entirely, you
can submit a patch to remove the functions themselves.
Be aware that there are many callers to the deprecated functions so it may
take a significant amount of time.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/