Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRanjith Kumaran <ranjith@cygnus.com>2000-03-18 01:48:54 +0300
committerRanjith Kumaran <ranjith@cygnus.com>2000-03-18 01:48:54 +0300
commit03261851a10dd2d6900a0a00a7515a0a46fb5d76 (patch)
tree7c22ac6cbbc99fd5cd1b5426853be8d4fd7bfcf1 /libgloss/sbrk.c
parentfae4c299f14fc23e2829c8656992eba21f79242a (diff)
20000317 sourceware import
Diffstat (limited to 'libgloss/sbrk.c')
-rw-r--r--libgloss/sbrk.c55
1 files changed, 55 insertions, 0 deletions
diff --git a/libgloss/sbrk.c b/libgloss/sbrk.c
new file mode 100644
index 000000000..c222b4bbf
--- /dev/null
+++ b/libgloss/sbrk.c
@@ -0,0 +1,55 @@
+/* sbrk.c -- allocate memory dynamically.
+ *
+ * Copyright (c) 1995,1996 Cygnus Support
+ *
+ * The authors hereby grant permission to use, copy, modify, distribute,
+ * and license this software and its documentation for any purpose, provided
+ * that existing copyright notices are retained in all copies and that this
+ * notice is included verbatim in any distributions. No written agreement,
+ * license, or royalty fee is required for any of the authorized uses.
+ * Modifications to this software may be copyrighted by their authors
+ * and need not follow the licensing terms described here, provided that
+ * the new terms are clearly indicated on the first page of each file where
+ * they apply.
+ */
+#include <errno.h>
+#include "glue.h"
+
+/* just in case, most boards have at least some memory */
+#ifndef RAMSIZE
+# define RAMSIZE (caddr_t)0x100000
+#endif
+
+char *heap_ptr;
+
+/*
+ * sbrk -- changes heap size size. Get nbytes more
+ * RAM. We just increment a pointer in what's
+ * left of memory on the board.
+ */
+char *
+sbrk (nbytes)
+ int nbytes;
+{
+ char *base;
+
+ if (!heap_ptr)
+ heap_ptr = (char *)&_end;
+ base = heap_ptr;
+ heap_ptr += nbytes;
+
+ return base;
+/* FIXME: We really want to make sure we don't run out of RAM, but this
+ * isn't very portable.
+ */
+#if 0
+ if ((RAMSIZE - heap_ptr - nbytes) >= 0) {
+ base = heap_ptr;
+ heap_ptr += nbytes;
+ return (base);
+ } else {
+ errno = ENOMEM;
+ return ((char *)-1);
+ }
+#endif
+}