On Wed, 27 Apr 2011 18:16:45 +0200 Stefan Assmann wrote: > Adding this function to allow easy parsing of unsigned long values from the > beginning of strings. Convenience function to parse pointers from the kernel > command line. > > Signed-off-by: Stefan Assmann <sassmann@xxxxxxxxx> > --- > include/linux/kernel.h | 1 + > lib/cmdline.c | 35 +++++++++++++++++++++++++++++++++++ > 2 files changed, 36 insertions(+), 0 deletions(-) > > diff --git a/include/linux/kernel.h b/include/linux/kernel.h > index 2fe6e84..b6ded39 100644 > --- a/include/linux/kernel.h > +++ b/include/linux/kernel.h > @@ -218,6 +218,7 @@ extern int vsscanf(const char *, const char *, va_list) > > extern int get_option(char **str, int *pint); > extern char *get_options(const char *str, int nints, int *ints); > +extern int get_next_ulong(char **str, unsigned long *val, char sep, int base); > extern unsigned long long memparse(const char *ptr, char **retptr); > > extern int core_kernel_text(unsigned long addr); > diff --git a/lib/cmdline.c b/lib/cmdline.c > index f5f3ad8..82a6616 100644 > --- a/lib/cmdline.c > +++ b/lib/cmdline.c > @@ -114,6 +114,41 @@ char *get_options(const char *str, int nints, int *ints) > } > > /** > + * get_next_ulong - Parse unsigned long at the beginning of a string > + * @strp: (output) String to be parsed ^ input/output > + * @val: (output) unsigned long carrying the result > + * @sep: character specifying the separator > + * @base: number system of the parsed value > + * > + * This function parses an unsigned long value at the beginning of a > + * string. The string may begin with a separator or an unsigned long > + * value. > + * After the function is run val will contain the parsed value and strp @val @strp > + * will point to the character *after* the parsed unsigned long. > + * > + * In the error case 0 is returned, val and *strp stay unaltered. @val and @strp > + * Otherwise return 1. > + */ > +int get_next_ulong(char **strp, unsigned long *val, char sep, int base) > +{ > + char *tmp; > + > + if (!strp || !(*strp)) > + return 0; > + > + tmp = *strp; > + if (*tmp == sep) > + tmp++; > + > + *val = simple_strtoul(tmp, strp, base); > + > + if (tmp == *strp) > + return 0; /* no new value parsed */ > + else > + return 1; > +} > + > +/** > * memparse - parse a string with mem suffixes into a number > * @ptr: Where parse begins > * @retptr: (output) Optional pointer to next char after parse completes > -- --- ~Randy *** Remember to use Documentation/SubmitChecklist when testing your code *** -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>