mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-11-23 03:52:45 -05:00
Please don't try to compile them... they need to be fixed
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@118 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
8a42139091
commit
e0ae9dc008
4 changed files with 0 additions and 6 deletions
77
firmware/test/memory/memory-block.c
Normal file
77
firmware/test/memory/memory-block.c
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* $Id:
|
||||
*
|
||||
* Copyright (C) 2002 by Alan Korr
|
||||
*
|
||||
* All files in this archive are subject to the GNU General Public License.
|
||||
* See the file COPYING in the source tree root for full license agreement.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
#ifndef __LIBRARY_MEMORY_C__
|
||||
# error "This header file must be included ONLY from memory.c."
|
||||
#endif
|
||||
#ifndef __LIBRARY_MEMORY_BLOCK_H__
|
||||
# define __LIBRARY_MEMORY_BLOCK_H__
|
||||
|
||||
static struct memory_cache *free_block_cache[MEMORY_PAGE_MINIMAL_ORDER - 2];
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// MEMORY BLOCK :
|
||||
/////////////////
|
||||
//
|
||||
// - memory_allocate_block : allocate a power-of-2-sized block (or a page)
|
||||
// - memory_release_block : release a power-of-2-sized block (or a page)
|
||||
//
|
||||
|
||||
static inline void *allocate_small_block (int order)
|
||||
{
|
||||
struct memory_cache *cache = free_block_cache[order - 2];
|
||||
do
|
||||
{
|
||||
if (cache)
|
||||
return memory_cache_allocate (cache);
|
||||
}
|
||||
while ((free_block_cache[order] = cache = memory_create_cache (size,0,0)));
|
||||
return MEMORY_RETURN_FAILURE;
|
||||
}
|
||||
|
||||
void *memory_allocate_block (int order)
|
||||
{
|
||||
if (order < 2)
|
||||
order = 2;
|
||||
if (order < MEMORY_PAGE_MINIMAL_ORDER)
|
||||
return allocate_small_block (order);
|
||||
if (order < MEMORY_PAGE_MAXIMAL_ORDER)
|
||||
return memory_allocate_page (order);
|
||||
return MEMORY_RETURN_FAILURE;
|
||||
}
|
||||
|
||||
static inline int release_block (int order,void *address)
|
||||
{
|
||||
struct memory_cache *cache = free_block_cache[order - 2];
|
||||
if (cache)
|
||||
return memory_cache_release (cache,address);
|
||||
return MEMORY_RETURN_FAILURE;
|
||||
}
|
||||
|
||||
int memory_release_block (int order,void *address)
|
||||
{
|
||||
if (order < 2)
|
||||
order = 2;
|
||||
if (order < MEMORY_PAGE_MINIMAL_ORDER)
|
||||
return release_block (order);
|
||||
if (order < MEMORY_PAGE_MAXIMAL_ORDER)
|
||||
return memory_release_page (address);
|
||||
return MEMORY_RETURN_FAILURE;
|
||||
}
|
||||
|
||||
#endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue