Imported Upstream version 0.9.1
[platform/upstream/iotivity.git] / resource / csdk / ocmalloc / src / ocmalloc.c
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
22 //-----------------------------------------------------------------------------
23 // Includes
24 //-----------------------------------------------------------------------------
25 #include <stdlib.h>
26 #include "ocmalloc.h"
27
28 // Enable extra debug logging for malloc.  Comment out to disable
29 //#define ENABLE_MALLOC_DEBUG  (1)
30
31 #ifdef ENABLE_MALLOC_DEBUG
32     #include "logger.h"
33     #define TAG PCF("OCMalloc")
34 #endif
35
36 //-----------------------------------------------------------------------------
37 // Typedefs
38 //-----------------------------------------------------------------------------
39
40 //-----------------------------------------------------------------------------
41 // Private variables
42 //-----------------------------------------------------------------------------
43
44 //-----------------------------------------------------------------------------
45 // Macros
46 //-----------------------------------------------------------------------------
47
48 //-----------------------------------------------------------------------------
49 // Internal API function
50 //-----------------------------------------------------------------------------
51
52
53 //-----------------------------------------------------------------------------
54 // Private internal function prototypes
55 //-----------------------------------------------------------------------------
56
57
58 //-----------------------------------------------------------------------------
59 // Public APIs
60 //-----------------------------------------------------------------------------
61
62 void *OCMalloc(size_t size)
63 {
64     if (0 == size)
65     {
66         return NULL;
67     }
68
69 #ifdef ENABLE_MALLOC_DEBUG
70     void *ptr = 0;
71
72     ptr = malloc(size);
73     OC_LOG_V(INFO, TAG, "malloc: ptr=%p, size=%u", ptr, size);
74     return ptr;
75 #else
76     return malloc(size);
77 #endif
78 }
79
80 void *OCCalloc(size_t num, size_t size)
81 {
82     if(0 == size || 0 == num)
83     {
84         return NULL;
85     }
86
87 #ifdef ENABLE_MALLOC_DEBUG
88     void *ptr = 0;
89
90     ptr = calloc(num, size);
91     OC_LOG_V(INFO, TAG, "calloc: ptr=%p, num=%u, size=%u", ptr, num, size);
92     return ptr;
93 #else
94     return calloc(num, size);
95 #endif
96 }
97
98 void OCFree(void *ptr)
99 {
100 #ifdef ENABLE_MALLOC_DEBUG
101     OC_LOG_V(INFO, TAG, "free: ptr=%p", ptr);
102 #endif
103
104     free(ptr);
105 }
106