/[lwip]/lwip/src/core/mem.c
ViewVC logotype

Diff of /lwip/src/core/mem.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.11.2.2 by likewise, Wed May 14 14:38:28 2003 UTC revision 1.11.2.3 by likewise, Wed Jun 4 10:18:38 2003 UTC
# Line 1  Line 1 
1    /** @file
2     *
3     * Dynamic memory manager
4     *
5     */
6    
7  /*  /*
8   * Copyright (c) 2001-2003 Swedish Institute of Computer Science.   * Copyright (c) 2001-2003 Swedish Institute of Computer Science.
9   * All rights reserved.   * All rights reserved.
# Line 30  Line 36 
36   *   *
37   */   */
38    
 /*-----------------------------------------------------------------------------------*/  
 /* mem.c  
  *  
  * Memory manager.  
  *  
  */  
 /*-----------------------------------------------------------------------------------*/  
39    
40  #include "lwip/arch.h"  #include "lwip/arch.h"
41  #include "lwip/opt.h"  #include "lwip/opt.h"
# Line 74  static struct mem *lfree;   /* pointer t Line 73  static struct mem *lfree;   /* pointer t
73    
74  static sys_sem_t mem_sem;  static sys_sem_t mem_sem;
75    
 /*-----------------------------------------------------------------------------------*/  
76  static void  static void
77  plug_holes(struct mem *mem)  plug_holes(struct mem *mem)
78  {  {
# Line 108  plug_holes(struct mem *mem) Line 106  plug_holes(struct mem *mem)
106    }    }
107    
108  }  }
 /*-----------------------------------------------------------------------------------*/  
109  void  void
110  mem_init(void)  mem_init(void)
111  {  {
# Line 132  mem_init(void) Line 129  mem_init(void)
129    lwip_stats.mem.avail = MEM_SIZE;    lwip_stats.mem.avail = MEM_SIZE;
130  #endif /* MEM_STATS */  #endif /* MEM_STATS */
131  }  }
 /*-----------------------------------------------------------------------------------*/  
132  void  void
133  mem_free(void *rmem)  mem_free(void *rmem)
134  {  {
# Line 145  mem_free(void *rmem) Line 141  mem_free(void *rmem)
141    sys_sem_wait(mem_sem);    sys_sem_wait(mem_sem);
142    
143    LWIP_ASSERT("mem_free: legal memory", (u8_t *)rmem >= (u8_t *)ram &&    LWIP_ASSERT("mem_free: legal memory", (u8_t *)rmem >= (u8_t *)ram &&
144           (u8_t *)rmem < (u8_t *)ram_end);      (u8_t *)rmem < (u8_t *)ram_end);
145        
146        
147    if ((u8_t *)rmem < (u8_t *)ram || (u8_t *)rmem >= (u8_t *)ram_end) {    if ((u8_t *)rmem < (u8_t *)ram || (u8_t *)rmem >= (u8_t *)ram_end) {
# Line 173  mem_free(void *rmem) Line 169  mem_free(void *rmem)
169    plug_holes(mem);    plug_holes(mem);
170    sys_sem_signal(mem_sem);    sys_sem_signal(mem_sem);
171  }  }
 /*-----------------------------------------------------------------------------------*/  
172  void *  void *
173  mem_reallocm(void *rmem, mem_size_t newsize)  mem_reallocm(void *rmem, mem_size_t newsize)
174  {  {
# Line 238  mem_realloc(void *rmem, mem_size_t newsi Line 233  mem_realloc(void *rmem, mem_size_t newsi
233    sys_sem_signal(mem_sem);      sys_sem_signal(mem_sem);  
234    return rmem;    return rmem;
235  }  }
 /*-----------------------------------------------------------------------------------*/  
236  void *  void *
237  mem_malloc(mem_size_t size)  mem_malloc(mem_size_t size)
238  {  {
# Line 261  mem_malloc(mem_size_t size) Line 255  mem_malloc(mem_size_t size)
255        
256    sys_sem_wait(mem_sem);    sys_sem_wait(mem_sem);
257    
258    for(ptr = (u8_t *)lfree - ram; ptr < MEM_SIZE; ptr = ((struct mem *)&ram[ptr])->next) {    for (ptr = (u8_t *)lfree - ram; ptr < MEM_SIZE; ptr = ((struct mem *)&ram[ptr])->next) {
259      mem = (struct mem *)&ram[ptr];      mem = (struct mem *)&ram[ptr];
260      if (!mem->used &&      if (!mem->used &&
261         mem->next - (ptr + SIZEOF_STRUCT_MEM) >= size + SIZEOF_STRUCT_MEM) {         mem->next - (ptr + SIZEOF_STRUCT_MEM) >= size + SIZEOF_STRUCT_MEM) {
# Line 309  mem_malloc(mem_size_t size) Line 303  mem_malloc(mem_size_t size)
303    sys_sem_signal(mem_sem);    sys_sem_signal(mem_sem);
304    return NULL;    return NULL;
305  }  }
 /*-----------------------------------------------------------------------------------*/  

Legend:
Removed from v.1.11.2.2  
changed lines
  Added in v.1.11.2.3

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26