diff options
Diffstat (limited to 'c/src/lib/libc')
-rw-r--r-- | c/src/lib/libc/Makefile.am | 2 | ||||
-rw-r--r-- | c/src/lib/libc/libcsupport.h | 1 | ||||
-rw-r--r-- | c/src/lib/libc/mallocfreespace.c | 40 |
3 files changed, 42 insertions, 1 deletions
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; +} |