blob: 82c4ed2672eff527a73d1434af3f6dc0196a6330 [file] [log] [blame]
/*
* Copyright (c) 2015-2017, Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
//!
//! \file mhw_memory_pool.h
//! \brief This modules implements simple memory pool infrastructure for MHW
//!
#ifndef __MHW_MEMORY_POOL_H__
#define __MHW_MEMORY_POOL_H__
#include "mos_os.h"
typedef struct _MHW_MEMORY_POOL_ENTRY *PMHW_MEMORY_POOL_ENTRY;
typedef struct MHW_MEMORY_POOL *PMHW_MEMORY_POOL;
struct MHW_MEMORY_POOL
{
PMHW_MEMORY_POOL_ENTRY m_pFirst; //!< First pool
PMHW_MEMORY_POOL_ENTRY m_pLast; //!< Last pool
uint32_t m_dwCount; //!< Number of pools
uint32_t m_dwSize; //!< Total memory in all pool objects
uint32_t m_dwObjSize; //!< Object size
uint32_t m_dwObjAlignment; //!< Object alignment
uint32_t m_dwObjCount; //!< Total number of objects in all pools
//!
//! \brief Constructor of MHW_MEMORY_POOL
//! \details Constructor of MHW_BLOCK_MANAGER which initializes all members
//! \param [in] dwObjSize
//! Size of object
//! \param [in] dwObjAlignment
//! Alignment of object
//!
MHW_MEMORY_POOL(uint32_t dwObjSize, uint32_t dwObjAlignment);
//!
//! \brief Destructor of MHW_MEMORY_POOL
//! \details Destructor of MHW_MEMORY_POOL which releases all the elements in the list
//!
~MHW_MEMORY_POOL();
//!
//! \brief Allocate objects
//! \details Allocate objects and insert them into list
//! \param [in] dwObjCount
//! Count of objects need to be allocated
//!
void *Allocate(uint32_t dwObjCount);
} ;
#endif // __MHW_MEMORY_POOL_H__