RTEMS
protectedheap.h
Go to the documentation of this file.
1 
9 /*
10  * COPYRIGHT (c) 1989-2007.
11  * On-Line Applications Research Corporation (OAR).
12  *
13  * The license and distribution terms for this file may be
14  * found in the file LICENSE in this distribution or at
15  * http://www.rtems.org/license/LICENSE.
16  */
17 
18 #ifndef _RTEMS_SCORE_PROTECTED_HEAP_H
19 #define _RTEMS_SCORE_PROTECTED_HEAP_H
20 
21 #include <rtems/score/heapimpl.h>
22 #include <rtems/score/apimutex.h>
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
49  Heap_Control *heap,
50  void *area_begin,
51  uintptr_t area_size,
52  uintptr_t page_size
53 )
54 {
55  return _Heap_Initialize( heap, area_begin, area_size, page_size );
56 }
57 
69  Heap_Control *heap,
70  void *area_begin,
71  uintptr_t area_size
72 );
73 
94  Heap_Control *heap,
95  uintptr_t size,
96  uintptr_t alignment,
97  uintptr_t boundary
98 );
99 
115  Heap_Control *heap,
116  uintptr_t size,
117  uintptr_t alignment
118 )
119 {
120  return
121  _Protected_heap_Allocate_aligned_with_boundary( heap, size, alignment, 0 );
122 }
123 
138  Heap_Control *heap,
139  uintptr_t size
140 )
141 {
142  return _Protected_heap_Allocate_aligned_with_boundary( heap, size, 0, 0 );
143 }
144 
164  Heap_Control *heap,
165  void *addr,
166  uintptr_t *size
167 );
168 
193  Heap_Control *heap,
194  void *addr,
195  uintptr_t size
196 );
197 
210 bool _Protected_heap_Free( Heap_Control *heap, void *addr );
211 
225 bool _Protected_heap_Walk( Heap_Control *heap, int source, bool dump );
226 
238  Heap_Control *heap,
239  Heap_Block_visitor visitor,
240  void *visitor_arg
241 );
242 
252  Heap_Control *heap,
254 );
255 
266  Heap_Control *heap,
267  Heap_Information *info
268 );
269 
279 uintptr_t _Protected_heap_Get_size( Heap_Control *heap );
280 
283 #ifdef __cplusplus
284 }
285 #endif
286 
287 #endif
288 /* end of include file */
static __inline__ uintptr_t _Protected_heap_Initialize(Heap_Control *heap, void *area_begin, uintptr_t area_size, uintptr_t page_size)
Initializes the protected heap.
Definition: protectedheap.h:48
void _Protected_heap_Iterate(Heap_Control *heap, Heap_Block_visitor visitor, void *visitor_arg)
Iterates over all blocks of the heap.
bool _Protected_heap_Get_free_information(Heap_Control *heap, Heap_Information *info)
Returns information about free blocks for the heap.
Heap Handler Implementation.
Information block returned by _Heap_Get_information().
Definition: heapinfo.h:145
bool _Protected_heap_Resize_block(Heap_Control *heap, void *addr, uintptr_t size)
Resizes the block of the allocated memory area.
bool _Protected_heap_Get_information(Heap_Control *heap, Heap_Information_block *info)
Returns information about used and free blocks for the heap.
static __inline__ void * _Protected_heap_Allocate_aligned(Heap_Control *heap, uintptr_t size, uintptr_t alignment)
Allocates an aligned memory area.
bool _Protected_heap_Walk(Heap_Control *heap, int source, bool dump)
Verifies the integrity of the heap.
API Mutex Handler API.
Control block used to manage a heap.
Definition: heap.h:318
uintptr_t _Heap_Initialize(Heap_Control *heap, void *area_begin, uintptr_t area_size, uintptr_t page_size)
Initializes the heap control block.
Definition: heap.c:207
static __inline__ void * _Protected_heap_Allocate(Heap_Control *heap, uintptr_t size)
Allocates a memory area.
Information about blocks.
Definition: heapinfo.h:125
bool _Protected_heap_Get_block_size(Heap_Control *heap, void *addr, uintptr_t *size)
Returns the size of the allocatable memory area.
bool _Protected_heap_Extend(Heap_Control *heap, void *area_begin, uintptr_t area_size)
Extends the protected heap.
void * _Protected_heap_Allocate_aligned_with_boundary(Heap_Control *heap, uintptr_t size, uintptr_t alignment, uintptr_t boundary)
Allocates an aligned memory area with boundary constraint for the protected heap. ...
bool(* Heap_Block_visitor)(const Heap_Block *block, uintptr_t block_size, bool block_is_used, void *visitor_arg)
Heap block visitor.
Definition: heapimpl.h:204
#define RTEMS_INLINE_ROUTINE
Gives a hint to the compiler in a function declaration to inline this function.
Definition: basedefs.h:683
uintptr_t _Protected_heap_Get_size(Heap_Control *heap)
Returns the size of the allocatable area in bytes.
bool _Protected_heap_Free(Heap_Control *heap, void *addr)
Frees the allocated memory area.