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