Now that we have the ability to map huge pages without having an active hugetlfs mount point with MAP_HUGETLB it no longer makes sense to detect valid page sizes based on active mount points. This patch separates out the detection of valid page sizes from the detection of active mount points.
Signed-off-by: Eric B Munson <[email protected]> --- hugeutils.c | 24 ++++++++++++++++++------ init.c | 4 ++++ libhugetlbfs_internal.h | 6 ++++++ 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/hugeutils.c b/hugeutils.c index 5746a60..5616d60 100644 --- a/hugeutils.c +++ b/hugeutils.c @@ -311,6 +311,22 @@ void hugetlbfs_setup_env() __hugetlb_opts.no_reserve = 1; } +void hugetlbfs_setup_page_sizes() +{ + struct hpage_pool pool[MAX_HPAGE_SIZES]; + int i; + int ret = hpool_sizes(pool, MAX_HPAGE_SIZES); + if (ret < 0) { + WARNING("Unable to find available huge page sizes\n"); + return; + } + + for (i = 0; i < ret; i++) + hpage_sizes[i].pagesize = pool[i].pagesize; + + nr_hpage_sizes = ret; +} + void hugetlbfs_check_priv_resv() { /* @@ -420,7 +436,7 @@ static int hpage_size_to_index(unsigned long size) return -1; } -static void probe_default_hpage_size(void) +void probe_default_hpage_size(void) { long size; int index; @@ -510,7 +526,7 @@ static void add_hugetlbfs_mount(char *path, int user_mount) strcpy(hpage_sizes[idx].mount, path); } -static void debug_show_page_sizes(void) +void debug_show_page_sizes(void) { int i; @@ -593,10 +609,6 @@ void setup_mounts(void) /* Then probe all mounted filesystems */ if (do_scan) find_mounts(); - - probe_default_hpage_size(); - if (__hugetlbfs_debug) - debug_show_page_sizes(); } int get_pool_size(long size, struct hpage_pool *pool) diff --git a/init.c b/init.c index c7f5a05..2681c91 100644 --- a/init.c +++ b/init.c @@ -23,7 +23,11 @@ static void __attribute__ ((constructor)) setup_libhugetlbfs(void) { hugetlbfs_setup_env(); hugetlbfs_setup_debug(); + hugetlbfs_setup_page_sizes(); setup_mounts(); + probe_default_hpage_size(); + if (__hugetlbfs_debug) + debug_show_page_sizes(); setup_features(); hugetlbfs_check_priv_resv(); hugetlbfs_check_safe_noreserve(); diff --git a/libhugetlbfs_internal.h b/libhugetlbfs_internal.h index ace64bd..137ab72 100644 --- a/libhugetlbfs_internal.h +++ b/libhugetlbfs_internal.h @@ -112,6 +112,12 @@ extern char __hugetlbfs_hostname[]; 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); +#define probe_default_hpage_size __lh__probe_default_hpage_size +extern void probe_default_hpage_size(void); +#define debug_show_page_sizes __lh__debug_show_page_sizes +extern void debug_show_page_sizes(void); +#define hugetlbfs_setup_page_sizes __lh__hugetlbfs_setup_page_sizes +extern void hugetlbfs_setup_page_sizes(void); #define __hugetlb_opts __lh__hugetlb_opts extern struct libhugeopts_t __hugetlb_opts; -- 1.7.1 ------------------------------------------------------------------------------ The Next 800 Companies to Lead America's Growth: New Video Whitepaper David G. Thomson, author of the best-selling book "Blueprint to a Billion" shares his insights and actions to help propel your business during the next growth cycle. Listen Now! http://p.sf.net/sfu/SAP-dev2dev _______________________________________________ Libhugetlbfs-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/libhugetlbfs-devel
