summaryrefslogtreecommitdiffstats
path: root/cpukit/libcsupport/src/resource_snapshot.c
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/libcsupport/src/resource_snapshot.c')
-rw-r--r--cpukit/libcsupport/src/resource_snapshot.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/cpukit/libcsupport/src/resource_snapshot.c b/cpukit/libcsupport/src/resource_snapshot.c
index e143fdf9ad..1ac9e63d4c 100644
--- a/cpukit/libcsupport/src/resource_snapshot.c
+++ b/cpukit/libcsupport/src/resource_snapshot.c
@@ -85,11 +85,25 @@ static int open_files(void)
return (int) rtems_libio_number_iops - free_count;
}
+static void free_all_delayed_blocks(void)
+{
+ #ifdef HEAP_PROTECTION
+ _RTEMS_Lock_allocator();
+ _Thread_Disable_dispatch();
+ _Heap_Protection_free_all_delayed_blocks( RTEMS_Malloc_Heap );
+ _Heap_Protection_free_all_delayed_blocks( &_Workspace_Area );
+ _Thread_Enable_dispatch();
+ _RTEMS_Unlock_allocator();
+ #endif
+}
+
void rtems_resource_snapshot_take(rtems_resource_snapshot *snapshot)
{
uint32_t *active = &snapshot->rtems_api.active_barriers;
size_t i;
+ free_all_delayed_blocks();
+
_Protected_heap_Get_information(RTEMS_Malloc_Heap, &snapshot->heap_info);
_Thread_Disable_dispatch();