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