Embedded Multicore Building Blocks V1.0.0
memory_allocation.h
1 /*
2  * Copyright (c) 2014-2017, Siemens AG. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are met:
6  *
7  * 1. Redistributions of source code must retain the above copyright notice,
8  * this list of conditions and the following disclaimer.
9  *
10  * 2. Redistributions in binary form must reproduce the above copyright notice,
11  * this list of conditions and the following disclaimer in the documentation
12  * and/or other materials provided with the distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
15  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
18  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
19  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
20  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
22  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
23  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
24  * POSSIBILITY OF SUCH DAMAGE.
25  */
26 
27 #ifndef EMBB_BASE_C_MEMORY_ALLOCATION_H_
28 #define EMBB_BASE_C_MEMORY_ALLOCATION_H_
29 
41 #include <stdlib.h>
42 #include <embb/base/c/internal/config.h>
43 
44 #ifdef __cplusplus
45 extern "C" {
46 #endif // __cplusplus
47 
65  void* embb_alloc(
66  size_t size
68  );
69 
84  void embb_free(
85  void* ptr
87  );
88 
122  void* embb_alloc_aligned(
123  size_t alignment,
125  size_t size
127  );
128 
154  size_t size
156  );
157 
175  void embb_free_aligned(
176  void* ptr
178  );
179 
194  size_t embb_get_bytes_allocated();
195 #ifdef __cplusplus
196 }
197 #endif // __cplusplus
198 
199 #endif // EMBB_BASE_C_MEMORY_ALLOCATION_H_
void embb_free(void *ptr)
Frees memory that has been allocated by embb_alloc() for some pointer ptr.
size_t embb_get_bytes_allocated()
Returns the total number of bytes currently allocated.
void * embb_alloc_aligned(size_t alignment, size_t size)
Allocates size bytes of memory with alignment alignment.
void * embb_alloc_cache_aligned(size_t size)
Allocates size bytes of cache-aligned memory.
void embb_free_aligned(void *ptr)
Frees memory that has been allocated by an aligned method for ptr.
void * embb_alloc(size_t size)
Allocates size bytes of memory.