On Mon, Oct 20, 2008 at 12:39:55PM +0100, Andy Whitcroft wrote:
> On Mon, Oct 20, 2008 at 11:50:39AM +0100, Mel Gorman wrote:
> > On (17/10/08 17:14), Andy Whitcroft didst pronounce:
> > 
> > > Signed-off-by: Andy Whitcroft <[EMAIL PROTECTED]>
> > > ---
> > >  Makefile                 |    6 +++---
> > >  hugetlbfs.h              |   16 ----------------
> > >  hugeutils.c              |    6 +-----
> > >  init_privutils.c         |    2 ++
> > >  libhugetlbfs_internal.h  |   12 ++++++++++++
> > >  libhugetlbfs_privutils.h |   23 +++++++++++++++++++++++
> > >  6 files changed, 41 insertions(+), 24 deletions(-)
> > > 
> > > diff --git a/Makefile b/Makefile
> > > index 1bb4589..0b5821d 100644
> > > --- a/Makefile
> > > +++ b/Makefile
> > > @@ -2,7 +2,7 @@ PREFIX = /usr/local
> > >  EXEDIR = /bin
> > >  
> > >  LIBOBJS = hugeutils.o version.o init.o morecore.o debug.o alloc.o shm.o 
> > > kernel-features.o
> > > -LIBPUOBJS = init_privutils.o debug.o
> > > +LIBPUOBJS = hugeutils.o debug.o hugeutils.o
> 
> This looks wrong ... Hmmm ... Not sure how things would work correctly
> with this like this.
> 
> > >  INSTALL_OBJ_LIBS = libhugetlbfs.so libhugetlbfs.a 
> > > libhugetlbfs_privutils.so
> > >  BIN_OBJ_DIR=obj
> > >  INSTALL_BIN = hugectl hugeedit hugeadm pagesize
> > > @@ -285,13 +285,13 @@ $(BIN_OBJ_DIR)/hugeedit: $(BIN_OBJ_DIR)/hugeedit.o
> > >   mkdir -p $(BIN_OBJ_DIR)
> > >   $(CC) $(CPPFLAGS) $(CFLAGS) $(LIBPATHS) -o $@ $^
> > >  
> > > -HUGEADM_OBJ=hugeadm.o hugeutils.o debug.o
> > > +HUGEADM_OBJ=hugeadm.o libhugetlbfs_privutils.a
> > 
> > we are linking against the static library here. If we did the same for
> > the tests, could we eliminate teh .so file altogether and not install
> > it?
> 
> I don't think so.  When I tried to use the static versions those do not
> have the naming magic in them.  That means that stuff that is meant to be
> hidden privutils library is not and there are interactions particularly
> in tests which 'cheat' by creating routines of the same names as real
> functions and then calling the originals by looking up the dynamic names.
> 

Ok, I had forgotten that the symbol naming magic would be lost for a
statically-linked library. My bad.

> > >  $(BIN_OBJ_DIR)/hugeadm: $(foreach 
> > > file,$(HUGEADM_OBJ),$(BIN_OBJ_DIR)/$(file))
> > >   @$(VECHO) LDHOST $@
> > >   mkdir -p $(BIN_OBJ_DIR)
> > >   $(CC) $(CPPFLAGS) $(CFLAGS) $(LIBPATHS) -o $@ $^
> > >  
> > > -PAGESIZE_OBJ=pagesize.o hugeutils.o debug.o
> > > +PAGESIZE_OBJ=pagesize.o libhugetlbfs_privutils.a
> > >  $(BIN_OBJ_DIR)/pagesize: $(foreach 
> > > file,$(PAGESIZE_OBJ),$(BIN_OBJ_DIR)/$(file))
> > >   @$(VECHO) LDHOST $@
> > >   mkdir -p $(BIN_OBJ_DIR)
> > > diff --git a/hugetlbfs.h b/hugetlbfs.h
> > > index c2c88f1..3dff758 100644
> > > --- a/hugetlbfs.h
> > > +++ b/hugetlbfs.h
> > > @@ -62,20 +62,4 @@ enum {
> > >  };
> > >  int hugetlbfs_test_feature(int feature_code);
> > >  
> > > -/* Hugetlb pool counter operations */
> > > -/* Keys for reading hugetlb pool counters */
> > > -enum {                    /* The number of pages of a given size that 
> > > ... */
> > > - HUGEPAGES_TOTAL, /*  are allocated to the pool */
> > > - HUGEPAGES_FREE,  /*  are not in use */
> > > - HUGEPAGES_RSVD,  /*  are reserved for possible future use */
> > > - HUGEPAGES_SURP,  /*  are allocated to the pool on demand */
> > > - HUGEPAGES_OC,    /*  can be allocated on demand - maximum */
> > > - HUGEPAGES_MAX_COUNTERS,
> > > -};
> > > -long get_huge_page_counter(long pagesize, unsigned int counter);
> > > -int set_huge_page_counter(long pagesize, unsigned int counter,
> > > -                                                 unsigned long val);
> > > -int set_nr_hugepages(long pagesize, unsigned long val);
> > > -int set_nr_overcommit_hugepages(long pagesize, unsigned long val);
> > > -long read_meminfo(const char *tag);
> > >  #endif /* _HUGETLBFS_H */
> > > diff --git a/hugeutils.c b/hugeutils.c
> > > index b9e63ad..81a834a 100644
> > > --- a/hugeutils.c
> > > +++ b/hugeutils.c
> > > @@ -62,17 +62,13 @@ static int hpage_sizes_default_idx = -1;
> > >  #define BUF_SZ 256
> > >  #define MEMINFO_SIZE     2048
> > >  
> > > -#define MEMINFO "/proc/meminfo"
> > > -#define PROC_HUGEPAGES_DIR "/proc/sys/vm/"
> > > -#define SYSFS_HUGEPAGES_DIR "/sys/kernel/mm/hugepages/"
> > > -
> > >  /*
> > >   * Convert a quantity in a given unit to the next smallest unit by
> > >   * multiplying the quantity by 1024 (eg. convert 1MB to 1024kB).
> > >   * If the conversion would overflow the variable, return LONG_MAX to 
> > > signify
> > >   * the error.
> > >   */
> > > -static inline long size_to_smaller_unit(long size)
> > > +long size_to_smaller_unit(long size)
> > >  {
> > >   if (size < 0 || size * 1024 < size)
> > >           return -1;
> > > diff --git a/init_privutils.c b/init_privutils.c
> > > index 6c9243d..f32d83b 100644
> > > --- a/init_privutils.c
> > > +++ b/init_privutils.c
> > > @@ -22,4 +22,6 @@
> > >  static void __attribute__ ((constructor)) setup_libhugetlbfs(void)
> > >  {
> > >   hugetlbfs_setup_debug();
> > > + setup_mounts();
> > > + setup_features();
> > >  }
> > 
> > By any chance does this belong in the last patch?
> 
> No the first patch only brings a framework.  In this patch we move
> utilities to using the library and brings some functionality into the
> library.  This then necessitates initialising them.
> 

Ok, fair point.

> > > diff --git a/libhugetlbfs_internal.h b/libhugetlbfs_internal.h
> > > index 4e20885..da84234 100644
> > > --- a/libhugetlbfs_internal.h
> > > +++ b/libhugetlbfs_internal.h
> > > @@ -115,6 +115,14 @@ struct hpage_pool {
> > >   int is_default;
> > >  };
> > >  
> > > +#define size_to_smaller_unit __lh_size_to_smaller_unit
> > > +extern long size_to_smaller_unit(long size);
> > > +
> > > +#define file_read_ulong __lh_file_read_ulong
> > > +extern long file_read_ulong(char *file, const char *tag);
> > > +#define file_write_ulong __lh_file_write_ulong
> > > +extern int file_write_ulong(char *file, unsigned long val);
> > > +
> > >  #define hpool_sizes __lh_hpool_sizes
> > >  extern int hpool_sizes(struct hpage_pool *, int);
> > >  #define get_pool_size __lh_get_pool_size
> > > @@ -124,4 +132,8 @@ extern int get_pool_size(long, struct hpage_pool *);
> > >  extern int direct_syscall(int sysnum, ...);
> > >  extern ElfW(Word) plt_extrasz(ElfW(Dyn) *dyntab);
> > >  
> > > +#define MEMINFO "/proc/meminfo"
> > > +#define PROC_HUGEPAGES_DIR "/proc/sys/vm/"
> > > +#define SYSFS_HUGEPAGES_DIR "/sys/kernel/mm/hugepages/"
> > > +
> > >  #endif /* _LIBHUGETLBFS_INTERNAL_H */
> > > diff --git a/libhugetlbfs_privutils.h b/libhugetlbfs_privutils.h
> > > index 1a45ed0..9f0c479 100644
> > > --- a/libhugetlbfs_privutils.h
> > > +++ b/libhugetlbfs_privutils.h
> > > @@ -19,4 +19,27 @@
> > >  #ifndef _LIBHUGETLBFS_PRIVUTILS_H
> > >  #define _LIBHUGETLBFS_PRIVUTILS_H
> > >  
> > > +/* Hugetlb pool counter operations */
> > > +/* Keys for reading hugetlb pool counters */
> > > +enum {                    /* The number of pages of a given size that 
> > > ... */
> > > + HUGEPAGES_TOTAL, /*  are allocated to the pool */
> > > + HUGEPAGES_FREE,  /*  are not in use */
> > > + HUGEPAGES_RSVD,  /*  are reserved for possible future use */
> > > + HUGEPAGES_SURP,  /*  are allocated to the pool on demand */
> > > + HUGEPAGES_OC,    /*  can be allocated on demand - maximum */
> > > + HUGEPAGES_MAX_COUNTERS,
> > > +};
> > > +#define get_huge_page_counter __pu_get_huge_page_counter
> > > +long get_huge_page_counter(long pagesize, unsigned int counter);
> > > +#define set_huge_page_counter __pu_set_huge_page_counter
> > > +int set_huge_page_counter(long pagesize, unsigned int counter,
> > > +                                                 unsigned long val);
> > > +#define set_nr_hugepages __pu_set_nr_hugepages
> > > +int set_nr_hugepages(long pagesize, unsigned long val);
> > > +#define set_nr_overcommit_hugepages __pu_set_nr_overcommit_hugepages
> > > +int set_nr_overcommit_hugepages(long pagesize, unsigned long val);
> > > +
> > > +#define read_meminfo __pu_read_meminfo
> > > +long read_meminfo(const char *tag);
> > > +
> > >  #endif /* _LIBHUGETLBFS_PRIVUTILS_H */
> 
> Will check on that privutils initialiser.
> 
> -apw
> 

-- 
Mel Gorman
Part-time Phd Student                          Linux Technology Center
University of Limerick                         IBM Dublin Software Lab

-------------------------------------------------------------------------
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

Reply via email to