/* Functions for memory limit warnings.
- Copyright (C) 1990 Free Software Foundation, Inc.
+ Copyright (C) 1990, 1992 Free Software Foundation, Inc.
This file is part of GNU Emacs.
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)
+the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#ifdef emacs
-#include "config.h"
+#include <config.h>
#include "lisp.h"
#endif
#define EXCEEDS_LISP_PTR(x) 0
#endif
-#include "mem_limits.h"
+#include "mem-limits.h"
/*
Level number of warnings already issued.
/* Function to call to issue a warning;
0 means don't issue them. */
-static void (*warnfunction) ();
-
-extern POINTER sbrk ();
+static void (*warn_function) ();
/* Get more memory space, complaining if we're near the end. */
-static POINTER
-morecore_with_warning (size)
- register int size;
+static void
+check_memory_limits ()
{
- POINTER result;
+ extern POINTER (*__morecore) ();
+
register POINTER cp;
- int five_percent;
- int data_size;
+ unsigned long five_percent;
+ unsigned long data_size;
if (lim_data == 0)
get_lim_data ();
five_percent = lim_data / 20;
/* Find current end of memory and issue warning if getting near max */
- cp = sbrk (0);
- data_size = cp - data_space_start;
+ cp = (char *) (*__morecore) (0);
+ data_size = (char *) cp - (char *) data_space_start;
- if (warnfunction)
+ if (warn_function)
switch (warnlevel)
{
case 0:
warnlevel = 2;
if (EXCEEDS_LISP_PTR (cp))
- (*warnfunction) ("Warning: memory in use exceeds lisp pointer size");
-
- result = sbrk (size);
- if (result == (POINTER) -1)
- return NULL;
- return result;
+ (*warn_function) ("Warning: memory in use exceeds lisp pointer size");
}
/* Cause reinitialization based on job parameters;
POINTER start;
void (*warnfun) ();
{
- extern POINTER (* __morecore) (); /* From gmalloc.c */
+ extern void (* __after_morecore_hook) (); /* From gmalloc.c */
if (start)
data_space_start = start;
else
data_space_start = start_of_data ();
- warnfunction = warnfun;
- __morecore = &morecore_with_warning;
+ warn_function = warnfun;
+ __after_morecore_hook = check_memory_limits;
}