Home | History | Annotate | Download | only in src
      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 (at) 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 /* ========================================================================== */
     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 
    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 /* ========================================================================== */
    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 
    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 
    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 
    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 
    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 
    246 TIMM_OSAL_U32 TIMM_OSAL_GetMemCounter(void)
    247 {
    248 
    249 	return gMallocCounter;
    250 }
    251