• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2010, Texas Instruments Incorporated
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * *  Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  *
12  * *  Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  *
16  * *  Neither the name of Texas Instruments Incorporated nor the names of
17  *    its contributors may be used to endorse or promote products derived
18  *    from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 
33 /*
34 *   @file  timm_osal_memory.c
35 *   This file contains methods that provides the functionality
36 *   for allocating/deallocating memory.
37 *
38 *  @path \
39 *
40 */
41 /* -------------------------------------------------------------------------- */
42 /* =========================================================================
43  *!
44  *! Revision History
45  *! ===================================
46  *!23-Oct-2008 Maiya ShreeHarsha: Linux specific changes
47  *!0.1: Created the first draft version, ksrini@ti.com
48  * ========================================================================= */
49 
50 /******************************************************************************
51 * Includes
52 ******************************************************************************/
53 
54 #include <string.h>
55 #include <malloc.h>
56 
57 #ifdef __KERNEL__
58 #include <linux/types.h>
59 #else
60 #include <stdint.h>
61 #endif
62 
63 
64 #include "timm_osal_types.h"
65 #include "timm_osal_trace.h"
66 #include "timm_osal_error.h"
67 #include "timm_osal_memory.h"
68 
69 
70 
71 static TIMM_OSAL_U32 gMallocCounter = 0;
72 
73 /******************************************************************************
74 * Function Prototypes
75 ******************************************************************************/
76 
77 /* ========================================================================== */
78 /**
79 * @fn TIMM_OSAL_createMemoryPool function
80 *
81 * @see
82 */
83 /* ========================================================================== */
TIMM_OSAL_CreateMemoryPool(void)84 TIMM_OSAL_ERRORTYPE TIMM_OSAL_CreateMemoryPool(void)
85 {
86 	TIMM_OSAL_ERRORTYPE bReturnStatus = TIMM_OSAL_ERR_NONE;
87 	return bReturnStatus;
88 }
89 
90 
91 
92 /* ========================================================================== */
93 /**
94 * @fn TIMM_OSAL_DeleteMemoryPool function
95 *
96 * @see
97 */
98 /* ========================================================================== */
99 
TIMM_OSAL_DeleteMemoryPool(void)100 TIMM_OSAL_ERRORTYPE TIMM_OSAL_DeleteMemoryPool(void)
101 {
102 	TIMM_OSAL_ERRORTYPE bReturnStatus = TIMM_OSAL_ERR_NONE;
103 	return bReturnStatus;
104 
105 }
106 
107 
108 
109 /* ========================================================================== */
110 /**
111 * @fn TIMM_OSAL_Malloc function
112 *
113 * @see
114 */
115 /* ========================================================================== */
TIMM_OSAL_Malloc(TIMM_OSAL_U32 size,TIMM_OSAL_BOOL bBlockContiguous,TIMM_OSAL_U32 unBlockAlignment,TIMMOSAL_MEM_SEGMENTID tMemSegId)116 TIMM_OSAL_PTR TIMM_OSAL_Malloc(TIMM_OSAL_U32 size,
117     TIMM_OSAL_BOOL bBlockContiguous,
118     TIMM_OSAL_U32 unBlockAlignment, TIMMOSAL_MEM_SEGMENTID tMemSegId)
119 {
120 
121 	TIMM_OSAL_PTR pData = TIMM_OSAL_NULL;
122 
123 #ifdef HAVE_MEMALIGN
124 	if (0 == unBlockAlignment)
125 	{
126 		pData = malloc((size_t) size);
127 	} else
128 	{
129 		pData = memalign((size_t) unBlockAlignment, (size_t) size);
130 	}
131 #else
132 	if (0 != unBlockAlignment)
133 	{
134 		TIMM_OSAL_Warning
135 		    ("Memory Allocation:Not done for specified nBufferAlignment. Alignment of 0 will be used");
136 
137 	}
138 	pData = malloc((size_t) size);	/*size_t is long long */
139 #endif
140 	if (TIMM_OSAL_NULL == pData)
141 	{
142 		TIMM_OSAL_Error("Malloc failed!!!");
143 	} else
144 	{
145 		/* Memory Allocation was successfull */
146 		gMallocCounter++;
147 	}
148 
149 
150 	return pData;
151 }
152 
153 /* ========================================================================== */
154 /**
155 * @fn TIMM_OSAL_Free function ....
156 *
157 * @see
158 */
159 /* ========================================================================== */
160 
TIMM_OSAL_Free(TIMM_OSAL_PTR pData)161 void TIMM_OSAL_Free(TIMM_OSAL_PTR pData)
162 {
163 	if (TIMM_OSAL_NULL == pData)
164 	{
165 		/*TIMM_OSAL_Warning("TIMM_OSAL_Free called on NULL pointer"); */
166 		goto EXIT;
167 	}
168 
169 	free(pData);
170 	pData = NULL;
171 	gMallocCounter--;
172       EXIT:
173 	return;
174 }
175 
176 /* ========================================================================== */
177 /**
178 * @fn TIMM_OSAL_Memset function ....
179 *
180 * @see
181 */
182 /* ========================================================================== */
183 
TIMM_OSAL_Memset(TIMM_OSAL_PTR pBuffer,TIMM_OSAL_U8 uValue,TIMM_OSAL_U32 uSize)184 TIMM_OSAL_ERRORTYPE TIMM_OSAL_Memset(TIMM_OSAL_PTR pBuffer,
185     TIMM_OSAL_U8 uValue, TIMM_OSAL_U32 uSize)
186 {
187 	TIMM_OSAL_ERRORTYPE bReturnStatus = TIMM_OSAL_ERR_UNKNOWN;
188 
189 	memset((void *)pBuffer, (int)uValue, (size_t) uSize);
190 	bReturnStatus = TIMM_OSAL_ERR_NONE;
191 
192 	return bReturnStatus;
193 }
194 
195 /* ========================================================================== */
196 /**
197 * @fn TIMM_OSAL_Memcmp function ....
198 *
199 * @see
200 */
201 /* ========================================================================== */
202 
TIMM_OSAL_Memcmp(TIMM_OSAL_PTR pBuffer1,TIMM_OSAL_PTR pBuffer2,TIMM_OSAL_U32 uSize)203 TIMM_OSAL_S32 TIMM_OSAL_Memcmp(TIMM_OSAL_PTR pBuffer1, TIMM_OSAL_PTR pBuffer2,
204     TIMM_OSAL_U32 uSize)
205 {
206 	TIMM_OSAL_S32 result = memcmp(pBuffer1, pBuffer2, uSize);
207 
208 	if (result > 0)
209 	{
210 		return 1;
211 	} else if (result < 0)
212 	{
213 		return -1;
214 	}
215 
216 	return 0;
217 }
218 
219 /* ========================================================================== */
220 /**
221 * @fn TIMM_OSAL_Memcpy function ....
222 *
223 * @see
224 */
225 /* ========================================================================== */
226 
TIMM_OSAL_Memcpy(TIMM_OSAL_PTR pBufDst,TIMM_OSAL_PTR pBufSrc,TIMM_OSAL_U32 uSize)227 TIMM_OSAL_ERRORTYPE TIMM_OSAL_Memcpy(TIMM_OSAL_PTR pBufDst,
228     TIMM_OSAL_PTR pBufSrc, TIMM_OSAL_U32 uSize)
229 {
230 	TIMM_OSAL_ERRORTYPE bReturnStatus = TIMM_OSAL_ERR_UNKNOWN;
231 
232 	memcpy(pBufDst, pBufSrc, uSize);
233 	bReturnStatus = TIMM_OSAL_ERR_NONE;
234 
235 	return bReturnStatus;
236 }
237 
238 /* ========================================================================== */
239 /**
240 * @fn TIMM_OSAL_GetMemCounter function ....
241 *
242 * @see
243 */
244 /* ========================================================================== */
245 
TIMM_OSAL_GetMemCounter(void)246 TIMM_OSAL_U32 TIMM_OSAL_GetMemCounter(void)
247 {
248 
249 	return gMallocCounter;
250 }
251