From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1946007AbWJaVQJ (ORCPT ); Tue, 31 Oct 2006 16:16:09 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1946010AbWJaVQJ (ORCPT ); Tue, 31 Oct 2006 16:16:09 -0500 Received: from rgminet01.oracle.com ([148.87.113.118]:56056 "EHLO rgminet01.oracle.com") by vger.kernel.org with ESMTP id S1946007AbWJaVQH (ORCPT ); Tue, 31 Oct 2006 16:16:07 -0500 Date: Tue, 31 Oct 2006 13:11:52 -0800 From: Randy Dunlap To: Derek Fults Cc: linux-kernel@vger.kernel.org Subject: Re: [PATCH] Allow a hyphenated range in get_options, with cleanup Message-Id: <20061031131152.b4fcd4f6.randy.dunlap@oracle.com> In-Reply-To: <1162328823.9542.434.camel@lnx-dfults.americas.sgi.com> References: <1162328823.9542.434.camel@lnx-dfults.americas.sgi.com> Organization: Oracle Linux Eng. X-Mailer: Sylpheed version 2.2.9 (GTK+ 2.8.10; x86_64-unknown-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Brightmail-Tracker: AAAAAQAAAAI= X-Brightmail-Tracker: AAAAAQAAAAI= X-Whitelist: TRUE X-Whitelist: TRUE Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 31 Oct 2006 15:07:03 -0600 Derek Fults wrote: > This allows a hyphenated range of positive numbers in the string passed > to command line helper function, get_options. > Currently the command line option "isolcpus=" takes as its argument a > list of cpus. > Format: ,..., > This can get extremely long when isolating the majority of cpus on a > large system. Valid values of include all cpus, 0 to > "number of CPUs in system - 1". > > > Signed-off-by: Derek Fults > > Index: linux/lib/cmdline.c > =================================================================== > --- linux.orig/lib/cmdline.c 2006-09-19 22:42:06.000000000 -0500 > +++ linux/lib/cmdline.c 2006-10-31 14:57:25.553572860 -0600 > @@ -29,6 +29,7 @@ > * 0 : no int in string > * 1 : int found, no subsequent comma > * 2 : int found including a subsequent comma > + * -(int): int found with a subsequent hyphen to denote a range. Does the returned value matter? Is it used later? (it appears to be) If not, I think that we would rather reserved negative return values to indicate errors. Or if so, the comment should say what property the negative value has. > */ > > int get_option (char **str, int *pint) > @@ -44,7 +45,16 @@ > (*str)++; > return 2; > } > + if (**str == '-') { > + int x, inc_counter= 0, upper_range = 0; space after '=' > > + (*str)++; > + upper_range = simple_strtol((*str), NULL, 0); > + inc_counter = upper_range - *pint; > + for (x =*pint; x < upper_range; x++) space after '=' > + *pint++ = x; > + return -inc_counter; > + } > return 1; > } > > @@ -55,7 +65,8 @@ > * @ints: integer array > * > * This function parses a string containing a comma-separated > - * list of integers. The parse halts when the array is > + * list of integers, a hyphen-separated range of _positive_ integers, > + * or a combination of both. The parse halts when the array is > * full, or when no more numbers can be retrieved from the > * string. > * > @@ -75,6 +86,11 @@ > i++; > if (res == 1) > break; > + if (res < 0) > + /* Decrement the result by one to leave out the > + last number in the range. The next iteration > + will handle the upper number in the range */ > + i += ((-res) - 1); > } > ints[0] = i - 1; > return (char *)str; > - --- ~Randy