Re: [PATCH 1/2] kstrto*: add documentation

2012-07-12 Thread Eldad Zack

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

2012-07-12 Thread J. Bruce Fields
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

2012-07-12 Thread Eldad Zack

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

2012-07-12 Thread J. Bruce Fields
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

2012-07-12 Thread Stephen Boyd
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

2012-07-12 Thread Stephen Boyd
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/