Commit 7be78020 authored by Paul Eggert's avatar Paul Eggert

Simplify get_lim_data.

* 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.
parent d983a10b
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.
......
......@@ -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
......
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).
......
......@@ -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
......
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.
......
......@@ -44,46 +44,26 @@ static POINTER data_space_start;
static size_t lim_data;
#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 */
/* Verify amount of memory available, complaining if we're near the end. */
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment