Imported Upstream version 0.9.1
[platform/upstream/iotivity.git] / resource / csdk / ocmalloc / include / ocmalloc.h
1 //******************************************************************
2 //
3 // Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved.
4 //
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
6 //
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
10 //
11 //      http://www.apache.org/licenses/LICENSE-2.0
12 //
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
18 //
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
20
21 #ifndef OCMALLOC_H_
22 #define OCMALLOC_H_
23
24 // The purpose of this module is to allow custom dynamic memory allocation
25 // code to easily be added to the TB Stack by redefining the OCMalloc and
26 // OCFree functions.  Examples of when this might be needed are on TB
27 // platforms that do not support dynamic allocation or if a memory pool
28 // needs to be added.
29 //
30 // Note that these functions are intended to be used ONLY within the TB
31 // stack and NOT by the application code.  The application should be
32 // responsible for its own dynamic allocation.
33
34 //-----------------------------------------------------------------------------
35 // Includes
36 //-----------------------------------------------------------------------------
37 #include <stdio.h>
38
39 #ifdef __cplusplus
40 extern "C" {
41 #endif // __cplusplus
42
43 //-----------------------------------------------------------------------------
44 // Defines
45 //-----------------------------------------------------------------------------
46
47
48 //-----------------------------------------------------------------------------
49 // Typedefs
50 //-----------------------------------------------------------------------------
51
52
53 //-----------------------------------------------------------------------------
54 // Function prototypes
55 //-----------------------------------------------------------------------------
56
57 /**
58  * Allocates a block of size bytes, returning a pointer to the beginning of
59  * the allocated block.
60  *
61  * @param size - Size of the memory block in bytes, where size > 0
62  *
63  * @return
64  *     on success, a pointer to the allocated memory block
65  *     on failure, a null pointer is returned
66  */
67 void *OCMalloc(size_t size);
68
69 /**
70  * Allocates a block of memory for an array of num elements, each of them
71  * size bytes long and initializes all its bits to zero.
72  *
73  * @param num - The number of elements
74  * @param size - Size of the element type in bytes, where size > 0
75  *
76  * @return
77  *     on success, a pointer to the allocated memory block
78  *     on failure, a null pointer is returned
79  */
80 void *OCCalloc(size_t num, size_t size);
81
82 /**
83  * Deallocate a block of memory previously allocated by a call to OCMalloc
84  *
85  * @param ptr - Pointer to block of memory previously allocated by OCMalloc.
86  *              If ptr is a null pointer, the function does nothing.
87  */
88 void OCFree(void *ptr);
89
90 #ifdef __cplusplus
91 }
92 #endif // __cplusplus
93
94 #endif /* OCMALLOC_H_ */