RTEMS
libcsupport.h
Go to the documentation of this file.
1 
10 /*
11  * COPYRIGHT (c) 1989-2011.
12  * On-Line Applications Research Corporation (OAR).
13  *
14  * The license and distribution terms for this file may be
15  * found in the file LICENSE in this distribution or at
16  * http://www.rtems.org/license/LICENSE.
17  */
18 
19 #ifndef _RTEMS_RTEMS_LIBCSUPPORT_H
20 #define _RTEMS_RTEMS_LIBCSUPPORT_H
21 
22 #include <sys/types.h>
23 #include <stdint.h>
24 
25 #include <rtems/score/heap.h>
26 #include <rtems/rtems/tasks.h>
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
42 extern void malloc_dump(void);
43 
47 extern bool malloc_walk(int source, bool printf_enabled);
48 
55 
62 
68 extern size_t malloc_free_space(void);
69 
75 extern int malloc_info(Heap_Information_block *the_info);
76 
77 /*
78  * Prototypes required to install newlib reentrancy user extension
79  */
80 bool newlib_create_hook(
81  rtems_tcb *current_task,
82  rtems_tcb *creating_task
83 );
84 
85 void newlib_terminate_hook(
86  rtems_tcb *current_task
87 );
88 
89 #define RTEMS_NEWLIB_EXTENSION \
90 { \
91  newlib_create_hook, /* rtems_task_create */ \
92  0, /* rtems_task_start */ \
93  0, /* rtems_task_restart */ \
94  0, /* rtems_task_delete */ \
95  0, /* task_switch */ \
96  0, /* task_begin */ \
97  0, /* task_exitted */ \
98  0, /* fatal */ \
99  newlib_terminate_hook /* thread terminate */ \
100 }
101 
102 typedef struct {
103  uint32_t active_barriers;
104  uint32_t active_extensions;
105  uint32_t active_message_queues;
106  uint32_t active_partitions;
107  uint32_t active_periods;
108  uint32_t active_ports;
109  uint32_t active_regions;
110  uint32_t active_semaphores;
111  uint32_t active_tasks;
112  uint32_t active_timers;
114 
115 typedef struct {
116  uint32_t active_message_queues;
117  uint32_t active_semaphores;
118  uint32_t active_threads;
119  uint32_t active_timers;
121 
122 typedef struct {
123  Heap_Information_block workspace_info;
124  Heap_Information_block heap_info;
125  uint32_t active_posix_key_value_pairs;
126  uint32_t active_posix_keys;
127  rtems_resource_rtems_api rtems_api;
128  rtems_resource_posix_api posix_api;
129  int open_files;
131 
157 
170  const rtems_resource_snapshot *a,
171  const rtems_resource_snapshot *b
172 );
173 
187 
190 #ifdef __cplusplus
191 }
192 #endif
193 
194 #endif
195 /* end of include file */
Information block returned by _Heap_Get_information().
Definition: heapinfo.h:145
void malloc_set_heap_pointer(Heap_Control *new_heap)
Set malloc heap pointer.
bool malloc_walk(int source, bool printf_enabled)
Malloc walk.
size_t malloc_free_space(void)
Get free malloc information.
Heap Handler API.
Heap_Control * malloc_get_heap_pointer(void)
Get malloc heap pointer.
void rtems_resource_snapshot_take(rtems_resource_snapshot *snapshot)
Tasks a snapshot of the resource usage of the system.
This header file defines the main parts of the Tasks Manager API.
Control block used to manage a heap.
Definition: heap.h:318
int malloc_info(Heap_Information_block *the_info)
Get malloc status information.
bool rtems_resource_snapshot_equal(const rtems_resource_snapshot *a, const rtems_resource_snapshot *b)
Compares two resource snapshots for equality.
bool rtems_resource_snapshot_check(const rtems_resource_snapshot *snapshot)
Takes a new resource snapshot and checks that it is equal to the given resource snapshot.