bool _Protected_heap_Get_information( Heap_Control *the_heap, Heap_Information_block *the_info ) { if ( !the_heap ) return false; if ( !the_info ) return false; _RTEMS_Lock_allocator(); _Heap_Get_information( the_heap, the_info ); _RTEMS_Unlock_allocator(); return true; }
static void print_info(void) { Heap_Information_block info; _Heap_Get_information(&task_stack_heap, &info); printf( "used blocks = %" PRIuPTR ", " "largest used block = %" PRIuPTR ", " "used space = %" PRIuPTR "\n" "free blocks = %" PRIuPTR ", " "largest free block = %" PRIuPTR ", " "free space = %" PRIuPTR "\n", info.Used.number, info.Used.largest, info.Used.total, info.Free.number, info.Free.largest, info.Free.total ); }
rtems_status_code rtems_region_get_information( rtems_id id, Heap_Information_block *the_info ) { Objects_Locations location; rtems_status_code return_status; register Region_Control *the_region; if ( !the_info ) return RTEMS_INVALID_ADDRESS; _RTEMS_Lock_allocator(); the_region = _Region_Get( id, &location ); switch ( location ) { case OBJECTS_LOCAL: _Heap_Get_information( &the_region->Memory, the_info ); return_status = RTEMS_SUCCESSFUL; break; #if defined(RTEMS_MULTIPROCESSING) case OBJECTS_REMOTE: /* this error cannot be returned */ break; #endif case OBJECTS_ERROR: default: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); return return_status; }
static void get_heap_info(Heap_Control *heap, Heap_Information_block *info) { _Heap_Get_information(heap, info); memset(&info->Stats, 0, sizeof(info->Stats)); }