/[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.20 by likewise, Mon Mar 24 12:58:01 2003 UTC revision 1.21 by likewise, Mon Mar 24 13:27:12 2003 UTC
# Line 713  pbuf_dechain(struct pbuf *p) Line 713  pbuf_dechain(struct pbuf *p)
713  struct pbuf *  struct pbuf *
714  pbuf_unref(struct pbuf *f)  pbuf_unref(struct pbuf *f)
715  {  {
716    struct pbuf *p, *prev, *q, *top;    struct pbuf *p, *prev, *top;
717    DEBUGF(PBUF_DEBUG | DBG_TRACE | 3, ("pbuf_unref: %p\n", (void*)f));    DEBUGF(PBUF_DEBUG | DBG_TRACE, ("pbuf_unref: %p\n", (void*)f));
718    
719    prev = 0;    prev = NULL;
720    p = f;    p = f;
721    top = f;    top = f;
722    do    do
# Line 724  pbuf_unref(struct pbuf *f) Line 724  pbuf_unref(struct pbuf *f)
724      /* pbuf is of type PBUF_REF? */      /* pbuf is of type PBUF_REF? */
725      if (p->flags == PBUF_FLAG_REF)      if (p->flags == PBUF_FLAG_REF)
726      {      {
727          struct pbuf *q;
728              q = NULL;
729        /* allocate a pbuf (w/ payload) fully in RAM */        /* allocate a pbuf (w/ payload) fully in RAM */
730        /* PBUF_POOL buffers are faster if we can use them */        /* PBUF_POOL buffers are faster if we can use them */
731        if (p->len <= PBUF_POOL_BUFSIZE)        if (p->len <= PBUF_POOL_BUFSIZE) {
732          q = pbuf_alloc(PBUF_RAW, p->len, PBUF_POOL);          q = pbuf_alloc(PBUF_RAW, p->len, PBUF_POOL);
733        else          if (q == NULL) DEBUGF(PBUF_DEBUG | DBG_TRACE, ("pbuf_unref: Could not allocate PBUF_RAW\n"));
734          }
735          /* no (large enough) PBUF_POOL was available? retry with PBUF_RAM */
736          if (q == NULL) {
737          q = pbuf_alloc(PBUF_RAW, p->len, PBUF_RAM);          q = pbuf_alloc(PBUF_RAW, p->len, PBUF_RAM);
738        if (q != 0)          if (q == NULL) DEBUGF(PBUF_DEBUG | DBG_TRACE, ("pbuf_unref: Could not allocate PBUF_POOL\n"));
739          }
740          if (q != NULL)
741        {          {  
742          /* copy pbuf struct */          /* copy pbuf struct */
743          q->next = p->next;          q->next = p->next;
744          if (prev)          if (prev != NULL)
745            /* Break chain and insert new pbuf instead */            /* Break chain and insert new pbuf instead */
746            prev->next = q;            prev->next = q;
747          else          else
748            top = q;            top = q;
749          p->next = NULL;          p->next = NULL;
750                    /* copy pbuf payload */
751          memcpy(q->payload, p->payload, p->len);          memcpy(q->payload, p->payload, p->len);
752          q->tot_len = p->tot_len;          q->tot_len = p->tot_len;
753          q->len = p->len;          q->len = p->len;

Legend:
Removed from v.1.20  
changed lines
  Added in v.1.21

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