On Mon, Oct 06, 2008 at 03:37:29PM +0100, Mel Gorman wrote: > On (03/10/08 18:37), Andy Whitcroft didst pronounce: > > Add a very basic framework for hpoolcfg, the administrator pool > > configuration > > helper. > > > > Signed-off-by: Andy Whitcroft <[EMAIL PROTECTED]> > > --- > > Makefile | 8 ++++- > > hpoolcfg.c | 96 > > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > 2 files changed, 103 insertions(+), 1 deletions(-) > > create mode 100644 hpoolcfg.c > > > > diff --git a/Makefile b/Makefile > > index f8cd696..43dff05 100644 > > --- a/Makefile > > +++ b/Makefile > > @@ -4,7 +4,7 @@ EXEDIR = /bin > > LIBOBJS = hugeutils.o version.o init.o morecore.o debug.o alloc.o shm.o > > kernel-features.o > > INSTALL_OBJ_LIBS = libhugetlbfs.so libhugetlbfs.a > > BIN_OBJ_DIR=obj > > -INSTALL_BIN = hugectl hugeedit > > +INSTALL_BIN = hugectl hugeedit hpoolcfg > > INSTALL_HEADERS = hugetlbfs.h > > LDSCRIPT_TYPES = B BDT > > LDSCRIPT_DIST_ELF = elf32ppclinux elf64ppc elf_i386 elf_x86_64 > > @@ -256,6 +256,12 @@ $(BIN_OBJ_DIR)/hugeedit: $(BIN_OBJ_DIR)/hugeedit.o > > mkdir -p $(BIN_OBJ_DIR) > > $(CC) $(CPPFLAGS) $(CFLAGS) $(LIBPATHS) -o $@ $^ > > > > +HPOOLCFG_OBJ=hpoolcfg.o hugeutils.o debug.o > > +$(BIN_OBJ_DIR)/hpoolcfg: $(foreach > > file,$(HPOOLCFG_OBJ),$(BIN_OBJ_DIR)/$(file)) > > + @$(VECHO) LDHOST $@ > > + mkdir -p $(BIN_OBJ_DIR) > > + $(CC) $(CPPFLAGS) $(CFLAGS) $(LIBPATHS) -o $@ $^ > > + > > clean: > > @$(VECHO) CLEAN > > rm -f *~ *.o *.so *.a *.d *.i core a.out $(VERSION) > > diff --git a/hpoolcfg.c b/hpoolcfg.c > > new file mode 100644 > > index 0000000..887b8ed > > --- /dev/null > > +++ b/hpoolcfg.c > > @@ -0,0 +1,96 @@ > > +/*************************************************************************** > > + * User front end for using huge pages Copyright (C) 2008, IBM > > * > > + * > > * > > + * This program is free software; you can redistribute it and/or modify > > * > > + * it under the terms of the Lesser GNU General Public License as > > * > > + * published by the Free Software Foundation; either version 2.1 of the > > * > > + * License, or at your option) any later version. > > * > > + * > > * > > + * This program is distributed in the hope that it will be useful, > > * > > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > > * > > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > > * > > + * GNU Lesser General Public License for more details. > > * > > + * > > * > > + * You should have received a copy of the Lesser GNU General Public > > * > > + * License along with this program; if not, write to the > > * > > + * Free Software Foundation, Inc., > > * > > + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. > > * > > + > > ***************************************************************************/ > > + > > Might as well match the style used in other C files. hmm, it's already > different in hugectl. Sod it, never mind. > > > +/* > > + * hpoolcfg is designed to make an administrators life simpler, to > > automated > > s/automated/automate/ ?
Yep. > > + * and simplify basic system configuration as it relates to hugepages. It > > + * is designed to help with pool and mount configuration. > > + */ > > + > > +#include <stdlib.h> > > +#include <stdio.h> > > +#include <errno.h> > > +#include <string.h> > > +#include <limits.h> > > + > > +#define _GNU_SOURCE /* for getopt_long */ > > +#include <unistd.h> > > +#include <getopt.h> > > + > > +#define REPORT_UTIL "hpoolcfg" > > +#include "libhugetlbfs_internal.h" > > + > > +extern int errno; > > Does including errno.h already provide this? Should do yes. Yes it does. > > +extern int optind; > > +extern char *optarg; > > + > > +#define OPTION(opts, text) fprintf(stderr, " %-25s %s\n", opts, text) > > +#define CONT(text) fprintf(stderr, " %-25s %s\n", "", > > text) > > + > > +void print_usage() > > +{ > > + fprintf(stderr, "hugectl [options] target\n"); > > + fprintf(stderr, "options:\n"); > > + > > + OPTION("--help, -h", "Prints this message"); > > +} > > + > > +int opt_dry_run = 0; > > + > > +int main(int argc, char** argv) > > +{ > > + char opts[] = "+h"; > > + int ret = 0, index = 0; > > + struct option long_opts[] = { > > + {"help", no_argument, NULL, 'h'}, > > + > > + {0}, > > + }; > > + > > + __lh_hugetlbfs_setup_debug(); > > + > > + while (ret != -1) { > > + ret = getopt_long(argc, argv, opts, long_opts, &index); > > + switch (ret) { > > + case -1: > > + break; > > + > > + case '?': > > + print_usage(); > > + exit(EXIT_FAILURE); > > + > > Why is -? considered a failure and -h a success? That is correct to my mind, -h asks for a list of options and it producing them is what its meant to do so its successful, '?' implies you passed something bad and it printing the usage is to tell you off so it is a failure. > > + case 'h': > > + print_usage(); > > + exit(EXIT_SUCCESS); > > + > > + default: > > + WARNING("unparsed option %08x\n", ret); > > + ret = -1; > > + break; > > + } > > + } > > + index = optind; > > + > > + if ((argc - index) != 0) { > > + print_usage(); > > + exit(EXIT_FAILURE); > > + } > > + > > + exit(EXIT_SUCCESS); > > +} -apw ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Libhugetlbfs-devel mailing list Libhugetlbfs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/libhugetlbfs-devel