]> git.eshelyaron.com Git - emacs.git/commitdiff
(MMAP_ALLOCATED_P): New macro to be set from system
authorGerd Moellmann <gerd@gnu.org>
Tue, 16 Apr 2002 07:37:37 +0000 (07:37 +0000)
committerGerd Moellmann <gerd@gnu.org>
Tue, 16 Apr 2002 07:37:37 +0000 (07:37 +0000)
configuration files.
(mmap_enlarge): Enlarge mapped regions only if MMAP_ALLOCATED_P
returns 0.

src/ChangeLog
src/buffer.c

index 693272711d1c7652e21cad7c5bcb450e28df7c90..473dc18101dedf6c40f044cf9877af667d0cef2f 100644 (file)
@@ -1,3 +1,10 @@
+2002-04-16  Gerd Moellmann  <gerd@gnu.org>
+
+       * buffer.c (MMAP_ALLOCATED_P): New macro to be set from system
+       configuration files.
+       (mmap_enlarge): Enlarge mapped regions only if MMAP_ALLOCATED_P
+       returns 0.
+
 2002-04-13  Eli Zaretskii  <eliz@is.elta.co.il>
 
        * unexelf.c (unexec) [__sgi]: Undo the change from 2002-01-20.
index 19c9682f5dad5f3798b869efad271a24648ca973..96b09ed4eeebc8e1ab1ee065353cf071d08d9530 100644 (file)
@@ -1,5 +1,5 @@
 /* Buffer manipulation primitives for GNU Emacs.
-   Copyright (C) 1985,86,87,88,89,93,94,95,97,98, 1999, 2000, 2001
+   Copyright (C) 1985,86,87,88,89,93,94,95,97,98, 1999, 2000, 2001, 2002
        Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
@@ -4277,6 +4277,18 @@ static int mmap_initialized_p;
 
 #define MEM_ALIGN      sizeof (double)
 
+/* Predicate returning true if part of the address range [START ..
+   END[ is currently mapped.  Used to prevent overwriting an existing
+   memory mapping.
+
+   Default is to conservativly assume the address range is occupied by
+   something else.  This can be overridden by system configuration
+   files if system-specific means to determine this exists.  */
+
+#ifndef MMAP_ALLOCATED_P
+#define MMAP_ALLOCATED_P(start, end) 1
+#endif
+
 /* Function prototypes.  */
 
 static int mmap_free_1 P_ ((struct mmap_region *));
@@ -4369,16 +4381,13 @@ mmap_enlarge (r, npages)
     }
   else if (npages > 0)
     {
-      struct mmap_region *r2;
-      
       nbytes = npages * mmap_page_size;
       
       /* Try to map additional pages at the end of the region.  We
         cannot do this if the address range is already occupied by
         something else because mmap deletes any previous mapping.
         I'm not sure this is worth doing, let's see.  */
-      r2 = mmap_find (region_end, region_end + nbytes);
-      if (r2 == NULL)
+      if (!MMAP_ALLOCATED_P (region_end, region_end + nbytes))
        {
          POINTER_TYPE *p;