mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-30 04:10:54 -08:00
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.
This commit is contained in:
parent
d983a10b9a
commit
7be78020e3
6 changed files with 29 additions and 76 deletions
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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).
|
||||
|
|
|
|||
14
configure.ac
14
configure.ac
|
|
@ -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
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -44,46 +44,26 @@ static POINTER data_space_start;
|
|||
static size_t lim_data;
|
||||
|
||||
|
||||
#if defined (HAVE_GETRLIMIT) && defined (RLIMIT_AS)
|
||||
#ifdef HAVE_GETRLIMIT
|
||||
|
||||
# ifndef RLIMIT_AS
|
||||
# define RLIMIT_AS RLIMIT_DATA
|
||||
# endif
|
||||
|
||||
static void
|
||||
get_lim_data (void)
|
||||
{
|
||||
/* 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;
|
||||
|
||||
getrlimit (RLIMIT_AS, &rlimit);
|
||||
if (rlimit.rlim_cur == RLIM_INFINITY)
|
||||
lim_data = -1;
|
||||
else
|
||||
lim_data = rlimit.rlim_cur;
|
||||
lim_data
|
||||
= (getrlimit (RLIMIT_AS, &rlimit) == 0 && rlimit.rlim_cur <= SIZE_MAX
|
||||
? rlimit.rlim_cur
|
||||
: SIZE_MAX);
|
||||
}
|
||||
|
||||
#else /* not HAVE_GETRLIMIT */
|
||||
|
||||
#ifdef USG
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
#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. */
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue