return bo_putblk(b, chk->str, chk->len);
}
+/* Resets a buffer. The size is not touched. */
+static inline void b_reset(struct buffer *buf)
+{
+ buf->o = 0;
+ buf->i = 0;
+ buf->p = buf->data;
+}
+
#endif /* _COMMON_BUFFER_H */
/*
/* Initialize all fields in the channel. */
static inline void channel_init(struct channel *chn)
{
- chn->buf->o = 0;
- chn->buf->i = 0;
- chn->buf->p = chn->buf->data;
chn->to_forward = 0;
chn->last_read = now_ms;
chn->xfer_small = chn->xfer_large = 0;
*/
static inline void channel_erase(struct channel *chn)
{
- chn->buf->o = 0;
- chn->buf->i = 0;
chn->to_forward = 0;
- chn->buf->p = chn->buf->data;
+ b_reset(chn->buf);
}
/* marks the channel as "shutdown" ASAP for reads */
*/
out->size = global.tune.bufsize;
- out->i = 0;
- out->o = 0;
- out->p = out->data;
+ b_reset(out);
if (in->o > 0) {
left = in->o - bo_contig_data(in);
goto out_fail_req_buf; /* no memory */
s->req->buf->size = global.tune.bufsize;
+ b_reset(s->req->buf);
channel_init(s->req);
s->req->prod = &s->si[0];
s->req->cons = &s->si[1];
goto out_fail_rep_buf; /* no memory */
s->rep->buf->size = global.tune.bufsize;
+ b_reset(s->rep->buf);
channel_init(s->rep);
s->rep->prod = &s->si[1];
s->rep->cons = &s->si[0];
/* initialize the request buffer */
s->req->buf->size = global.tune.bufsize;
+ b_reset(s->req->buf);
channel_init(s->req);
s->req->prod = &s->si[0];
s->req->cons = &s->si[1];
/* initialize response buffer */
s->rep->buf->size = global.tune.bufsize;
+ b_reset(s->rep->buf);
channel_init(s->rep);
s->rep->prod = &s->si[1];
s->rep->cons = &s->si[0];