On (17/10/08 17:14), Andy Whitcroft didst pronounce:
> Currently we have three types of function:
> 
>   file local -- marked static in the normal way,
>   library local -- external but prefixed with __lh_
>   library exported -- external and listed in the library.lds file
> 
> While the library prefix works, it does not allow functions to trivially
> move from file local to library local as all references to the function
> have to be modified to the new name.
> 
> This patch introduces a new idiom.  When a function is intended to be
> library local it is already necessary to declare that function in the
> libhugetlbfs_internal.h, if we also add a single define for that function
> adding the __lh_ prefix (as below) then all other references including the
> original definition may use the original name unchanged but the function
> will remain unexported:
> 
>       #define hpool_sizes __lh_hpool_sizes
>       extern int hpool_sizes(struct hpage_pool *, int);
> 
> This patch converts all current library local functions to this new idiom.
> 
> Signed-off-by: Andy Whitcroft <[EMAIL PROTECTED]>

There are two spaces vs tabs issues noted below, but it's not a biggie.
Other than that, I didn't spot anything bad.

Acked-by: Mel Gorman <[EMAIL PROTECTED]>

> ---
>  alloc.c                 |    2 +-
>  debug.c                 |    2 +-
>  elflink.c               |    6 +++---
>  hugeadm.c               |   14 +++++++-------
>  hugetlbfs.h             |    3 ++-
>  hugeutils.c             |   20 ++++++++++----------
>  init.c                  |   10 +++++-----
>  kernel-features.c       |    2 +-
>  libhugetlbfs_internal.h |   33 ++++++++++++++++++++++++---------
>  morecore.c              |   10 +++++-----
>  pagesize.c              |    2 +-
>  11 files changed, 60 insertions(+), 44 deletions(-)
> 
> diff --git a/alloc.c b/alloc.c
> index 197c1ce..750b2cb 100644
> --- a/alloc.c
> +++ b/alloc.c
> @@ -103,7 +103,7 @@ void *get_huge_pages(size_t len, ghp_t flags)
>       }
>  
>       /* Fault the region to ensure accesses succeed */
> -     if (__lh_hugetlbfs_prefault(heap_fd, buf, len) != 0) {
> +     if (hugetlbfs_prefault(heap_fd, buf, len) != 0) {
>               munmap(buf, len);
>               close(heap_fd);
>  
> diff --git a/debug.c b/debug.c
> index bd54d58..e854dff 100644
> --- a/debug.c
> +++ b/debug.c
> @@ -58,7 +58,7 @@ static void __hugetlbfs_init_debug(void)
>       initialized = 1;
>  }
>  
> -void __lh_hugetlbfs_setup_debug(void)
> +void hugetlbfs_setup_debug(void)
>  {
>       __hugetlbfs_init_debug();
>  }
> diff --git a/elflink.c b/elflink.c
> index 75a9dbb..f6a7fb5 100644
> --- a/elflink.c
> +++ b/elflink.c
> @@ -809,7 +809,7 @@ static void check_range_empty(void *addr, unsigned long 
> len)
>               WARNING("Unable to verify address range %p - %p.  Not empty?\n",
>                               addr, addr + len);
>               if (__hugetlbfs_debug)
> -                     __lh_dump_proc_pid_maps();
> +                     dump_proc_pid_maps();
>       }
>       if (p != MAP_FAILED)
>               munmap(p, len);
> @@ -1147,7 +1147,7 @@ static int set_hpage_sizes(const char *env)
>                       continue;
>  
>               if (*(++pos) == '=') {
> -                     size = __lh_parse_page_size(pos + 1);
> +                     size = parse_page_size(pos + 1);
>                       if (size == -1)
>                               return size;
>               } else
> @@ -1258,7 +1258,7 @@ static int parse_elf()
>       return 0;
>  }
>  
> -void __lh_hugetlbfs_setup_elflink(void)
> +void hugetlbfs_setup_elflink(void)
>  {
>       int i, ret;
>  
> diff --git a/hugeadm.c b/hugeadm.c
> index 4aef40e..cee6aac 100644
> --- a/hugeadm.c
> +++ b/hugeadm.c
> @@ -89,7 +89,7 @@ void pool_list(void)
>       int pos;
>       int cnt;
>  
> -     cnt = __lh_hpool_sizes(pools, MAX_POOLS);
> +     cnt = hpool_sizes(pools, MAX_POOLS);
>       if (cnt < 0) {
>               ERROR("unable to obtain pools list");
>               exit(EXIT_FAILURE);
> @@ -165,9 +165,9 @@ void pool_adjust(char *cmd, unsigned int counter)
>                                       page_size_str, adjust_str, counter);
>  
>       /* Convert and validate the page_size. */
> -     page_size = __lh_parse_page_size(page_size_str);
> +     page_size = parse_page_size(page_size_str);
>  
> -     cnt = __lh_hpool_sizes(pools, MAX_POOLS);
> +     cnt = hpool_sizes(pools, MAX_POOLS);
>       if (cnt < 0) {
>               ERROR("unable to obtain pools list");
>               exit(EXIT_FAILURE);
> @@ -210,7 +210,7 @@ void pool_adjust(char *cmd, unsigned int counter)
>        * requested should there be insufficient pages.  Check the new
>        * value and adjust HUGEPAGES_OC accordingly.
>        */
> -     __lh_get_pool_size(page_size, &pools[pos]);
> +     get_pool_size(page_size, &pools[pos]);
>       if (pools[pos].minimum != min) {
>               ERROR("failed to set pool minimum to %ld became %ld\n",
>                       min, pools[pos].minimum);
> @@ -228,7 +228,7 @@ void page_sizes(int all)
>       int pos;
>       int cnt;
>  
> -     cnt = __lh_hpool_sizes(pools, MAX_POOLS);
> +     cnt = hpool_sizes(pools, MAX_POOLS);
>       if (cnt < 0) {
>               ERROR("unable to obtain pools list");
>               exit(EXIT_FAILURE);
> @@ -259,8 +259,8 @@ int main(int argc, char** argv)
>               {0},
>       };
>  
> -     __lh_hugetlbfs_setup_debug();
> -        __lh_setup_mounts();
> +     hugetlbfs_setup_debug();
> +        setup_mounts();
>  

Could fix up the whitespace damage here, but no a big issue.

>       while (ret != -1) {
>               ret = getopt_long(argc, argv, opts, long_opts, &index);
> diff --git a/hugetlbfs.h b/hugetlbfs.h
> index 3f2eb30..c2c88f1 100644
> --- a/hugetlbfs.h
> +++ b/hugetlbfs.h
> @@ -32,7 +32,8 @@ int hugetlbfs_unlinked_fd(void);
>  int hugetlbfs_unlinked_fd_for_size(long page_size);
>  
>  /* Diagnoses/debugging only functions */
> -long __lh_dump_proc_pid_maps(void);
> +#define dump_proc_pid_maps __lh_dump_proc_pid_maps
> +long dump_proc_pid_maps(void);
>  
>  #define PF_LINUX_HUGETLB     0x100000
>  
> diff --git a/hugeutils.c b/hugeutils.c
> index 433e6e8..b9e63ad 100644
> --- a/hugeutils.c
> +++ b/hugeutils.c
> @@ -88,7 +88,7 @@ static inline long size_to_smaller_unit(long size)
>   *   EINVAL          - str could not be parsed or was not greater than zero
>   *   EOVERFLOW       - Overflow when converting from the specified units
>   */
> -long __lh_parse_page_size(const char *str)
> +long parse_page_size(const char *str)
>  {
>       char *pos;
>       long size;
> @@ -292,7 +292,7 @@ static void probe_default_hpage_size(void)
>        */
>       env = getenv("HUGETLB_DEFAULT_PAGE_SIZE");
>       if (env && strlen(env) > 0)
> -             size = __lh_parse_page_size(env);
> +             size = parse_page_size(env);
>       else {
>               size = file_read_ulong(MEMINFO, "Hugepagesize:");
>               size *= 1024; /* convert from kB to B */
> @@ -410,7 +410,7 @@ static void find_mounts(void)
>       close(fd);
>  }
>  
> -void __lh_setup_mounts(void)
> +void setup_mounts(void)
>  {
>       char *env;
>       int do_scan = 1;
> @@ -445,7 +445,7 @@ void __lh_setup_mounts(void)
>               debug_show_page_sizes();
>  }
>  
> -int __lh_get_pool_size(long size, struct hpage_pool *pool)
> +int get_pool_size(long size, struct hpage_pool *pool)
>  {
>       long nr_over = 0;
>       long nr_used = 0;
> @@ -493,7 +493,7 @@ int __lh_get_pool_size(long size, struct hpage_pool *pool)
>       return 0;
>  }
>  
> -int __lh_hpool_sizes(struct hpage_pool *pools, int pcnt)
> +int hpool_sizes(struct hpage_pool *pools, int pcnt)
>  {
>       long default_size;
>       int which = 0;
> @@ -503,7 +503,7 @@ int __lh_hpool_sizes(struct hpage_pool *pools, int pcnt)
>       default_size = size_to_smaller_unit(file_read_ulong(MEMINFO,
>                                                       "Hugepagesize:"));
>       if (default_size >= 0 && which < pcnt)
> -             if (__lh_get_pool_size(default_size, &pools[which])) {
> +             if (get_pool_size(default_size, &pools[which])) {
>                       pools[which].is_default = 1;
>                       which++;
>               }
> @@ -523,7 +523,7 @@ int __lh_hpool_sizes(struct hpage_pool *pools, int pcnt)
>                       if (size < 0 || size == default_size)
>                               continue;
>  
> -                     if (__lh_get_pool_size(size, &pools[which]))
> +                     if (get_pool_size(size, &pools[which]))
>                               which++;
>               }
>               closedir(dir);
> @@ -538,7 +538,7 @@ int __lh_hpool_sizes(struct hpage_pool *pools, int pcnt)
>  
>  /*
>   * NOTE: This function uses data that is initialized by
> - * __lh_setup_mounts() which is called during libhugetlbfs initialization.
> + * setup_mounts() which is called during libhugetlbfs initialization.
>   *
>   * returns:
>   *   on success, size of a huge page in number of bytes
> @@ -744,7 +744,7 @@ int hugetlbfs_unlinked_fd(void)
>  }
>  
>  #define IOV_LEN 64
> -int __lh_hugetlbfs_prefault(int fd, void *addr, size_t length)
> +int hugetlbfs_prefault(int fd, void *addr, size_t length)
>  {
>       /*
>        * The NUMA users of libhugetlbfs' malloc feature are
> @@ -827,7 +827,7 @@ int set_nr_overcommit_hugepages(long pagesize, unsigned 
> long val)
>  /********************************************************************/
>  
>  #define MAPS_BUF_SZ 4096
> -long __lh_dump_proc_pid_maps()
> +long dump_proc_pid_maps()
>  {
>       FILE *f;
>       char line[MAPS_BUF_SZ];
> diff --git a/init.c b/init.c
> index f58d34b..f9cd804 100644
> --- a/init.c
> +++ b/init.c
> @@ -21,11 +21,11 @@
>  
>  static void __attribute__ ((constructor)) setup_libhugetlbfs(void)
>  {
> -     __lh_hugetlbfs_setup_debug();
> -     __lh_setup_mounts();
> -     __lh_setup_features();
> +     hugetlbfs_setup_debug();
> +     setup_mounts();
> +     setup_features();
>  #ifndef NO_ELFLINK
> -     __lh_hugetlbfs_setup_elflink();
> +     hugetlbfs_setup_elflink();
>  #endif
> -     __lh_hugetlbfs_setup_morecore();
> +     hugetlbfs_setup_morecore();
>  }
> diff --git a/kernel-features.c b/kernel-features.c
> index 577e560..8f105b4 100644
> --- a/kernel-features.c
> +++ b/kernel-features.c
> @@ -199,7 +199,7 @@ int check_features_env_valid(const char *env)
>       return 0;
>  }
>  
> -void __lh_setup_features()
> +void setup_features()
>  {
>       struct utsname u;
>       char *env;
> diff --git a/libhugetlbfs_internal.h b/libhugetlbfs_internal.h
> index e07787f..4d7add7 100644
> --- a/libhugetlbfs_internal.h
> +++ b/libhugetlbfs_internal.h
> @@ -41,17 +41,30 @@
>  #define SLICE_HIGH_SHIFT     63
>  #endif
>  
> +/*
> + * When adding a library local variable externalise the symbol as
> + * normal, plus add a #define of the form below.  This define effectively
> + * renames the routine into the local namespace __lh_* which is forced
> + * local in the linker script version.lds.
> + */
>  extern int __hugetlbfs_verbose;
>  extern int __hugetlbfs_debug;
>  extern int __hugetlbfs_prefault;
> -extern void __lh_hugetlbfs_setup_elflink();
> -extern void __lh_hugetlbfs_setup_morecore();
> -extern void __lh_hugetlbfs_setup_debug();
> -extern void __lh_setup_mounts();
> -extern void __lh_setup_features();
> +#define hugetlbfs_setup_elflink __lh_hugetlbfs_setup_elflink
> +extern void hugetlbfs_setup_elflink();
> +#define hugetlbfs_setup_morecore __lh_hugetlbfs_setup_morecore
> +extern void hugetlbfs_setup_morecore();
> +#define hugetlbfs_setup_debug __lh_hugetlbfs_setup_debug
> +extern void hugetlbfs_setup_debug();
> +#define setup_mounts __lh_setup_mounts
> +extern void setup_mounts();
> +#define setup_features __lh_setup_features
> +extern void setup_features();
>  extern char __hugetlbfs_hostname[];
> -extern int __lh_hugetlbfs_prefault(int fd, void *addr, size_t length);
> -extern long __lh_parse_page_size(const char *str);
> +#define hugetlbfs_prefault __lh_hugetlbfs_prefault
> +extern int hugetlbfs_prefault(int fd, void *addr, size_t length);
> +#define parse_page_size __lh_parse_page_size
> +extern long parse_page_size(const char *str);
>  
>  #ifndef REPORT_UTIL
>  #define REPORT_UTIL "libhugetlbfs"
> @@ -97,8 +110,10 @@ struct hpage_pool {
>       int is_default;
>  };
>  
> -extern int __lh_hpool_sizes(struct hpage_pool *, int);
> -extern int __lh_get_pool_size(long, struct hpage_pool *);
> +#define hpool_sizes __lh_hpool_sizes
> +extern int hpool_sizes(struct hpage_pool *, int);
> +#define get_pool_size __lh_get_pool_size
> +extern int get_pool_size(long, struct hpage_pool *);
>  
>  /* Arch-specific callbacks */
>  extern int direct_syscall(int sysnum, ...);
> diff --git a/morecore.c b/morecore.c
> index ddcd77d..19d18b8 100644
> --- a/morecore.c
> +++ b/morecore.c
> @@ -108,7 +108,7 @@ static void *hugetlbfs_morecore(ptrdiff_t increment)
>                               WARNING("Heap originates at %p instead of %p\n",
>                                       p, heapbase);
>                               if (__hugetlbfs_debug)
> -                                     __lh_dump_proc_pid_maps();
> +                                     dump_proc_pid_maps();
>                       }
>                       /* then setup the heap variables */
>                       heapbase = heaptop = p;
> @@ -118,12 +118,12 @@ static void *hugetlbfs_morecore(ptrdiff_t increment)
>                       WARNING("New heap segment mapped at %p instead of %p\n",
>                             p, heapbase + mapsize);
>                       if (__hugetlbfs_debug)
> -                             __lh_dump_proc_pid_maps();
> +                             dump_proc_pid_maps();
>                       return NULL;
>               }
>  
>               /* Fault the region to ensure accesses succeed */
> -             if (__lh_hugetlbfs_prefault(zero_fd, p, delta) != 0) {
> +             if (hugetlbfs_prefault(zero_fd, p, delta) != 0) {
>                       munmap(p, delta);
>                       return NULL;
>               }
> @@ -190,7 +190,7 @@ static void *hugetlbfs_morecore(ptrdiff_t increment)
>       return p;
>  }
>  
> -void __lh_hugetlbfs_setup_morecore(void)
> +void hugetlbfs_setup_morecore(void)
>  {
>       char *env, *ep;
>       unsigned long heapaddr;
> @@ -212,7 +212,7 @@ void __lh_hugetlbfs_setup_morecore(void)
>       if (strncasecmp(env, "y", 1) == 0)
>               hpage_size = gethugepagesize();
>       else
> -             hpage_size = __lh_parse_page_size(env);
> +             hpage_size = parse_page_size(env);
>  
>       if (hpage_size <= 0) {
>               if (errno == ENOSYS)
> diff --git a/pagesize.c b/pagesize.c
> index aca4de4..11dd68d 100644
> --- a/pagesize.c
> +++ b/pagesize.c
> @@ -80,7 +80,7 @@ int main(int argc, char** argv)
>       long pagesizes[MAX_PAGESIZES];
>       int i;
>  
> -        __lh_hugetlbfs_setup_debug();
> +        hugetlbfs_setup_debug();
>  

Another spaces vs tabs here, but again barely worth getting into a
twist over.

>       while (ret != -1) {
>               ret = getopt_long(argc, argv, opts, long_opts, &index);
> -- 
> 1.6.0.2.711.gf1ba4
> 

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