Simplify get_lim_data.
authorPaul Eggert <eggert@cs.ucla.edu>
Sat, 8 Dec 2012 06:56:26 +0000 (22:56 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Sat, 8 Dec 2012 06:56:26 +0000 (22:56 -0800)
* admin/CPP-DEFINES (ULIMIT_BREAK_VALUE): Remove.
* configure.ac (ULIMIT_BREAK_VALUE): Remove.
* src/vm-limit.c (get_lim_data): Combine RLIMIT_AS and RLIMIT_DATA methods.
Remove USG and vlimit methods; no longer used these days.
Add #error catchall just in case.

ChangeLog
admin/CPP-DEFINES
admin/ChangeLog
configure.ac
src/ChangeLog
src/vm-limit.c

index cb63adc..c0ab1e0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2012-12-08  Paul Eggert  <eggert@cs.ucla.edu>
 
+       Simplify get_lim_data.
+       * configure.ac (ULIMIT_BREAK_VALUE): Remove.
+
        Assume POSIX 1003.1-1988 or later for signal.h (Bug#13026).
        * configure.ac (PTY_OPEN, PTY_TTY_NAME_SPRINTF):
        Use SIGCHLD rather than SIGCLD.
index b711029..13c3da1 100644 (file)
@@ -429,7 +429,6 @@ TERM
 TIME_WITH_SYS_TIME
 TIOCSIGSEND
 TM_IN_SYS_TIME
-ULIMIT_BREAK_VALUE
 UNIX98_PTYS
 USE_TOOLKIT_SCROLL_BARS
 USG_SUBTTY_WORKS
index 840c38a..81d85f8 100644 (file)
@@ -1,3 +1,8 @@
+2012-12-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Simplify get_lim_data.
+       * CPP-DEFINES (ULIMIT_BREAK_VALUE): Remove.
+
 2012-12-03  Paul Eggert  <eggert@cs.ucla.edu>
 
        Assume POSIX 1003.1-1988 or later for signal.h (Bug#13026).
index 9dcd55a..affbf5f 100644 (file)
@@ -3688,7 +3688,6 @@ case $opsys in
 esac
 
 
-AH_TEMPLATE(ULIMIT_BREAK_VALUE, [Undocumented.])
 AH_TEMPLATE(TAB3, [Undocumented.])
 
 case $opsys in
@@ -3700,14 +3699,6 @@ case $opsys in
     ;;
 
   gnu-linux | gnu-kfreebsd )
-    dnl libc-linux/sysdeps/linux/i386/ulimit.c says that due to shared
-    dnl library, we cannot get the maximum address for brk.
-    AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
-#ifndef __i386__
-# error "not i386"
-#endif
-      ]], [[]])], AC_DEFINE(ULIMIT_BREAK_VALUE, [(32*1024*1024)]), [])
-
     AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
 #ifndef __ia64__
 # error "not ia64"
@@ -3721,11 +3712,6 @@ case $opsys in
     AC_DEFINE(RUN_TIME_REMAP, 1, [Define if emacs.c needs to call
       run_time_remap; for HPUX.])
     ;;
-
-  irix6-5)
-    dnl Ulimit(UL_GMEMLIM) is busted...
-    AC_DEFINE(ULIMIT_BREAK_VALUE, [0x14000000])
-    ;;
 esac
 
 
index 2b283a6..218dd42 100644 (file)
@@ -1,5 +1,10 @@
 2012-12-08  Paul Eggert  <eggert@cs.ucla.edu>
 
+       Simplify get_lim_data.
+       * vm-limit.c (get_lim_data): Combine RLIMIT_AS and RLIMIT_DATA methods.
+       Remove USG and vlimit methods; no longer used these days.
+       Add #error catchall just in case.
+
        Assume POSIX 1003.1-1988 or later for signal.h (Bug#13026).
        Exceptions: do not assume SIGCONT, SIGSTOP, SIGTSTP, SIGTTIN,
        SIGTTOU, SIGUSR1, SIGUSR2, as Microsoft platforms lack these.
index 2a71e88..befc01d 100644 (file)
@@ -44,46 +44,26 @@ static POINTER data_space_start;
 static size_t lim_data;
 \f
 
-#if defined (HAVE_GETRLIMIT) && defined (RLIMIT_AS)
-static void
-get_lim_data (void)
-{
-  struct rlimit rlimit;
-
-  getrlimit (RLIMIT_AS, &rlimit);
-  if (rlimit.rlim_cur == RLIM_INFINITY)
-    lim_data = -1;
-  else
-    lim_data = rlimit.rlim_cur;
-}
+#ifdef HAVE_GETRLIMIT
 
-#else /* not HAVE_GETRLIMIT */
-
-#ifdef USG
+# ifndef RLIMIT_AS
+#  define RLIMIT_AS RLIMIT_DATA
+# endif
 
 static void
 get_lim_data (void)
 {
-  extern long ulimit ();
-
-  lim_data = -1;
-
-  /* Use the ulimit call, if we seem to have it.  */
-#if !defined (ULIMIT_BREAK_VALUE) || defined (GNU_LINUX)
-  lim_data = ulimit (3, 0);
-#endif
-
-  /* If that didn't work, just use the macro's value.  */
-#ifdef ULIMIT_BREAK_VALUE
-  if (lim_data == -1)
-    lim_data = ULIMIT_BREAK_VALUE;
-#endif
-
-  lim_data -= (long) data_space_start;
+  /* Set LIM_DATA to the minimum of the maximum object size and the
+     maximum address space.  Don't bother to check for values like
+     RLIM_INFINITY since in practice they are not much less than SIZE_MAX.  */
+  struct rlimit rlimit;
+  lim_data
+    = (getrlimit (RLIMIT_AS, &rlimit) == 0 && rlimit.rlim_cur <= SIZE_MAX
+       ? rlimit.rlim_cur
+       : SIZE_MAX);
 }
 
-#else /* not USG */
-#ifdef WINDOWSNT
+#elif defined WINDOWSNT
 
 #include "w32heap.h"
 
@@ -94,10 +74,8 @@ get_lim_data (void)
   lim_data = reserved_heap_size;
 }
 
-#else
-#if !defined (BSD4_2) && !defined (CYGWIN)
+#elif defined MSDOS
 
-#ifdef MSDOS
 void
 get_lim_data (void)
 {
@@ -135,32 +113,9 @@ ret_lim_data (void)
   get_lim_data ();
   return lim_data;
 }
-#else /* not MSDOS */
-static void
-get_lim_data (void)
-{
-  lim_data = vlimit (LIM_DATA, -1);
-}
-#endif /* not MSDOS */
-
-#else /* BSD4_2 || CYGWIN */
-
-static void
-get_lim_data (void)
-{
-  struct rlimit XXrlimit;
-
-  getrlimit (RLIMIT_DATA, &XXrlimit);
-#ifdef RLIM_INFINITY
-  lim_data = XXrlimit.rlim_cur & RLIM_INFINITY; /* soft limit */
 #else
-  lim_data = XXrlimit.rlim_cur;        /* soft limit */
+# error "get_lim_data not implemented on this machine"
 #endif
-}
-#endif /* BSD4_2 */
-#endif /* not WINDOWSNT */
-#endif /* not USG */
-#endif /* not HAVE_GETRLIMIT */
 \f
 /* Verify amount of memory available, complaining if we're near the end. */