RTEMS CPU Kit with SuperCore  4.11.3
malloc.h
Go to the documentation of this file.
1 
7 /*
8  * COPYRIGHT (c) 1989-2011.
9  * On-Line Applications Research Corporation (OAR).
10  *
11  * The license and distribution terms for this file may in
12  * the file LICENSE in this distribution or at
13  * http://www.rtems.org/license/LICENSE.
14  */
15 
16 #ifndef _RTEMS_MALLOC_H
17 #define _RTEMS_MALLOC_H
18 
19 #include <rtems.h>
20 #include <rtems/bspIo.h>
21 #include <rtems/libcsupport.h> /* for malloc_walk() */
22 
23 #include <stdint.h>
24 
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28 
44 
45 void RTEMS_Malloc_Initialize(
46  const Heap_Area *areas,
47  size_t area_count,
49 );
50 
51 extern ptrdiff_t RTEMS_Malloc_Sbrk_amount;
52 
53 static inline void rtems_heap_set_sbrk_amount( ptrdiff_t sbrk_amount )
54 {
55  RTEMS_Malloc_Sbrk_amount = sbrk_amount;
56 }
57 
58 typedef void *(*rtems_heap_extend_handler)(
59  Heap_Control *heap,
60  size_t alloc_size
61 );
62 
67  Heap_Control *heap,
68  size_t alloc_size
69 );
70 
71 void *rtems_heap_null_extend(
72  Heap_Control *heap,
73  size_t alloc_size
74 );
75 
76 extern const rtems_heap_extend_handler rtems_malloc_extend_handler;
77 
78 /*
79  * Malloc Plugin to Dirty Memory at Allocation Time
80  */
81 typedef void (*rtems_malloc_dirtier_t)(void *, size_t);
82 extern rtems_malloc_dirtier_t rtems_malloc_dirty_helper;
83 
92  void *start,
93  size_t size
94 );
95 
111 int rtems_memalign(
112  void **pointer,
113  size_t alignment,
114  size_t size
115 );
116 
138  size_t size,
139  uintptr_t alignment,
140  uintptr_t boundary
141 );
142 
157  void *area_begin,
158  uintptr_t area_size
159 );
160 
171  const uintptr_t *block_sizes,
172  size_t block_count
173 );
174 
185  uintptr_t *allocatable_size
186 );
187 
195 void rtems_heap_greedy_free( void *opaque );
196 
197 #ifdef __cplusplus
198 }
199 #endif
200 
201 #endif
uintptr_t(* Heap_Initialization_or_extend_handler)(Heap_Control *heap, void *area_begin, uintptr_t area_size, uintptr_t page_size_or_unused)
Heap initialization and extend handler type.
Definition: heap.h:405
Heap_Control * RTEMS_Malloc_Heap
C program heap control.
Heap area structure for table based heap initialization and extension.
Definition: heap.h:391
void rtems_malloc_dirty_memory(void *start, size_t size)
Dirty Memory Function.
Definition: malloc_dirtier.c:28
void * rtems_heap_greedy_allocate(const uintptr_t *block_sizes, size_t block_count)
Greedy allocate that empties the heap.
Definition: rtems_heap_greedy.c:28
void rtems_heap_greedy_free(void *opaque)
Frees space of a greedy allocation.
Definition: rtems_heap_greedy.c:58
rtems_status_code
Classic API Status.
Definition: status.h:46
Control block used to manage a heap.
Definition: heap.h:342
void * rtems_heap_allocate_aligned_with_boundary(size_t size, uintptr_t alignment, uintptr_t boundary)
Allocates a memory area of size size bytes from the heap.
Standard C Library Support.
Interface to Kernel Print Methods.
void * rtems_heap_greedy_allocate_all_except_largest(uintptr_t *allocatable_size)
Greedy allocate all blocks except the largest free block.
Definition: rtems_heap_greedy.c:42
int rtems_memalign(void **pointer, size_t alignment, size_t size)
RTEMS Variation on Aligned Memory Allocation.
rtems_status_code rtems_heap_extend(void *area_begin, uintptr_t area_size)
Extends the memory available for the heap using the memory area starting at area_begin of size area_s...
void * rtems_heap_extend_via_sbrk(Heap_Control *heap, size_t alloc_size)
RTEMS Extend Heap via Sbrk.
Definition: rtems_heap_extend_via_sbrk.c:34