19584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi/* 29584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * Copyright (C) 2011 The Android Open Source Project 39584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * 49584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * Licensed under the Apache License, Version 2.0 (the "License"); 59584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * you may not use this file except in compliance with the License. 69584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * You may obtain a copy of the License at 79584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * 89584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * http://www.apache.org/licenses/LICENSE-2.0 99584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * 109584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * Unless required by applicable law or agreed to in writing, software 119584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * distributed under the License is distributed on an "AS IS" BASIS, 129584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * See the License for the specific language governing permissions and 149584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * limitations under the License. 159584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi */ 169584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi/** 179584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi************************************************************************* 189584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * @file M4PSW_MemoryInterface.c 199584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * @brief Memory Interface 209584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * @note Implementation of the osal memory functions 219584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi ************************************************************************* 229584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi*/ 239584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi 249584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi#include <stdlib.h> 259584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi#include <memory.h> 269584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi 279584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi#include <time.h> 289584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi#include "M4OSA_Memory.h" 299584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi#ifndef M4VPS_ADVANCED_MEMORY_MANAGER 309584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi/** 319584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi ************************************************************************ 322ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu * @fn M4OSA_MemAddr32 M4OSA_32bitAlignedMalloc(M4OSA_UInt32 size, 332ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu * M4OSA_CoreID coreID, 342ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu * M4OSA_Char* string) 352ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu * @brief this function allocates a memory block (at least 32 bits aligned) 362ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu * @note 372ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu * @param size (IN): size of allocated block in bytes 382ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu * @param coreID (IN): identification of the caller component 392ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu * @param string (IN): description of the allocated block (null terminated) 402ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu * @return address of the allocated block, M4OSA_NULL if no memory available 412ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu ************************************************************************ 422ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu*/ 432ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu 442ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam PallapothuM4OSA_MemAddr32 M4OSA_32bitAlignedMalloc(M4OSA_UInt32 size, 452ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu M4OSA_CoreID coreID, 462ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu M4OSA_Char* string) 472ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu{ 482ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu M4OSA_MemAddr32 Address = M4OSA_NULL; 492ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu 502ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu /** 512ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu * If size is 0, malloc on WIN OS allocates a zero-length item in 522ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu * the heap and returns a valid pointer to that item. 532ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu * On other platforms, malloc could returns an invalid pointer 542ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu * So, DON'T allocate memory of 0 byte */ 552ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu if (size == 0) 562ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu { 572ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu return Address; 582ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu } 592ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu 602ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu if (size%4 != 0) 612ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu { 622ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu size = size + 4 - (size%4); 632ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu } 642ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu 652ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu Address = (M4OSA_MemAddr32) malloc(size); 662ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu 672ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu return Address; 682ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu} 692ee9722574bb93eaa3f4499faf9c82fcf63f8da3Shyam Pallapothu 709584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi#endif 719584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi 72