(syms_of_ntproc) <w32-get-true-file-attributes>: Doc fix.
[bpt/emacs.git] / src / mem-limits.h
CommitLineData
9889c728 1/* Includes for memory limit warnings.
429ab54e 2 Copyright (C) 1990, 1993, 1994, 1995, 1996, 2001, 2002, 2003, 2004,
8cabe764 3 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
9889c728
JB
4
5This file is part of GNU Emacs.
6
7GNU Emacs is free software; you can redistribute it and/or modify
8it under the terms of the GNU General Public License as published by
684d6f5b 9the Free Software Foundation; either version 3, or (at your option)
9889c728
JB
10any later version.
11
12GNU Emacs is distributed in the hope that it will be useful,
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
18along with GNU Emacs; see the file COPYING. If not, write to
4fc5845f
LK
19the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20Boston, MA 02110-1301, USA. */
9889c728 21
004164c5
RS
22#ifdef MSDOS
23#include <dpmi.h>
a8c1733b 24extern int etext;
004164c5
RS
25#endif
26
f920c441
RM
27/* Some systems need this before <sys/resource.h>. */
28#include <sys/types.h>
29
b1814de2
RM
30#ifdef _LIBC
31
32#include <sys/resource.h>
ab8fb193 33#define BSD4_2 /* Tell code below to use getrlimit. */
b1814de2 34
6c6b28ea 35/* Old Linux startup code won't define __data_start. */
6d0dbbaf 36extern int etext, __data_start; weak_extern (__data_start)
6c6b28ea 37#define start_of_data() (&__data_start ?: &etext)
240049aa 38
3999f961 39#else /* not _LIBC */
b1814de2 40
0a7d6039
DL
41#ifdef HAVE_SYS_RESOURCE_H
42# include <sys/time.h>
43# include <sys/resource.h>
44#else
45# if HAVE_SYS_VLIMIT_H
46# include <sys/vlimit.h> /* Obsolete, says glibc */
47# endif
c027d070
JB
48#endif
49
cd1168e1
RS
50#ifdef __bsdi__
51#define BSD4_2
52#endif
53
c60ee5e7
JB
54#ifdef CYGWIN
55#define BSD4_2
56#endif
57
9889c728
JB
58#ifndef BSD4_2
59#ifndef USG
004164c5 60#ifndef MSDOS
dbecffaa 61#ifndef WINDOWSNT
9889c728 62#include <sys/vlimit.h>
dbecffaa 63#endif /* not WINDOWSNT */
004164c5 64#endif /* not MSDOS */
9889c728
JB
65#endif /* not USG */
66#else /* if BSD4_2 */
67#include <sys/time.h>
68#include <sys/resource.h>
69#endif /* BSD4_2 */
70
6fb48933 71#ifdef emacs
5399ec5d
JB
72/* The important properties of this type are that 1) it's a pointer, and
73 2) arithmetic on it should work as if the size of the object pointed
74 to has a size of 1. */
8bbffb13 75typedef POINTER_TYPE *POINTER;
9889c728
JB
76
77typedef unsigned long SIZE;
78
79#ifdef NULL
80#undef NULL
81#endif
82#define NULL ((POINTER) 0)
83
9889c728 84extern POINTER start_of_data ();
2fb0ce67
SM
85#if defined USE_LSB_TAG
86#define EXCEEDS_LISP_PTR(ptr) 0
87#elif defined DATA_SEG_BITS
27050994 88#define EXCEEDS_LISP_PTR(ptr) \
9aae3fc9 89 (((EMACS_UINT) (ptr) & ~DATA_SEG_BITS) >> VALBITS)
27050994 90#else
9aae3fc9 91#define EXCEEDS_LISP_PTR(ptr) ((EMACS_UINT) (ptr) >> VALBITS)
27050994 92#endif
9889c728 93
f456a2bc
KR
94#ifdef DATA_START
95#define start_of_data() ((char *)DATA_START)
96#endif
97
6df54671 98#ifdef BSD_SYSTEM
9889c728 99#ifndef DATA_SEG_BITS
f456a2bc 100#ifndef DATA_START
94d7c01a 101extern char etext;
9889c728
JB
102#define start_of_data() &etext
103#endif
104#endif
f456a2bc 105#endif
9889c728 106
6c6b28ea 107#else /* not emacs */
94d7c01a 108extern char etext;
9889c728 109#define start_of_data() &etext
3999f961 110#endif /* not emacs */
9889c728 111
3999f961 112#endif /* not _LIBC */
240049aa 113
9889c728 114
ab5796a9
MB
115/* arch-tag: fe39244e-e54f-4208-b7aa-02556f7841c5
116 (do not change this comment) */