summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--c/src/exec/libcsupport/include/rtems/libcsupport.h1
-rw-r--r--c/src/exec/libcsupport/src/Makefile.am2
-rw-r--r--c/src/exec/libcsupport/src/mallocfreespace.c40
-rw-r--r--c/src/lib/ChangeLog7
-rw-r--r--c/src/lib/include/rtems/libcsupport.h1
-rw-r--r--c/src/lib/libc/Makefile.am2
-rw-r--r--c/src/lib/libc/libcsupport.h1
-rw-r--r--c/src/lib/libc/mallocfreespace.c40
-rw-r--r--cpukit/libcsupport/include/rtems/libcsupport.h1
-rw-r--r--cpukit/libcsupport/src/mallocfreespace.c40
10 files changed, 133 insertions, 2 deletions
diff --git a/c/src/exec/libcsupport/include/rtems/libcsupport.h b/c/src/exec/libcsupport/include/rtems/libcsupport.h
index 4c6764c1d4..4def1e82c5 100644
--- a/c/src/exec/libcsupport/include/rtems/libcsupport.h
+++ b/c/src/exec/libcsupport/include/rtems/libcsupport.h
@@ -33,6 +33,7 @@ extern void malloc_walk(size_t source, size_t printf_enabled);
extern void libc_init(int reentrant);
extern int host_errno(void);
extern void fix_syscall_errno(void);
+extern size_t malloc_free_space();
#ifdef __cplusplus
}
diff --git a/c/src/exec/libcsupport/src/Makefile.am b/c/src/exec/libcsupport/src/Makefile.am
index 56647cfe8f..b56d6f33dc 100644
--- a/c/src/exec/libcsupport/src/Makefile.am
+++ b/c/src/exec/libcsupport/src/Makefile.am
@@ -37,7 +37,7 @@ SYSTEM_CALL_C_FILES = open.c close.c read.c write.c lseek.c ioctl.c mkdir.c \
DIRECTORY_SCAN_C_FILES = opendir.c closedir.c readdir.c rewinddir.c \
scandir.c seekdir.c telldir.c getcwd.c
-MALLOC_C_FILES = malloc.c __brk.c __sbrk.c
+MALLOC_C_FILES = malloc.c mallocfreespace.c __brk.c __sbrk.c
PASSWORD_GROUP_C_FILES = getpwent.c getgrent.c
diff --git a/c/src/exec/libcsupport/src/mallocfreespace.c b/c/src/exec/libcsupport/src/mallocfreespace.c
new file mode 100644
index 0000000000..28ef83278e
--- /dev/null
+++ b/c/src/exec/libcsupport/src/mallocfreespace.c
@@ -0,0 +1,40 @@
+/*
+ * RTEMS Malloc Get Status Information
+ *
+ *
+ * COPYRIGHT (c) 1989-2000.
+ * On-Line Applications Research Corporation (OAR).
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.OARcorp.com/rtems/license.html.
+ *
+ * $Id$
+ */
+
+#define __RTEMS_VIOLATE_KERNEL_VISIBILITY__
+#include <rtems.h>
+#include "libcsupport.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <assert.h>
+#include <errno.h>
+#include <string.h>
+
+extern rtems_id RTEMS_Malloc_Heap;
+
+/*
+ * Find amount of free heap remaining
+ */
+
+size_t malloc_free_space( void )
+{
+ region_information_block heap_info;
+
+ if ( region_get_information( RTEMS_Malloc_Heap, &heap_info ) ) {
+ return (size_t) heap_info.free_size;
+ }
+ return (size_t) -1;
+}
diff --git a/c/src/lib/ChangeLog b/c/src/lib/ChangeLog
index 095f7a7737..f7047cc189 100644
--- a/c/src/lib/ChangeLog
+++ b/c/src/lib/ChangeLog
@@ -1,6 +1,13 @@
2000-10-18 Joel Sherrill <joel@OARcorp.com>
+ * libc/Makefile.am: Added mallocfreespace.c.
+ * libc/mallocfreespace.c: New file based on work by Nick Simon
+ <Nick.SIMON@syntegra.bt.co.uk> which he included in malloc.c.
+ * libc/libcsupport.h: Added prototype for malloc_free_space().
+
+2000-10-18 Joel Sherrill <joel@OARcorp.com>
+
* libc/fcntl.c: Do not require every filesystem to have an fcntl()
handler. Most fcntl() operations can be performed with no
filesystem support.
diff --git a/c/src/lib/include/rtems/libcsupport.h b/c/src/lib/include/rtems/libcsupport.h
index 4c6764c1d4..4def1e82c5 100644
--- a/c/src/lib/include/rtems/libcsupport.h
+++ b/c/src/lib/include/rtems/libcsupport.h
@@ -33,6 +33,7 @@ extern void malloc_walk(size_t source, size_t printf_enabled);
extern void libc_init(int reentrant);
extern int host_errno(void);
extern void fix_syscall_errno(void);
+extern size_t malloc_free_space();
#ifdef __cplusplus
}
diff --git a/c/src/lib/libc/Makefile.am b/c/src/lib/libc/Makefile.am
index 56647cfe8f..b56d6f33dc 100644
--- a/c/src/lib/libc/Makefile.am
+++ b/c/src/lib/libc/Makefile.am
@@ -37,7 +37,7 @@ SYSTEM_CALL_C_FILES = open.c close.c read.c write.c lseek.c ioctl.c mkdir.c \
DIRECTORY_SCAN_C_FILES = opendir.c closedir.c readdir.c rewinddir.c \
scandir.c seekdir.c telldir.c getcwd.c
-MALLOC_C_FILES = malloc.c __brk.c __sbrk.c
+MALLOC_C_FILES = malloc.c mallocfreespace.c __brk.c __sbrk.c
PASSWORD_GROUP_C_FILES = getpwent.c getgrent.c
diff --git a/c/src/lib/libc/libcsupport.h b/c/src/lib/libc/libcsupport.h
index 4c6764c1d4..4def1e82c5 100644
--- a/c/src/lib/libc/libcsupport.h
+++ b/c/src/lib/libc/libcsupport.h
@@ -33,6 +33,7 @@ extern void malloc_walk(size_t source, size_t printf_enabled);
extern void libc_init(int reentrant);
extern int host_errno(void);
extern void fix_syscall_errno(void);
+extern size_t malloc_free_space();
#ifdef __cplusplus
}
diff --git a/c/src/lib/libc/mallocfreespace.c b/c/src/lib/libc/mallocfreespace.c
new file mode 100644
index 0000000000..28ef83278e
--- /dev/null
+++ b/c/src/lib/libc/mallocfreespace.c
@@ -0,0 +1,40 @@
+/*
+ * RTEMS Malloc Get Status Information
+ *
+ *
+ * COPYRIGHT (c) 1989-2000.
+ * On-Line Applications Research Corporation (OAR).
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.OARcorp.com/rtems/license.html.
+ *
+ * $Id$
+ */
+
+#define __RTEMS_VIOLATE_KERNEL_VISIBILITY__
+#include <rtems.h>
+#include "libcsupport.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <assert.h>
+#include <errno.h>
+#include <string.h>
+
+extern rtems_id RTEMS_Malloc_Heap;
+
+/*
+ * Find amount of free heap remaining
+ */
+
+size_t malloc_free_space( void )
+{
+ region_information_block heap_info;
+
+ if ( region_get_information( RTEMS_Malloc_Heap, &heap_info ) ) {
+ return (size_t) heap_info.free_size;
+ }
+ return (size_t) -1;
+}
diff --git a/cpukit/libcsupport/include/rtems/libcsupport.h b/cpukit/libcsupport/include/rtems/libcsupport.h
index 4c6764c1d4..4def1e82c5 100644
--- a/cpukit/libcsupport/include/rtems/libcsupport.h
+++ b/cpukit/libcsupport/include/rtems/libcsupport.h
@@ -33,6 +33,7 @@ extern void malloc_walk(size_t source, size_t printf_enabled);
extern void libc_init(int reentrant);
extern int host_errno(void);
extern void fix_syscall_errno(void);
+extern size_t malloc_free_space();
#ifdef __cplusplus
}
diff --git a/cpukit/libcsupport/src/mallocfreespace.c b/cpukit/libcsupport/src/mallocfreespace.c
new file mode 100644
index 0000000000..28ef83278e
--- /dev/null
+++ b/cpukit/libcsupport/src/mallocfreespace.c
@@ -0,0 +1,40 @@
+/*
+ * RTEMS Malloc Get Status Information
+ *
+ *
+ * COPYRIGHT (c) 1989-2000.
+ * On-Line Applications Research Corporation (OAR).
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.OARcorp.com/rtems/license.html.
+ *
+ * $Id$
+ */
+
+#define __RTEMS_VIOLATE_KERNEL_VISIBILITY__
+#include <rtems.h>
+#include "libcsupport.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <assert.h>
+#include <errno.h>
+#include <string.h>
+
+extern rtems_id RTEMS_Malloc_Heap;
+
+/*
+ * Find amount of free heap remaining
+ */
+
+size_t malloc_free_space( void )
+{
+ region_information_block heap_info;
+
+ if ( region_get_information( RTEMS_Malloc_Heap, &heap_info ) ) {
+ return (size_t) heap_info.free_size;
+ }
+ return (size_t) -1;
+}