diff options
Diffstat (limited to 'cpukit/libcsupport/src/resource_snapshot.c')
-rw-r--r-- | cpukit/libcsupport/src/resource_snapshot.c | 14 |
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(); |