Re: [PATCH 1/2] kstrto*: add documentation
On Thu, 12 Jul 2012, J. Bruce Fields wrote: > On Fri, Jul 13, 2012 at 12:09:37AM +0200, Eldad Zack wrote: > > > > On Thu, 12 Jul 2012, J. Bruce Fields wrote: > > I am not sure if I understand _parse_integer correctly (which is called > > to do the actual parsing and has a very nice comment to it) - but it > > expects a null-terminated string, but will also stop as soon as it > > bumps into any other non-number character without error (please correct > > me I'm wrong). > > I believe it, but, in _kstrtoull: > > rv = _parse_integer(s, base, &_res); > if (rv & KSTRTOX_OVERFLOW) > return -ERANGE; > rv &= ~KSTRTOX_OVERFLOW; > if (rv == 0) > return -EINVAL; > s += rv; > if (*s == '\n') > s++; > if (*s) > return -EINVAL; > > So actually it appears the string must be all numeric except possibly a final > newline. Ah. You're right of course. Thanks! I also noticed I missed the SGML templates, so I'll resend this at some point later. Eldad -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 1/2] kstrto*: add documentation
On Fri, Jul 13, 2012 at 12:09:37AM +0200, Eldad Zack wrote: > > On Thu, 12 Jul 2012, J. Bruce Fields wrote: > > On Thu, Jul 12, 2012 at 10:53:13PM +0200, Eldad Zack wrote: > > > +/** > > > + * kstrtoul - convert a string to an unsigned long > > > > Also, is it worth mentioning that the number is required to be followed > > by a string or newline? > > I am not sure if I understand _parse_integer correctly (which is called > to do the actual parsing and has a very nice comment to it) - but it > expects a null-terminated string, but will also stop as soon as it > bumps into any other non-number character without error (please correct > me I'm wrong). I believe it, but, in _kstrtoull: rv = _parse_integer(s, base, &_res); if (rv & KSTRTOX_OVERFLOW) return -ERANGE; rv &= ~KSTRTOX_OVERFLOW; if (rv == 0) return -EINVAL; s += rv; if (*s == '\n') s++; if (*s) return -EINVAL; So actually it appears the string must be all numeric except possibly a final newline. --b. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 1/2] kstrto*: add documentation
On Thu, 12 Jul 2012, J. Bruce Fields wrote: > On Thu, Jul 12, 2012 at 10:53:13PM +0200, Eldad Zack wrote: > > +/** > > + * kstrtoul - convert a string to an unsigned long > > Also, is it worth mentioning that the number is required to be followed > by a string or newline? I am not sure if I understand _parse_integer correctly (which is called to do the actual parsing and has a very nice comment to it) - but it expects a null-terminated string, but will also stop as soon as it bumps into any other non-number character without error (please correct me I'm wrong). In that case maybe "This function stops parsing as soon as it gets to a character which doesn't belong to the given base, including newline or null.". And now that I read it more closely, how about: "If base is given as 0, then the base of the string is automatically detected with the conventional semantics: If the string begins with 0x the number will be parsed as a hexadecimel (case insensitive). If it otherwise begins with 0, it will be parsed as an octal number. Otherwise it will be parsed as a decimal." Eldad -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 1/2] kstrto*: add documentation
On Thu, Jul 12, 2012 at 10:53:13PM +0200, Eldad Zack wrote: > As J. Bruce Fields pointed out, kstrto* is > currently lacking kerneldoc comments. > This patch adds kerneldoc comments to common variants of kstrto*: > kstrto(u)l, kstrto(u)ll and kstrto(u)int. > > Cc: J. Bruce Fields > Signed-off-by: Eldad Zack > --- > include/linux/kernel.h | 36 > lib/kstrtox.c | 18 ++ > 2 files changed, 54 insertions(+) > > diff --git a/include/linux/kernel.h b/include/linux/kernel.h > index e07f5e0..582df0f 100644 > --- a/include/linux/kernel.h > +++ b/include/linux/kernel.h > @@ -220,6 +220,16 @@ int __must_check _kstrtol(const char *s, unsigned int > base, long *res); > > int __must_check kstrtoull(const char *s, unsigned int base, unsigned long > long *res); > int __must_check kstrtoll(const char *s, unsigned int base, long long *res); > + > +/** > + * kstrtoul - convert a string to an unsigned long Also, is it worth mentioning that the number is required to be followed by a string or newline? --b. > + * @s: The start of the string > + * @base: The number base to use > + * @res: Where to write the result of the conversion if successful > + * > + * Returns 0 on success, -ERANGE on overflow and -EINVAL on parsing error. > + * Used as a replacement for the obsolete simple_strtoul. > + */ > static inline int __must_check kstrtoul(const char *s, unsigned int base, > unsigned long *res) > { > /* > @@ -233,6 +243,15 @@ static inline int __must_check kstrtoul(const char *s, > unsigned int base, unsign > return _kstrtoul(s, base, res); > } > > +/** > + * kstrtol - convert a string to a long > + * @s: The start of the string > + * @base: The number base to use > + * @res: Where to write the result of the conversion if successful > + * > + * Returns 0 on success, -ERANGE on overflow and -EINVAL on parsing error. > + * Used as a replacement for the obsolete simple_strtol. > + */ > static inline int __must_check kstrtol(const char *s, unsigned int base, > long *res) > { > /* > @@ -246,7 +265,24 @@ static inline int __must_check kstrtol(const char *s, > unsigned int base, long *r > return _kstrtol(s, base, res); > } > > +/** > + * kstrtouint - convert a string to an unsigned int > + * @s: The start of the string > + * @base: The number base to use > + * @res: Where to write the result of the conversion if successful > + * > + * Returns 0 on success, -ERANGE on overflow and -EINVAL on parsing error. > + */ > int __must_check kstrtouint(const char *s, unsigned int base, unsigned int > *res); > + > +/** > + * kstrtoint - convert a string to an int > + * @s: The start of the string > + * @base: The number base to use > + * @res: Where to write the result of the conversion if successful > + * > + * Returns 0 on success, -ERANGE on overflow and -EINVAL on parsing error. > + */ > int __must_check kstrtoint(const char *s, unsigned int base, int *res); > > static inline int __must_check kstrtou64(const char *s, unsigned int base, > u64 *res) > diff --git a/lib/kstrtox.c b/lib/kstrtox.c > index c3615ea..7f5bca2 100644 > --- a/lib/kstrtox.c > +++ b/lib/kstrtox.c > @@ -104,6 +104,15 @@ static int _kstrtoull(const char *s, unsigned int base, > unsigned long long *res) > return 0; > } > > +/** > + * kstrtoull - convert a string to an unsigned long long > + * @s: The start of the string > + * @base: The number base to use > + * @res: Where to write the result of the conversion if successful > + * > + * Returns 0 on success, -ERANGE on overflow and -EINVAL on parsing error. > + * Used as a replacement for the obsolete simple_strtoull. > + */ > int kstrtoull(const char *s, unsigned int base, unsigned long long *res) > { > if (s[0] == '+') > @@ -112,6 +121,15 @@ int kstrtoull(const char *s, unsigned int base, unsigned > long long *res) > } > EXPORT_SYMBOL(kstrtoull); > > +/** > + * kstrtoll - convert a string to a long long > + * @s: The start of the string > + * @base: The number base to use > + * @res: Where to write the result of the conversion if successful > + * > + * Returns 0 on success, -ERANGE on overflow and -EINVAL on parsing error. > + * Used as a replacement for the obsolete simple_strtoll. > + */ > int kstrtoll(const char *s, unsigned int base, long long *res) > { > unsigned long long tmp; > -- > 1.7.10.4 > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 1/2] kstrto*: add documentation
On 07/12/12 14:17, Stephen Boyd wrote: > On 07/12/12 13:53, Eldad Zack wrote: >> diff --git a/include/linux/kernel.h b/include/linux/kernel.h >> index e07f5e0..582df0f 100644 >> --- a/include/linux/kernel.h >> +++ b/include/linux/kernel.h >> @@ -220,6 +220,16 @@ int __must_check _kstrtol(const char *s, unsigned int >> base, long *res); >> >> int __must_check kstrtoull(const char *s, unsigned int base, unsigned long >> long *res); >> int __must_check kstrtoll(const char *s, unsigned int base, long long *res); >> + >> +/** >> + * kstrtoul - convert a string to an unsigned long > Aren't function names supposed to have () after them in kernel doc? > Argh, ignore me. Apparently it's optional. -- Sent by an employee of the Qualcomm Innovation Center, Inc. The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 1/2] kstrto*: add documentation
On 07/12/12 13:53, Eldad Zack wrote: > > diff --git a/include/linux/kernel.h b/include/linux/kernel.h > index e07f5e0..582df0f 100644 > --- a/include/linux/kernel.h > +++ b/include/linux/kernel.h > @@ -220,6 +220,16 @@ int __must_check _kstrtol(const char *s, unsigned int > base, long *res); > > int __must_check kstrtoull(const char *s, unsigned int base, unsigned long > long *res); > int __must_check kstrtoll(const char *s, unsigned int base, long long *res); > + > +/** > + * kstrtoul - convert a string to an unsigned long Aren't function names supposed to have () after them in kernel doc? -- Sent by an employee of the Qualcomm Innovation Center, Inc. The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/