X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/c52713b17b0446ad112cfda886151f5d7fcdf6c0..95b1abcfafe8a366a75635f5fa4b4fa1e79f2964:/src/mem-limits.h diff --git a/src/mem-limits.h b/src/mem-limits.h index 0150b83b1e..d811968b13 100644 --- a/src/mem-limits.h +++ b/src/mem-limits.h @@ -1,12 +1,13 @@ /* Includes for memory limit warnings. - Copyright (C) 1990, 1992 Free Software Foundation, Inc. + Copyright (C) 1990, 1993, 1994, 1995, 1996, 2001, 2002, 2003, 2004, + 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GNU Emacs. -GNU Emacs is free software; you can redistribute it and/or modify +GNU Emacs is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 1, or (at your option) -any later version. +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. GNU Emacs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -14,12 +15,47 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License -along with GNU Emacs; see the file COPYING. If not, write to -the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ +along with GNU Emacs. If not, see . */ + +#ifdef MSDOS +#include +extern int etext; +#endif + +/* Some systems need this before . */ +#include + +#ifdef _LIBC + +#include +#define BSD4_2 /* Tell code below to use getrlimit. */ + +/* Old Linux startup code won't define __data_start. */ +extern int etext, __data_start; weak_extern (__data_start) +#define start_of_data() (&__data_start ?: &etext) + +#else /* not _LIBC */ + +#ifdef HAVE_SYS_RESOURCE_H +# include +# include +#else +# if HAVE_SYS_VLIMIT_H +# include /* Obsolete, says glibc */ +# endif +#endif + +#ifdef CYGWIN +#define BSD4_2 +#endif #ifndef BSD4_2 #ifndef USG +#ifndef MSDOS +#ifndef WINDOWSNT #include +#endif /* not WINDOWSNT */ +#endif /* not MSDOS */ #endif /* not USG */ #else /* if BSD4_2 */ #include @@ -30,11 +66,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ /* The important properties of this type are that 1) it's a pointer, and 2) arithmetic on it should work as if the size of the object pointed to has a size of 1. */ -#ifdef __STDC__ -typedef void *POINTER; -#else -typedef char *POINTER; -#endif +typedef POINTER_TYPE *POINTER; typedef unsigned long SIZE; @@ -44,66 +76,35 @@ typedef unsigned long SIZE; #define NULL ((POINTER) 0) extern POINTER start_of_data (); -#define EXCEEDS_LISP_PTR(ptr) ((unsigned int) (ptr) >> VALBITS) +#if defined USE_LSB_TAG +#define EXCEEDS_LISP_PTR(ptr) 0 +#elif defined DATA_SEG_BITS +#define EXCEEDS_LISP_PTR(ptr) \ + (((EMACS_UINT) (ptr) & ~DATA_SEG_BITS) >> VALBITS) +#else +#define EXCEEDS_LISP_PTR(ptr) ((EMACS_UINT) (ptr) >> VALBITS) +#endif -#ifdef BSD +#ifdef DATA_START +#define start_of_data() ((char *)DATA_START) +#endif + +#ifdef BSD_SYSTEM #ifndef DATA_SEG_BITS +#ifndef DATA_START extern char etext; #define start_of_data() &etext #endif #endif +#endif -#else /* Not emacs */ +#else /* not emacs */ extern char etext; #define start_of_data() &etext -#endif /* Not emacs */ - - +#endif /* not emacs */ -/* start of data space; can be changed by calling malloc_init */ -static POINTER data_space_start; +#endif /* not _LIBC */ -/* Number of bytes of writable memory we can expect to be able to get */ -static unsigned int lim_data; -#ifdef USG - -static void -get_lim_data () -{ - extern long ulimit (); - -#ifdef ULIMIT_BREAK_VALUE - lim_data = ULIMIT_BREAK_VALUE; -#else - lim_data = ulimit (3, 0); -#endif - - lim_data -= (long) data_space_start; -} - -#else /* not USG */ -#ifndef BSD4_2 - -static void -get_lim_data () -{ - lim_data = vlimit (LIM_DATA, -1); -} - -#else /* BSD4_2 */ - -static void -get_lim_data () -{ - 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 */ -#endif -} -#endif /* BSD4_2 */ -#endif /* not USG */ +/* arch-tag: fe39244e-e54f-4208-b7aa-02556f7841c5 + (do not change this comment) */