version 1.58, 2010/05/04 19:40:08 |
version 1.59, 2010/05/07 07:15:50 |
|
|
if (odone > maxwrite) |
if (odone > maxwrite) |
odone = maxwrite; |
odone = maxwrite; |
p->u.mix.lat += odone; |
p->u.mix.lat += odone; |
p->u.mix.abspos += odone; |
|
LIST_FOREACH(i, &p->ins, ient) { |
LIST_FOREACH(i, &p->ins, ient) { |
i->r.mix.done -= odone; |
i->r.mix.done -= odone; |
} |
} |
|
|
odone = maxwrite; |
odone = maxwrite; |
if (odone > 0) { |
if (odone > 0) { |
p->u.mix.lat += odone; |
p->u.mix.lat += odone; |
p->u.mix.abspos += odone; |
|
LIST_FOREACH(i, &p->ins, ient) { |
LIST_FOREACH(i, &p->ins, ient) { |
i->r.mix.done -= odone; |
i->r.mix.done -= odone; |
} |
} |
|
|
p->u.mix.lat = 0; |
p->u.mix.lat = 0; |
p->u.mix.round = round; |
p->u.mix.round = round; |
p->u.mix.maxlat = maxlat; |
p->u.mix.maxlat = maxlat; |
p->u.mix.abspos = 0; |
|
p->u.mix.ctl = NULL; |
p->u.mix.ctl = NULL; |
p->u.mix.mon = NULL; |
p->u.mix.mon = NULL; |
return p; |
return p; |
|
|
struct abuf *obuf = LIST_FIRST(&p->outs); |
struct abuf *obuf = LIST_FIRST(&p->outs); |
|
|
p->u.mix.lat = 0; |
p->u.mix.lat = 0; |
p->u.mix.abspos = 0; |
|
obuf->w.mix.todo = 0; |
obuf->w.mix.todo = 0; |
} |
} |
|
|
|
|
break; |
break; |
obuf->w.mix.todo -= count; |
obuf->w.mix.todo -= count; |
p->u.mix.lat += count; |
p->u.mix.lat += count; |
p->u.mix.abspos += count; |
|
abuf_wcommit(obuf, count); |
abuf_wcommit(obuf, count); |
if (APROC_OK(p->u.mix.mon)) |
if (APROC_OK(p->u.mix.mon)) |
mon_snoop(p->u.mix.mon, obuf, 0, count); |
mon_snoop(p->u.mix.mon, obuf, 0, count); |
|
|
abuf_rdiscard(ibuf, idone); |
abuf_rdiscard(ibuf, idone); |
abuf_opos(ibuf, idone); |
abuf_opos(ibuf, idone); |
p->u.sub.lat -= idone; |
p->u.sub.lat -= idone; |
p->u.sub.abspos += idone; |
|
return 1; |
return 1; |
} |
} |
|
|
|
|
abuf_rdiscard(ibuf, idone); |
abuf_rdiscard(ibuf, idone); |
abuf_opos(ibuf, idone); |
abuf_opos(ibuf, idone); |
p->u.sub.lat -= idone; |
p->u.sub.lat -= idone; |
p->u.sub.abspos += idone; |
|
return 1; |
return 1; |
} |
} |
|
|
|
|
p->u.sub.lat = 0; |
p->u.sub.lat = 0; |
p->u.sub.round = round; |
p->u.sub.round = round; |
p->u.sub.maxlat = maxlat; |
p->u.sub.maxlat = maxlat; |
p->u.sub.abspos = 0; |
|
p->u.sub.ctl = NULL; |
p->u.sub.ctl = NULL; |
return p; |
return p; |
} |
} |
|
|
sub_clear(struct aproc *p) |
sub_clear(struct aproc *p) |
{ |
{ |
p->u.sub.lat = 0; |
p->u.sub.lat = 0; |
p->u.sub.abspos = 0; |
|
} |
} |
|
|
/* |
/* |