[BACK]Return to aproc.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / aucat

Diff for /src/usr.bin/aucat/Attic/aproc.c between version 1.53 and 1.54

version 1.53, 2010/04/21 06:13:07 version 1.54, 2010/04/24 06:18:23
Line 159 
Line 159 
         p = malloc(sizeof(struct aproc));          p = malloc(sizeof(struct aproc));
         if (p == NULL)          if (p == NULL)
                 err(1, name);                  err(1, name);
         LIST_INIT(&p->ibuflist);          LIST_INIT(&p->ins);
         LIST_INIT(&p->obuflist);          LIST_INIT(&p->outs);
         p->name = name;          p->name = name;
         p->ops = ops;          p->ops = ops;
         p->refs = 0;          p->refs = 0;
Line 189 
Line 189 
 #endif  #endif
                         p->ops->done(p);                          p->ops->done(p);
                 }                  }
                 while (!LIST_EMPTY(&p->ibuflist)) {                  while (!LIST_EMPTY(&p->ins)) {
                         i = LIST_FIRST(&p->ibuflist);                          i = LIST_FIRST(&p->ins);
                         abuf_hup(i);                          abuf_hup(i);
                 }                  }
                 while (!LIST_EMPTY(&p->obuflist)) {                  while (!LIST_EMPTY(&p->outs)) {
                         i = LIST_FIRST(&p->obuflist);                          i = LIST_FIRST(&p->outs);
                         abuf_eof(i);                          abuf_eof(i);
                 }                  }
                 p->flags |= APROC_ZOMB;                  p->flags |= APROC_ZOMB;
Line 221 
Line 221 
 void  void
 aproc_setin(struct aproc *p, struct abuf *ibuf)  aproc_setin(struct aproc *p, struct abuf *ibuf)
 {  {
         LIST_INSERT_HEAD(&p->ibuflist, ibuf, ient);          LIST_INSERT_HEAD(&p->ins, ibuf, ient);
         ibuf->rproc = p;          ibuf->rproc = p;
         if (p->ops->newin)          if (p->ops->newin)
                 p->ops->newin(p, ibuf);                  p->ops->newin(p, ibuf);
Line 230 
Line 230 
 void  void
 aproc_setout(struct aproc *p, struct abuf *obuf)  aproc_setout(struct aproc *p, struct abuf *obuf)
 {  {
         LIST_INSERT_HEAD(&p->obuflist, obuf, oent);          LIST_INSERT_HEAD(&p->outs, obuf, oent);
         obuf->wproc = p;          obuf->wproc = p;
         if (p->ops->newout)          if (p->ops->newout)
                 p->ops->newout(p, obuf);                  p->ops->newout(p, obuf);
Line 241 
Line 241 
 {  {
         struct abuf *obuf;          struct abuf *obuf;
   
         LIST_FOREACH(obuf, &p->obuflist, oent) {          LIST_FOREACH(obuf, &p->outs, oent) {
                 abuf_ipos(obuf, delta);                  abuf_ipos(obuf, delta);
         }          }
 }  }
Line 251 
Line 251 
 {  {
         struct abuf *ibuf;          struct abuf *ibuf;
   
         LIST_FOREACH(ibuf, &p->ibuflist, ient) {          LIST_FOREACH(ibuf, &p->ins, ient) {
                 abuf_opos(ibuf, delta);                  abuf_opos(ibuf, delta);
         }          }
 }  }
Line 261 
Line 261 
 {  {
         struct abuf *i;          struct abuf *i;
   
         LIST_FOREACH(i, &p->ibuflist, ient) {          LIST_FOREACH(i, &p->ins, ient) {
                 if (i->inuse)                  if (i->inuse)
                         return 1;                          return 1;
         }          }
         LIST_FOREACH(i, &p->obuflist, oent) {          LIST_FOREACH(i, &p->outs, oent) {
                 if (i->inuse)                  if (i->inuse)
                         return 1;                          return 1;
         }          }
Line 279 
Line 279 
   
         if (p == dep)          if (p == dep)
                 return 1;                  return 1;
         LIST_FOREACH(i, &p->ibuflist, ient) {          LIST_FOREACH(i, &p->ins, ient) {
                 if (i->wproc && aproc_depend(i->wproc, dep))                  if (i->wproc && aproc_depend(i->wproc, dep))
                         return 1;                          return 1;
         }          }
Line 289 
Line 289 
 int  int
 rfile_do(struct aproc *p, unsigned todo, unsigned *done)  rfile_do(struct aproc *p, unsigned todo, unsigned *done)
 {  {
         struct abuf *obuf = LIST_FIRST(&p->obuflist);          struct abuf *obuf = LIST_FIRST(&p->outs);
         struct file *f = p->u.io.file;          struct file *f = p->u.io.file;
         unsigned char *data;          unsigned char *data;
         unsigned n, count, off;          unsigned n, count, off;
Line 314 
Line 314 
 int  int
 rfile_in(struct aproc *p, struct abuf *ibuf_dummy)  rfile_in(struct aproc *p, struct abuf *ibuf_dummy)
 {  {
         struct abuf *obuf = LIST_FIRST(&p->obuflist);          struct abuf *obuf = LIST_FIRST(&p->outs);
         struct file *f = p->u.io.file;          struct file *f = p->u.io.file;
   
         if (!ABUF_WOK(obuf) || !(f->state & FILE_ROK))          if (!ABUF_WOK(obuf) || !(f->state & FILE_ROK))
Line 358 
Line 358 
          * all buffers must be detached before deleting f->wproc,           * all buffers must be detached before deleting f->wproc,
          * because otherwise it could trigger this code again           * because otherwise it could trigger this code again
          */           */
         obuf = LIST_FIRST(&p->obuflist);          obuf = LIST_FIRST(&p->outs);
         if (obuf)          if (obuf)
                 abuf_eof(obuf);                  abuf_eof(obuf);
         if (f->wproc) {          if (f->wproc) {
Line 431 
Line 431 
          * all buffers must be detached before deleting f->rproc,           * all buffers must be detached before deleting f->rproc,
          * because otherwise it could trigger this code again           * because otherwise it could trigger this code again
          */           */
         ibuf = LIST_FIRST(&p->ibuflist);          ibuf = LIST_FIRST(&p->ins);
         if (ibuf)          if (ibuf)
                 abuf_hup(ibuf);                  abuf_hup(ibuf);
         if (f->rproc) {          if (f->rproc) {
Line 451 
Line 451 
 int  int
 wfile_do(struct aproc *p, unsigned todo, unsigned *done)  wfile_do(struct aproc *p, unsigned todo, unsigned *done)
 {  {
         struct abuf *ibuf = LIST_FIRST(&p->ibuflist);          struct abuf *ibuf = LIST_FIRST(&p->ins);
         struct file *f = p->u.io.file;          struct file *f = p->u.io.file;
         unsigned char *data;          unsigned char *data;
         unsigned n, count, off;          unsigned n, count, off;
Line 489 
Line 489 
 int  int
 wfile_out(struct aproc *p, struct abuf *obuf_dummy)  wfile_out(struct aproc *p, struct abuf *obuf_dummy)
 {  {
         struct abuf *ibuf = LIST_FIRST(&p->ibuflist);          struct abuf *ibuf = LIST_FIRST(&p->ins);
         struct file *f = p->u.io.file;          struct file *f = p->u.io.file;
   
         if (!abuf_fill(ibuf))          if (!abuf_fill(ibuf))
Line 694 
Line 694 
 int  int
 mix_xrun(struct aproc *p, struct abuf *i)  mix_xrun(struct aproc *p, struct abuf *i)
 {  {
         struct abuf *obuf = LIST_FIRST(&p->obuflist);          struct abuf *obuf = LIST_FIRST(&p->outs);
         unsigned fdrop, remain;          unsigned fdrop, remain;
   
         if (i->r.mix.done > 0)          if (i->r.mix.done > 0)
Line 749 
Line 749 
 int  int
 mix_in(struct aproc *p, struct abuf *ibuf)  mix_in(struct aproc *p, struct abuf *ibuf)
 {  {
         struct abuf *i, *inext, *obuf = LIST_FIRST(&p->obuflist);          struct abuf *i, *inext, *obuf = LIST_FIRST(&p->outs);
         unsigned odone;          unsigned odone;
         unsigned maxwrite;          unsigned maxwrite;
         unsigned scount;          unsigned scount;
Line 773 
Line 773 
         mix_bzero(obuf);          mix_bzero(obuf);
         scount = 0;          scount = 0;
         odone = obuf->w.mix.todo;          odone = obuf->w.mix.todo;
         for (i = LIST_FIRST(&p->ibuflist); i != NULL; i = inext) {          for (i = LIST_FIRST(&p->ins); i != NULL; i = inext) {
                 inext = LIST_NEXT(i, ient);                  inext = LIST_NEXT(i, ient);
                 if (i->r.mix.drop >= 0 && !abuf_fill(i))                  if (i->r.mix.drop >= 0 && !abuf_fill(i))
                         continue; /* eof */                          continue; /* eof */
Line 782 
Line 782 
                 if (odone > i->r.mix.done)                  if (odone > i->r.mix.done)
                         odone = i->r.mix.done;                          odone = i->r.mix.done;
         }          }
         if (LIST_EMPTY(&p->ibuflist) || scount == 0)          if (LIST_EMPTY(&p->ins) || scount == 0)
                 return 0;                  return 0;
 #ifdef DEBUG  #ifdef DEBUG
         if (debug_level >= 4) {          if (debug_level >= 4) {
Line 802 
Line 802 
                         odone = maxwrite;                          odone = maxwrite;
                 p->u.mix.lat += odone;                  p->u.mix.lat += odone;
                 p->u.mix.abspos += odone;                  p->u.mix.abspos += odone;
                 LIST_FOREACH(i, &p->ibuflist, ient) {                  LIST_FOREACH(i, &p->ins, ient) {
                         i->r.mix.done -= odone;                          i->r.mix.done -= odone;
                 }                  }
                 abuf_wcommit(obuf, odone);                  abuf_wcommit(obuf, odone);
Line 855 
Line 855 
         mix_bzero(obuf);          mix_bzero(obuf);
         scount = 0;          scount = 0;
         odone = obuf->len;          odone = obuf->len;
         for (i = LIST_FIRST(&p->ibuflist); i != NULL; i = inext) {          for (i = LIST_FIRST(&p->ins); i != NULL; i = inext) {
                 inext = LIST_NEXT(i, ient);                  inext = LIST_NEXT(i, ient);
                 if (i->r.mix.drop >= 0 && !abuf_fill(i))                  if (i->r.mix.drop >= 0 && !abuf_fill(i))
                         continue; /* eof */                          continue; /* eof */
Line 870 
Line 870 
                 if (odone > i->r.mix.done)                  if (odone > i->r.mix.done)
                         odone = i->r.mix.done;                          odone = i->r.mix.done;
         }          }
         if (LIST_EMPTY(&p->ibuflist)) {          if (LIST_EMPTY(&p->ins)) {
                 if (p->flags & APROC_QUIT) {                  if (p->flags & APROC_QUIT) {
                         aproc_del(p);                          aproc_del(p);
                         return 0;                          return 0;
Line 885 
Line 885 
                         odone = maxwrite;                          odone = maxwrite;
                 p->u.mix.lat += odone;                  p->u.mix.lat += odone;
                 p->u.mix.abspos += odone;                  p->u.mix.abspos += odone;
                 LIST_FOREACH(i, &p->ibuflist, ient) {                  LIST_FOREACH(i, &p->ins, ient) {
                         i->r.mix.done -= odone;                          i->r.mix.done -= odone;
                 }                  }
                 abuf_wcommit(obuf, odone);                  abuf_wcommit(obuf, odone);
Line 901 
Line 901 
 void  void
 mix_eof(struct aproc *p, struct abuf *ibuf)  mix_eof(struct aproc *p, struct abuf *ibuf)
 {  {
         struct abuf *i, *inext, *obuf = LIST_FIRST(&p->obuflist);          struct abuf *i, *inext, *obuf = LIST_FIRST(&p->outs);
         unsigned odone;          unsigned odone;
   
         mix_setmaster(p);          mix_setmaster(p);
Line 917 
Line 917 
                  * Find a blocked input.                   * Find a blocked input.
                  */                   */
                 odone = obuf->len;                  odone = obuf->len;
                 for (i = LIST_FIRST(&p->ibuflist); i != NULL; i = inext) {                  for (i = LIST_FIRST(&p->ins); i != NULL; i = inext) {
                         inext = LIST_NEXT(i, ient);                          inext = LIST_NEXT(i, ient);
                         if (!abuf_fill(i))                          if (!abuf_fill(i))
                                 continue;                                  continue;
Line 931 
Line 931 
                 /*                  /*
                  * No blocked inputs. Check if output is blocked.                   * No blocked inputs. Check if output is blocked.
                  */                   */
                 if (LIST_EMPTY(&p->ibuflist) || odone == obuf->w.mix.todo)                  if (LIST_EMPTY(&p->ins) || odone == obuf->w.mix.todo)
                         abuf_run(obuf);                          abuf_run(obuf);
         }          }
 }  }
Line 1034 
Line 1034 
          * share their volume           * share their volume
          */           */
         n = 0;          n = 0;
         LIST_FOREACH(i, &p->ibuflist, ient) {          LIST_FOREACH(i, &p->ins, ient) {
                 j = LIST_NEXT(i, ient);                  j = LIST_NEXT(i, ient);
                 for (;;) {                  for (;;) {
                         if (j == NULL) {                          if (j == NULL) {
Line 1046 
Line 1046 
                         j = LIST_NEXT(j, ient);                          j = LIST_NEXT(j, ient);
                 }                  }
         }          }
         LIST_FOREACH(i, &p->ibuflist, ient) {          LIST_FOREACH(i, &p->ins, ient) {
                 weight = ADATA_UNIT / n;                  weight = ADATA_UNIT / n;
                 if (weight > i->r.mix.maxweight)                  if (weight > i->r.mix.maxweight)
                         weight = i->r.mix.maxweight;                          weight = i->r.mix.maxweight;
Line 1067 
Line 1067 
 void  void
 mix_clear(struct aproc *p)  mix_clear(struct aproc *p)
 {  {
         struct abuf *obuf = LIST_FIRST(&p->obuflist);          struct abuf *obuf = LIST_FIRST(&p->outs);
   
         p->u.mix.lat = 0;          p->u.mix.lat = 0;
         p->u.mix.abspos = 0;          p->u.mix.abspos = 0;
Line 1077 
Line 1077 
 void  void
 mix_prime(struct aproc *p)  mix_prime(struct aproc *p)
 {  {
         struct abuf *obuf = LIST_FIRST(&p->obuflist);          struct abuf *obuf = LIST_FIRST(&p->outs);
         unsigned todo, count;          unsigned todo, count;
   
         for (;;) {          for (;;) {
Line 1216 
Line 1216 
 int  int
 sub_xrun(struct aproc *p, struct abuf *i)  sub_xrun(struct aproc *p, struct abuf *i)
 {  {
         struct abuf *ibuf = LIST_FIRST(&p->ibuflist);          struct abuf *ibuf = LIST_FIRST(&p->ins);
         unsigned fdrop, remain;          unsigned fdrop, remain;
   
         if (i->w.sub.done > 0)          if (i->w.sub.done > 0)
Line 1278 
Line 1278 
         if (!ABUF_ROK(ibuf))          if (!ABUF_ROK(ibuf))
                 return 0;                  return 0;
         idone = ibuf->len;          idone = ibuf->len;
         for (i = LIST_FIRST(&p->obuflist); i != NULL; i = inext) {          for (i = LIST_FIRST(&p->outs); i != NULL; i = inext) {
                 inext = LIST_NEXT(i, oent);                  inext = LIST_NEXT(i, oent);
                 sub_silence(i, 0);                  sub_silence(i, 0);
                 if (!SUB_WOK(i)) {                  if (!SUB_WOK(i)) {
Line 1293 
Line 1293 
                 if (!abuf_flush(i))                  if (!abuf_flush(i))
                         continue;                          continue;
         }          }
         if (LIST_EMPTY(&p->obuflist)) {          if (LIST_EMPTY(&p->outs)) {
                 if (p->flags & APROC_QUIT) {                  if (p->flags & APROC_QUIT) {
                         aproc_del(p);                          aproc_del(p);
                         return 0;                          return 0;
Line 1305 
Line 1305 
         }          }
         if (idone == 0)          if (idone == 0)
                 return 0;                  return 0;
         LIST_FOREACH(i, &p->obuflist, oent) {          LIST_FOREACH(i, &p->outs, oent) {
                 i->w.sub.done -= idone;                  i->w.sub.done -= idone;
         }          }
         abuf_rdiscard(ibuf, idone);          abuf_rdiscard(ibuf, idone);
Line 1318 
Line 1318 
 int  int
 sub_out(struct aproc *p, struct abuf *obuf)  sub_out(struct aproc *p, struct abuf *obuf)
 {  {
         struct abuf *ibuf = LIST_FIRST(&p->ibuflist);          struct abuf *ibuf = LIST_FIRST(&p->ins);
         struct abuf *i, *inext;          struct abuf *i, *inext;
         unsigned idone;          unsigned idone;
   
Line 1327 
Line 1327 
         if (!abuf_fill(ibuf))          if (!abuf_fill(ibuf))
                 return 0; /* eof */                  return 0; /* eof */
         idone = ibuf->len;          idone = ibuf->len;
         for (i = LIST_FIRST(&p->obuflist); i != NULL; i = inext) {          for (i = LIST_FIRST(&p->outs); i != NULL; i = inext) {
                 inext = LIST_NEXT(i, oent);                  inext = LIST_NEXT(i, oent);
                 sub_silence(i, 0);                  sub_silence(i, 0);
                 sub_bcopy(ibuf, i);                  sub_bcopy(ibuf, i);
Line 1336 
Line 1336 
                 if (!abuf_flush(i))                  if (!abuf_flush(i))
                         continue;                          continue;
         }          }
         if (LIST_EMPTY(&p->obuflist) || idone == 0)          if (LIST_EMPTY(&p->outs) || idone == 0)
                 return 0;                  return 0;
         LIST_FOREACH(i, &p->obuflist, oent) {          LIST_FOREACH(i, &p->outs, oent) {
                 i->w.sub.done -= idone;                  i->w.sub.done -= idone;
         }          }
         abuf_rdiscard(ibuf, idone);          abuf_rdiscard(ibuf, idone);
Line 1357 
Line 1357 
 void  void
 sub_hup(struct aproc *p, struct abuf *obuf)  sub_hup(struct aproc *p, struct abuf *obuf)
 {  {
         struct abuf *i, *inext, *ibuf = LIST_FIRST(&p->ibuflist);          struct abuf *i, *inext, *ibuf = LIST_FIRST(&p->ins);
         unsigned idone;          unsigned idone;
   
         if (!aproc_inuse(p)) {          if (!aproc_inuse(p)) {
Line 1371 
Line 1371 
                  * Find a blocked output.                   * Find a blocked output.
                  */                   */
                 idone = ibuf->len;                  idone = ibuf->len;
                 for (i = LIST_FIRST(&p->obuflist); i != NULL; i = inext) {                  for (i = LIST_FIRST(&p->outs); i != NULL; i = inext) {
                         inext = LIST_NEXT(i, oent);                          inext = LIST_NEXT(i, oent);
                         if (!abuf_flush(i))                          if (!abuf_flush(i))
                                 continue;                                  continue;
Line 1385 
Line 1385 
                 /*                  /*
                  * No blocked outputs. Check if input is blocked.                   * No blocked outputs. Check if input is blocked.
                  */                   */
                 if (LIST_EMPTY(&p->obuflist) || idone == ibuf->used)                  if (LIST_EMPTY(&p->outs) || idone == ibuf->used)
                         abuf_run(ibuf);                          abuf_run(ibuf);
         }          }
 }  }
Line 1562 
Line 1562 
 int  int
 resamp_in(struct aproc *p, struct abuf *ibuf)  resamp_in(struct aproc *p, struct abuf *ibuf)
 {  {
         struct abuf *obuf = LIST_FIRST(&p->obuflist);          struct abuf *obuf = LIST_FIRST(&p->outs);
   
         if (!ABUF_WOK(obuf) || !ABUF_ROK(ibuf))          if (!ABUF_WOK(obuf) || !ABUF_ROK(ibuf))
                 return 0;                  return 0;
Line 1575 
Line 1575 
 int  int
 resamp_out(struct aproc *p, struct abuf *obuf)  resamp_out(struct aproc *p, struct abuf *obuf)
 {  {
         struct abuf *ibuf = LIST_FIRST(&p->ibuflist);          struct abuf *ibuf = LIST_FIRST(&p->ins);
   
         if (!abuf_fill(ibuf))          if (!abuf_fill(ibuf))
                 return 0;                  return 0;
Line 1600 
Line 1600 
 void  void
 resamp_ipos(struct aproc *p, struct abuf *ibuf, int delta)  resamp_ipos(struct aproc *p, struct abuf *ibuf, int delta)
 {  {
         struct abuf *obuf = LIST_FIRST(&p->obuflist);          struct abuf *obuf = LIST_FIRST(&p->outs);
         long long ipos;          long long ipos;
   
         ipos = (long long)delta * p->u.resamp.oblksz + p->u.resamp.idelta;          ipos = (long long)delta * p->u.resamp.oblksz + p->u.resamp.idelta;
Line 1611 
Line 1611 
 void  void
 resamp_opos(struct aproc *p, struct abuf *obuf, int delta)  resamp_opos(struct aproc *p, struct abuf *obuf, int delta)
 {  {
         struct abuf *ibuf = LIST_FIRST(&p->ibuflist);          struct abuf *ibuf = LIST_FIRST(&p->ins);
         long long opos;          long long opos;
   
         opos = (long long)delta * p->u.resamp.iblksz + p->u.resamp.odelta;          opos = (long long)delta * p->u.resamp.iblksz + p->u.resamp.odelta;
Line 1737 
Line 1737 
 int  int
 enc_in(struct aproc *p, struct abuf *ibuf)  enc_in(struct aproc *p, struct abuf *ibuf)
 {  {
         struct abuf *obuf = LIST_FIRST(&p->obuflist);          struct abuf *obuf = LIST_FIRST(&p->outs);
   
         if (!ABUF_WOK(obuf) || !ABUF_ROK(ibuf))          if (!ABUF_WOK(obuf) || !ABUF_ROK(ibuf))
                 return 0;                  return 0;
Line 1750 
Line 1750 
 int  int
 enc_out(struct aproc *p, struct abuf *obuf)  enc_out(struct aproc *p, struct abuf *obuf)
 {  {
         struct abuf *ibuf = LIST_FIRST(&p->ibuflist);          struct abuf *ibuf = LIST_FIRST(&p->ins);
   
         if (!abuf_fill(ibuf))          if (!abuf_fill(ibuf))
                 return 0;                  return 0;
Line 1895 
Line 1895 
 int  int
 dec_in(struct aproc *p, struct abuf *ibuf)  dec_in(struct aproc *p, struct abuf *ibuf)
 {  {
         struct abuf *obuf = LIST_FIRST(&p->obuflist);          struct abuf *obuf = LIST_FIRST(&p->outs);
   
         if (!ABUF_WOK(obuf) || !ABUF_ROK(ibuf))          if (!ABUF_WOK(obuf) || !ABUF_ROK(ibuf))
                 return 0;                  return 0;
Line 1908 
Line 1908 
 int  int
 dec_out(struct aproc *p, struct abuf *obuf)  dec_out(struct aproc *p, struct abuf *obuf)
 {  {
         struct abuf *ibuf = LIST_FIRST(&p->ibuflist);          struct abuf *ibuf = LIST_FIRST(&p->ins);
   
         if (!abuf_fill(ibuf))          if (!abuf_fill(ibuf))
                 return 0;                  return 0;
Line 2058 
Line 2058 
 int  int
 join_in(struct aproc *p, struct abuf *ibuf)  join_in(struct aproc *p, struct abuf *ibuf)
 {  {
         struct abuf *obuf = LIST_FIRST(&p->obuflist);          struct abuf *obuf = LIST_FIRST(&p->outs);
   
         if (!ABUF_WOK(obuf) || !ABUF_ROK(ibuf))          if (!ABUF_WOK(obuf) || !ABUF_ROK(ibuf))
                 return 0;                  return 0;
Line 2071 
Line 2071 
 int  int
 join_out(struct aproc *p, struct abuf *obuf)  join_out(struct aproc *p, struct abuf *obuf)
 {  {
         struct abuf *ibuf = LIST_FIRST(&p->ibuflist);          struct abuf *ibuf = LIST_FIRST(&p->ins);
   
         if (!abuf_fill(ibuf))          if (!abuf_fill(ibuf))
                 return 0;                  return 0;
Line 2127 
Line 2127 
 void  void
 mon_flush(struct aproc *p)  mon_flush(struct aproc *p)
 {  {
         struct abuf *obuf = LIST_FIRST(&p->obuflist);          struct abuf *obuf = LIST_FIRST(&p->outs);
         unsigned count;          unsigned count;
   
 #ifdef DEBUG  #ifdef DEBUG
Line 2159 
Line 2159 
 void  void
 mon_snoop(struct aproc *p, struct abuf *ibuf, unsigned pos, unsigned todo)  mon_snoop(struct aproc *p, struct abuf *ibuf, unsigned pos, unsigned todo)
 {  {
         struct abuf *obuf = LIST_FIRST(&p->obuflist);          struct abuf *obuf = LIST_FIRST(&p->outs);
         unsigned scount, icount, ocount;          unsigned scount, icount, ocount;
         short *idata, *odata;          short *idata, *odata;
   

Legend:
Removed from v.1.53  
changed lines
  Added in v.1.54