Mercurial > emacs
annotate src/mem-limits.h @ 3883:b9e5a869b33e
Separate parameter faces (those created and modified by the user)
from the computed faces (the combinations created by
compute_char_face), so that we don't waste global face id's.
* xterm.h (struct x_display): Replace the fields faces and n_faces
with fields param_faces, n_param_faces, computed_faces,
n_computed_faces, and size_computed_faces.
(FRAME_FACES, FRAME_N_FACES): Replaced by...
(FRAME_COMPUTED_FACES, FRAME_N_COMPUTED_FACES, FRAME_PARAM_FACES,
FRAME_N_PARAM_FACES): New macros.
* xfaces.c: Doc fixes.
(init_frame_faces): Call new_computed_face to create entries for
the default and mode line faces. Use the FRAME...PARAM_FACES
macros.
(free_frame_faces): Use the FRAME...PARAM_FACES and
FRAME...COMPUTED_FACES macros. Don't use the copy flag; all
parameter faces have real X resources, and all computed faces just
have copies. Free both the parameter and computed face arrays.
(new_computed_face): New function.
(intern_computed_face): Renamed from intern_frame_face; callers
changed. Call new_computed_face.
(ensure_face_ready, compute_char_face, compute_glyph_face): Use the
FRAME...PARAM_FACES macros.
(recompute_basic_faces): Use the FRAME...PARAM_FACES and
FRAME...COMPUTED_FACES macros. Produce the computed faces by
starting with the base faces and merging in the parameter faces.
(Fset_face_attribute_internal): Use the FRAME...PARAM_FACES
macros. Just call recompute_basic_faces if the default or mode
line faces have changed.
* xfns.c (Fx_list_fonts): Use the FRAME...PARAM_FACES macros.
* xterm.c (dumpglyphs): Use the FRAME...COMPUTED_FACES macros.
* dispextern.h (struct face): Remove the copy member. This is no
longer necessary; all computed faces are copies, and no parameter
faces are.
author | Jim Blandy <jimb@redhat.com> |
---|---|
date | Tue, 22 Jun 1993 07:26:44 +0000 |
parents | 2df248d76c58 |
children | edf8c9e14e02 |
rev | line source |
---|---|
486 | 1 /* Includes for memory limit warnings. |
2961 | 2 Copyright (C) 1990, 1993 Free Software Foundation, Inc. |
486 | 3 |
4 This file is part of GNU Emacs. | |
5 | |
6 GNU Emacs is free software; you can redistribute it and/or modify | |
7 it under the terms of the GNU General Public License as published by | |
3370
2df248d76c58
[__bsdi__]: Define BSD4_2.
Richard M. Stallman <rms@gnu.org>
parents:
3055
diff
changeset
|
8 the Free Software Foundation; either version 2, or (at your option) |
486 | 9 any later version. |
10 | |
11 GNU Emacs is distributed in the hope that it will be useful, | |
12 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 GNU General Public License for more details. | |
15 | |
16 You should have received a copy of the GNU General Public License | |
17 along with GNU Emacs; see the file COPYING. If not, write to | |
18 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ | |
19 | |
3055 | 20 #if defined(__osf__) && (defined(__mips) || defined(mips)) |
21 #include <sys/time.h> | |
22 #include <sys/resource.h> | |
23 #endif | |
24 | |
3370
2df248d76c58
[__bsdi__]: Define BSD4_2.
Richard M. Stallman <rms@gnu.org>
parents:
3055
diff
changeset
|
25 #ifdef __bsdi__ |
2df248d76c58
[__bsdi__]: Define BSD4_2.
Richard M. Stallman <rms@gnu.org>
parents:
3055
diff
changeset
|
26 #define BSD4_2 |
2df248d76c58
[__bsdi__]: Define BSD4_2.
Richard M. Stallman <rms@gnu.org>
parents:
3055
diff
changeset
|
27 #endif |
2df248d76c58
[__bsdi__]: Define BSD4_2.
Richard M. Stallman <rms@gnu.org>
parents:
3055
diff
changeset
|
28 |
486 | 29 #ifndef BSD4_2 |
30 #ifndef USG | |
31 #include <sys/vlimit.h> | |
32 #endif /* not USG */ | |
33 #else /* if BSD4_2 */ | |
34 #include <sys/time.h> | |
35 #include <sys/resource.h> | |
36 #endif /* BSD4_2 */ | |
37 | |
1393
d2ae5897e43c
[!emacs]: Don't define POINTER, SIZE or NULL.
Richard M. Stallman <rms@gnu.org>
parents:
734
diff
changeset
|
38 #ifdef emacs |
575 | 39 /* The important properties of this type are that 1) it's a pointer, and |
40 2) arithmetic on it should work as if the size of the object pointed | |
41 to has a size of 1. */ | |
486 | 42 #ifdef __STDC__ |
43 typedef void *POINTER; | |
44 #else | |
45 typedef char *POINTER; | |
46 #endif | |
47 | |
48 typedef unsigned long SIZE; | |
49 | |
50 #ifdef NULL | |
51 #undef NULL | |
52 #endif | |
53 #define NULL ((POINTER) 0) | |
54 | |
55 extern POINTER start_of_data (); | |
1592
613783a3f00c
* mem-limits.h [DATA_SEG_BITS] (EXCEEDS_LISP_PTR): Remember to
Jim Blandy <jimb@redhat.com>
parents:
1450
diff
changeset
|
56 #ifdef DATA_SEG_BITS |
613783a3f00c
* mem-limits.h [DATA_SEG_BITS] (EXCEEDS_LISP_PTR): Remember to
Jim Blandy <jimb@redhat.com>
parents:
1450
diff
changeset
|
57 #define EXCEEDS_LISP_PTR(ptr) \ |
613783a3f00c
* mem-limits.h [DATA_SEG_BITS] (EXCEEDS_LISP_PTR): Remember to
Jim Blandy <jimb@redhat.com>
parents:
1450
diff
changeset
|
58 (((unsigned int) (ptr) & ~DATA_SEG_BITS) >> VALBITS) |
613783a3f00c
* mem-limits.h [DATA_SEG_BITS] (EXCEEDS_LISP_PTR): Remember to
Jim Blandy <jimb@redhat.com>
parents:
1450
diff
changeset
|
59 #else |
1393
d2ae5897e43c
[!emacs]: Don't define POINTER, SIZE or NULL.
Richard M. Stallman <rms@gnu.org>
parents:
734
diff
changeset
|
60 #define EXCEEDS_LISP_PTR(ptr) ((unsigned int) (ptr) >> VALBITS) |
1592
613783a3f00c
* mem-limits.h [DATA_SEG_BITS] (EXCEEDS_LISP_PTR): Remember to
Jim Blandy <jimb@redhat.com>
parents:
1450
diff
changeset
|
61 #endif |
486 | 62 |
63 #ifdef BSD | |
64 #ifndef DATA_SEG_BITS | |
734 | 65 extern char etext; |
486 | 66 #define start_of_data() &etext |
67 #endif | |
68 #endif | |
69 | |
70 #else /* Not emacs */ | |
734 | 71 extern char etext; |
486 | 72 #define start_of_data() &etext |
73 #endif /* Not emacs */ | |
74 | |
75 | |
76 | |
77 /* start of data space; can be changed by calling malloc_init */ | |
78 static POINTER data_space_start; | |
79 | |
80 /* Number of bytes of writable memory we can expect to be able to get */ | |
81 static unsigned int lim_data; | |
82 | |
83 #ifdef USG | |
84 | |
1450
a321ed0fa3ae
(get_lim_data): Make it static.
Richard M. Stallman <rms@gnu.org>
parents:
1399
diff
changeset
|
85 static void |
486 | 86 get_lim_data () |
87 { | |
88 extern long ulimit (); | |
2917
725698689fbd
Some more changes from Michael K. Johnson for Linux.
Jim Blandy <jimb@redhat.com>
parents:
1592
diff
changeset
|
89 |
725698689fbd
Some more changes from Michael K. Johnson for Linux.
Jim Blandy <jimb@redhat.com>
parents:
1592
diff
changeset
|
90 lim_data = -1; |
725698689fbd
Some more changes from Michael K. Johnson for Linux.
Jim Blandy <jimb@redhat.com>
parents:
1592
diff
changeset
|
91 |
725698689fbd
Some more changes from Michael K. Johnson for Linux.
Jim Blandy <jimb@redhat.com>
parents:
1592
diff
changeset
|
92 /* Use the ulimit call, if we seem to have it. */ |
725698689fbd
Some more changes from Michael K. Johnson for Linux.
Jim Blandy <jimb@redhat.com>
parents:
1592
diff
changeset
|
93 #if !defined (ULIMIT_BREAK_VALUE) || defined (LINUX) |
725698689fbd
Some more changes from Michael K. Johnson for Linux.
Jim Blandy <jimb@redhat.com>
parents:
1592
diff
changeset
|
94 lim_data = ulimit (3, 0); |
725698689fbd
Some more changes from Michael K. Johnson for Linux.
Jim Blandy <jimb@redhat.com>
parents:
1592
diff
changeset
|
95 #endif |
725698689fbd
Some more changes from Michael K. Johnson for Linux.
Jim Blandy <jimb@redhat.com>
parents:
1592
diff
changeset
|
96 |
725698689fbd
Some more changes from Michael K. Johnson for Linux.
Jim Blandy <jimb@redhat.com>
parents:
1592
diff
changeset
|
97 /* If that didn't work, just use the macro's value. */ |
486 | 98 #ifdef ULIMIT_BREAK_VALUE |
2917
725698689fbd
Some more changes from Michael K. Johnson for Linux.
Jim Blandy <jimb@redhat.com>
parents:
1592
diff
changeset
|
99 if (lim_data == -1) |
725698689fbd
Some more changes from Michael K. Johnson for Linux.
Jim Blandy <jimb@redhat.com>
parents:
1592
diff
changeset
|
100 lim_data = ULIMIT_BREAK_VALUE; |
486 | 101 #endif |
102 | |
103 lim_data -= (long) data_space_start; | |
104 } | |
105 | |
106 #else /* not USG */ | |
3055 | 107 #if !defined(BSD4_2) && !defined(__osf__) |
486 | 108 |
1450
a321ed0fa3ae
(get_lim_data): Make it static.
Richard M. Stallman <rms@gnu.org>
parents:
1399
diff
changeset
|
109 static void |
486 | 110 get_lim_data () |
111 { | |
112 lim_data = vlimit (LIM_DATA, -1); | |
113 } | |
114 | |
115 #else /* BSD4_2 */ | |
116 | |
1450
a321ed0fa3ae
(get_lim_data): Make it static.
Richard M. Stallman <rms@gnu.org>
parents:
1399
diff
changeset
|
117 static void |
486 | 118 get_lim_data () |
119 { | |
120 struct rlimit XXrlimit; | |
121 | |
122 getrlimit (RLIMIT_DATA, &XXrlimit); | |
123 #ifdef RLIM_INFINITY | |
124 lim_data = XXrlimit.rlim_cur & RLIM_INFINITY; /* soft limit */ | |
125 #else | |
126 lim_data = XXrlimit.rlim_cur; /* soft limit */ | |
127 #endif | |
128 } | |
129 #endif /* BSD4_2 */ | |
130 #endif /* not USG */ |