Files
rtems/cpukit/libcsupport/src/malloc_deferred.c
T
Chris Johns 72d2ec4da4 2008-07-03 Chris Johns <chrisj@rtems.org>
* cpukit/libcsupport/include/chain.h: Removed. Use the SAPI
	interface that is supported.

	* cpukit/libcsupport/Makefile.am,
	cpukit/libcsupport/preinstall.am: Remove chain.h header
	references.

	* cpukit/sapi/include/rtems/chain.h,
	cpukit/sapi/inline/rtems/chain.inl: New. A supported chains
	interface.

	* cpukit/sapi/Makefile.am, cpukit/sapi/preinstall.am: Updated to
	include the new chains interface.

	* cpukit/libfs/src/imfs/imfs.h,
	cpukit/libfs/src/imfs/imfs_creat.c,
	cpukit/libfs/src/imfs/imfs_debug.c,
	cpukit/libfs/src/imfs/imfs_directory.c,
	cpukit/libfs/src/imfs/imfs_fsunmount.c,
	cpukit/libfs/src/imfs/imfs_getchild.c,
	cpukit/libfs/src/imfs/imfs_load_tar.c,
	cpukit/libfs/src/imfs/imfs_rmnod.c,
	cpukit/libfs/src/imfs/memfile.c,
	cpukit/libfs/src/nfsclient/src/nfs.c,
	cpukit/libcsupport/include/rtems/libio.h,
	cpukit/libcsupport/src/malloc_deferred.c,
	cpukit/libcsupport/src/mount.c,
	cpukit/libcsupport/src/privateenv.c,
	cpukit/libcsupport/src/unmount.c: Change to the new chains
	interface.

	* cpukit/libcsupport/src/malloc_boundary.c: Remove warning.
2008-07-03 01:37:38 +00:00

61 lines
1.2 KiB
C

/*
* Process free requests deferred because they were from ISR
* or other critical section.
*
* COPYRIGHT (c) 1989-2007.
* 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.rtems.com/license/LICENSE.
*
* $Id$
*/
#if HAVE_CONFIG_H
#include "config.h"
#endif
#ifdef RTEMS_NEWLIB
#include <stdlib.h>
#include <errno.h>
#include "malloc_p.h"
rtems_chain_control RTEMS_Malloc_GC_list;
boolean malloc_is_system_state_OK(void)
{
if ( _Thread_Dispatch_disable_level > 0 )
return FALSE;
if ( _ISR_Nest_level > 0 )
return FALSE;
return TRUE;
}
void malloc_deferred_frees_initialize(void)
{
rtems_chain_initialize_empty(&RTEMS_Malloc_GC_list);
}
void malloc_deferred_frees_process(void)
{
rtems_chain_node *to_be_freed;
/*
* If some free's have been deferred, then do them now.
*/
while ((to_be_freed = rtems_chain_get(&RTEMS_Malloc_GC_list)) != NULL)
free(to_be_freed);
}
void malloc_deferred_free(
void *pointer
)
{
rtems_chain_append(&RTEMS_Malloc_GC_list, (rtems_chain_node *)pointer);
}
#endif