Signed-off-by: Eric B Munson <[EMAIL PROTECTED]>
---
 hugeutils.c             |    5 +++++
 libhugetlbfs_internal.h |    1 +
 shm.c                   |   11 ++---------
 3 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/hugeutils.c b/hugeutils.c
index 1eae936..ad9d4a6 100644
--- a/hugeutils.c
+++ b/hugeutils.c
@@ -293,6 +293,11 @@ void hugetlbfs_setup_env()
        env = getenv("HUGETLB_MORECORE_SHRINK");
        if (env && strcasecmp(env, "yes") == 0)
                __hugetlb_opts.shrink_ok = 1;
+
+       /* Determine if shmget() calls should be overridden */
+       env = getenv("HUGETLB_SHM");
+       if (env && !strcmp(env, "yes"))
+               __hugetlb_opts.shm_enabled = 1;
 }
 
 /*
diff --git a/libhugetlbfs_internal.h b/libhugetlbfs_internal.h
index dae4247..de85435 100644
--- a/libhugetlbfs_internal.h
+++ b/libhugetlbfs_internal.h
@@ -59,6 +59,7 @@ struct libhugeopts_t {
        int             min_copy;
        int             sharing;
        int             shrink_ok;
+       int             shm_enabled;
        unsigned long   force_elfmap;
        char            *ld_preload;
        char            *elfmap;
diff --git a/shm.c b/shm.c
index ac3b52a..b3def09 100644
--- a/shm.c
+++ b/shm.c
@@ -34,9 +34,7 @@ int shmget(key_t key, size_t size, int shmflg)
        static int (*real_shmget)(key_t key, size_t size, int shmflg) = NULL;
        char *error;
        int retval;
-       char *hugetlbshm_env;
        size_t aligned_size = size;
-       int hugetlbshm_enabled = 0;
 
        DEBUG("hugetlb_shmem: entering overridden shmget() call\n");
 
@@ -49,13 +47,8 @@ int shmget(key_t key, size_t size, int shmflg)
                }
        }
 
-       /* Determine if shmget() calls should be overridden */
-       hugetlbshm_env = getenv("HUGETLB_SHM");
-       if (hugetlbshm_env && !strcmp(hugetlbshm_env, "yes"))
-               hugetlbshm_enabled = 1;
-
        /* Align the size and set SHM_HUGETLB on request */
-       if (hugetlbshm_enabled) {
+       if (__hugetlb_opts.shm_enabled) {
                /*
                 * Use /proc/meminfo because shm always uses the system
                 * default huge page size.
@@ -75,7 +68,7 @@ int shmget(key_t key, size_t size, int shmflg)
 
        /* Call the "real" shmget. If hugepages fail, use small pages */
        retval = real_shmget(key, aligned_size, shmflg);
-       if (retval == -1 && hugetlbshm_enabled) {
+       if (retval == -1 && __hugetlb_opts.shm_enabled) {
                WARNING("While overriding shmget(%zd) to add SHM_HUGETLB: %s\n",
                        aligned_size, strerror(errno));
                shmflg &= ~SHM_HUGETLB;
-- 
1.6.0.3


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