OSDN Git Service

(none)
[hos/hos-v4a.git] / aplfw / library / container / fixmemheap / fixmemheap_alloc.c
1 /** 
2  *  Hyper Operating System  Application Framework
3  *
4  * @file  fixmemheap_alloc.c
5  * @brief %jp{固定サイズメモリヒープクラス}%en{fixed size memory heap class}
6  *
7  * Copyright (C) 2006-2008 by Project HOS
8  * http://sourceforge.jp/projects/hos/
9  */
10
11
12 #include <stdio.h>
13 #include "fixmemheap_local.h"
14
15
16
17 /** %jp{メモリの割り当て} */
18 void *FixMemHeap_Alloc(void *pMemHeap, MEMSIZE Size)
19 {
20         C_FIXMEMHEAP    *self;
21         void                    *pMem;
22         
23         /* upper cast */
24         self = (C_FIXMEMHEAP *)pMemHeap;
25         
26         /* %jp{ヒープの存在チェック} */
27         if ( self->pMemBase == NULL )
28         {
29                 return NULL;
30         }
31         
32         /* サイズチェック */     
33         if ( Size > self->BlkSize )
34         {
35                 return NULL;
36         }
37         
38         /* %jp{空きチェック} */
39         if ( self->ppFree == NULL )
40         {
41                 return NULL;            
42         }
43         
44         /* リスト繋ぎ変え */
45         pMem = self->ppFree;
46         self->ppFree = *self->ppFree;
47         
48         return pMem;
49 }
50
51 /* end of file */