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

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

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

revision 1.17 by kieranm, Tue Jun 10 10:45:29 2003 UTC revision 1.18 by marcbou, Fri Jun 27 20:46:11 2003 UTC
# Line 182  memp_malloc(memp_t type) Line 182  memp_malloc(memp_t type)
182  {  {
183    struct memp *memp;    struct memp *memp;
184    void *mem;    void *mem;
185    #ifdef SYS_LIGHTWEIGHT_PROT
186      SYS_ARCH_DECL_PROTECT(old_level);
187    #endif
188    
189    LWIP_ASSERT("memp_malloc: type < MEMP_MAX", type < MEMP_MAX);    LWIP_ASSERT("memp_malloc: type < MEMP_MAX", type < MEMP_MAX);
190    
191    #ifdef SYS_LIGHTWEIGHT_PROT
192      SYS_ARCH_PROTECT(old_level);
193    #else /* SYS_LIGHTWEIGHT_PROT */  
194      sys_sem_wait(mutex);
195    #endif /* SYS_LIGHTWEIGHT_PROT */  
196    
197    memp = memp_tab[type];    memp = memp_tab[type];
198        
199    if (memp != NULL) {        if (memp != NULL) {    
# Line 196  memp_malloc(memp_t type) Line 205  memp_malloc(memp_t type)
205        lwip_stats.memp[type].max = lwip_stats.memp[type].used;        lwip_stats.memp[type].max = lwip_stats.memp[type].used;
206      }      }
207  #endif /* MEMP_STATS */  #endif /* MEMP_STATS */
208    #ifdef SYS_LIGHTWEIGHT_PROT
209        SYS_ARCH_UNPROTECT(old_level);
210    #else /* SYS_LIGHTWEIGHT_PROT */
211        sys_sem_signal(mutex);
212    #endif /* SYS_LIGHTWEIGHT_PROT */  
213      LWIP_ASSERT("memp_malloc: memp properly aligned",      LWIP_ASSERT("memp_malloc: memp properly aligned",
214       ((u32_t)MEM_ALIGN((u8_t *)memp + sizeof(struct memp)) % MEM_ALIGNMENT) == 0);       ((u32_t)MEM_ALIGN((u8_t *)memp + sizeof(struct memp)) % MEM_ALIGNMENT) == 0);
215    
# Line 208  memp_malloc(memp_t type) Line 222  memp_malloc(memp_t type)
222  #ifdef MEMP_STATS  #ifdef MEMP_STATS
223      ++lwip_stats.memp[type].err;      ++lwip_stats.memp[type].err;
224  #endif /* MEMP_STATS */  #endif /* MEMP_STATS */
     return NULL;  
   }  
 }  
 /*-----------------------------------------------------------------------------------*/  
 void *  
 memp_mallocp(memp_t type)  
 {  
   void *mem;  
 #if SYS_LIGHTWEIGHT_PROT  
   SYS_ARCH_DECL_PROTECT(old_level);  
   SYS_ARCH_PROTECT(old_level);  
 #else /* SYS_LIGHTWEIGHT_PROT */    
   sys_sem_wait(mutex);  
 #endif /* SYS_LIGHTWEIGHT_PROT */    
   
   mem = memp_malloc(type);  
   
225  #if SYS_LIGHTWEIGHT_PROT  #if SYS_LIGHTWEIGHT_PROT
226    SYS_ARCH_UNPROTECT(old_level);    SYS_ARCH_UNPROTECT(old_level);
227  #else /* SYS_LIGHTWEIGHT_PROT */  #else /* SYS_LIGHTWEIGHT_PROT */
228    sys_sem_signal(mutex);    sys_sem_signal(mutex);
229  #endif /* SYS_LIGHTWEIGHT_PROT */    #endif /* SYS_LIGHTWEIGHT_PROT */  
230    return mem;      return NULL;
231      }
232  }  }
233  /*-----------------------------------------------------------------------------------*/  /*-----------------------------------------------------------------------------------*/
234  void  void
235  memp_free(memp_t type, void *mem)  memp_free(memp_t type, void *mem)
236  {  {
237    struct memp *memp;    struct memp *memp;
238    #ifdef SYS_LIGHTWEIGHT_PROT
239      SYS_ARCH_DECL_PROTECT(old_level);
240    #endif /* SYS_LIGHTWEIGHT_PROT */  
241    
242    if (mem == NULL) {    if (mem == NULL) {
243      return;      return;
244    }    }
245    memp = (struct memp *)((u8_t *)mem - sizeof(struct memp));    memp = (struct memp *)((u8_t *)mem - sizeof(struct memp));
246    
247    #ifdef SYS_LIGHTWEIGHT_PROT
248        SYS_ARCH_PROTECT(old_level);
249    #else /* SYS_LIGHTWEIGHT_PROT */  
250      sys_sem_wait(mutex);
251    #endif /* SYS_LIGHTWEIGHT_PROT */  
252    
253  #ifdef MEMP_STATS  #ifdef MEMP_STATS
254    lwip_stats.memp[type].used--;    lwip_stats.memp[type].used--;
255  #endif /* MEMP_STATS */  #endif /* MEMP_STATS */
# Line 252  memp_free(memp_t type, void *mem) Line 259  memp_free(memp_t type, void *mem)
259    
260    LWIP_ASSERT("memp sanity", memp_sanity());    LWIP_ASSERT("memp sanity", memp_sanity());
261    
   return;  
 }  
 /*-----------------------------------------------------------------------------------*/  
 void  
 memp_freep(memp_t type, void *mem)  
 {  
 #if SYS_LIGHTWEIGHT_PROT  
     SYS_ARCH_DECL_PROTECT(old_level);  
     SYS_ARCH_PROTECT(old_level);  
 #else /* SYS_LIGHTWEIGHT_PROT */    
   sys_sem_wait(mutex);  
 #endif /* SYS_LIGHTWEIGHT_PROT */    
   
   memp_free(type, mem);  
   
262  #if SYS_LIGHTWEIGHT_PROT  #if SYS_LIGHTWEIGHT_PROT
263    SYS_ARCH_UNPROTECT(old_level);    SYS_ARCH_UNPROTECT(old_level);
264  #else /* SYS_LIGHTWEIGHT_PROT */  #else /* SYS_LIGHTWEIGHT_PROT */
265    sys_sem_signal(mutex);    sys_sem_signal(mutex);
266  #endif /* SYS_LIGHTWEIGHT_PROT */    #endif /* SYS_LIGHTWEIGHT_PROT */  
   
267  }  }
268  /*-----------------------------------------------------------------------------------*/  /*-----------------------------------------------------------------------------------*/

Legend:
Removed from v.1.17  
changed lines
  Added in v.1.18

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