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

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

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

revision 1.15 by jani, Fri Feb 21 16:43:46 2003 UTC revision 1.16 by jani, Mon Feb 24 10:49:05 2003 UTC
# Line 53  Line 53 
53    
54  static u8_t pbuf_pool_memory[(PBUF_POOL_SIZE * MEM_ALIGN_SIZE(PBUF_POOL_BUFSIZE + sizeof(struct pbuf)))];  static u8_t pbuf_pool_memory[(PBUF_POOL_SIZE * MEM_ALIGN_SIZE(PBUF_POOL_BUFSIZE + sizeof(struct pbuf)))];
55    
56  #ifndef SYS_LIGHTWEIGHT_PROT  #if !SYS_LIGHTWEIGHT_PROT
57  static volatile u8_t pbuf_pool_free_lock, pbuf_pool_alloc_lock;  static volatile u8_t pbuf_pool_free_lock, pbuf_pool_alloc_lock;
58  static sys_sem_t pbuf_pool_free_sem;  static sys_sem_t pbuf_pool_free_sem;
59  #endif  #endif
# Line 103  pbuf_init(void) Line 103  pbuf_init(void)
103       are no more pbufs in the pool. */       are no more pbufs in the pool. */
104    q->next = NULL;    q->next = NULL;
105    
106  #ifndef SYS_LIGHTWEIGHT_PROT    #if !SYS_LIGHTWEIGHT_PROT  
107    pbuf_pool_alloc_lock = 0;    pbuf_pool_alloc_lock = 0;
108    pbuf_pool_free_lock = 0;    pbuf_pool_free_lock = 0;
109    pbuf_pool_free_sem = sys_sem_new(1);    pbuf_pool_free_sem = sys_sem_new(1);
# Line 126  pbuf_pool_alloc(void) Line 126  pbuf_pool_alloc(void)
126        pbuf_pool_alloc_cache = p->next;        pbuf_pool_alloc_cache = p->next;
127      }      }
128    } else {    } else {
129  #ifndef SYS_LIGHTWEIGHT_PROT        #if !SYS_LIGHTWEIGHT_PROT      
130      /* Next, check the actual pbuf pool, but if the pool is locked, we      /* Next, check the actual pbuf pool, but if the pool is locked, we
131         pretend to be out of buffers and return NULL. */         pretend to be out of buffers and return NULL. */
132      if(pbuf_pool_free_lock) {      if(pbuf_pool_free_lock) {
# Line 142  pbuf_pool_alloc(void) Line 142  pbuf_pool_alloc(void)
142        if(p) {        if(p) {
143          pbuf_pool = p->next;          pbuf_pool = p->next;
144        }        }
145  #ifndef SYS_LIGHTWEIGHT_PROT        #if !SYS_LIGHTWEIGHT_PROT      
146  #ifdef PBUF_STATS  #ifdef PBUF_STATS
147      } else {      } else {
148        ++lwip_stats.pbuf.alloc_locked;        ++lwip_stats.pbuf.alloc_locked;
# Line 331  pbuf_refresh(void) Line 331  pbuf_refresh(void)
331    SYS_ARCH_DECL_PROTECT(old_level);    SYS_ARCH_DECL_PROTECT(old_level);
332    SYS_ARCH_PROTECT(old_level);    SYS_ARCH_PROTECT(old_level);
333    
334  #ifndef SYS_LIGHTWEIGHT_PROT  #if !SYS_LIGHTWEIGHT_PROT
335    sys_sem_wait(pbuf_pool_free_sem);    sys_sem_wait(pbuf_pool_free_sem);
336  #endif /* else SYS_LIGHTWEIGHT_PROT */  #endif /* else SYS_LIGHTWEIGHT_PROT */
337        
338    if(pbuf_pool_free_cache != NULL) {    if(pbuf_pool_free_cache != NULL) {
339  #ifndef SYS_LIGHTWEIGHT_PROT        #if !SYS_LIGHTWEIGHT_PROT      
340      pbuf_pool_free_lock = 1;      pbuf_pool_free_lock = 1;
341      if(!pbuf_pool_alloc_lock) {      if(!pbuf_pool_alloc_lock) {
342  #endif /* SYS_LIGHTWEIGHT_PROT */  #endif /* SYS_LIGHTWEIGHT_PROT */
# Line 347  pbuf_refresh(void) Line 347  pbuf_refresh(void)
347          p->next = pbuf_pool_free_cache;            p->next = pbuf_pool_free_cache;  
348        }        }
349        pbuf_pool_free_cache = NULL;        pbuf_pool_free_cache = NULL;
350  #ifndef SYS_LIGHTWEIGHT_PROT        #if !SYS_LIGHTWEIGHT_PROT      
351  #ifdef PBUF_STATS  #ifdef PBUF_STATS
352      } else {      } else {
353        ++lwip_stats.pbuf.refresh_locked;        ++lwip_stats.pbuf.refresh_locked;
# Line 358  pbuf_refresh(void) Line 358  pbuf_refresh(void)
358  #endif /* SYS_LIGHTWEIGHT_PROT */      #endif /* SYS_LIGHTWEIGHT_PROT */    
359    }    }
360    SYS_ARCH_UNPROTECT(old_level);    SYS_ARCH_UNPROTECT(old_level);
361  #ifndef SYS_LIGHTWEIGHT_PROT        #if !SYS_LIGHTWEIGHT_PROT      
362    sys_sem_signal(pbuf_pool_free_sem);    sys_sem_signal(pbuf_pool_free_sem);
363  #endif /* SYS_LIGHTWEIGHT_PROT */    #endif /* SYS_LIGHTWEIGHT_PROT */  
364  }  }
# Line 375  pbuf_refresh(void) Line 375  pbuf_refresh(void)
375                                    DEC_PBUF_STATS;                       \                                    DEC_PBUF_STATS;                       \
376                                  } while (0)                                  } while (0)
377    
378  #ifdef SYS_LIGHTWEIGHT_PROT  #if SYS_LIGHTWEIGHT_PROT
379  #define PBUF_POOL_FREE(p)  do {                                         \  #define PBUF_POOL_FREE(p)  do {                                         \
380                                  SYS_ARCH_DECL_PROTECT(old_level);       \                                  SYS_ARCH_DECL_PROTECT(old_level);       \
381                                  SYS_ARCH_PROTECT(old_level);            \                                  SYS_ARCH_PROTECT(old_level);            \

Legend:
Removed from v.1.15  
changed lines
  Added in v.1.16

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