Lines Matching full:io
40 iobuf_init(struct iobuf *io, size_t size, size_t max) in iobuf_init() argument
42 memset(io, 0, sizeof *io); in iobuf_init()
53 if ((io->buf = calloc(size, 1)) == NULL) in iobuf_init()
56 io->size = size; in iobuf_init()
57 io->max = max; in iobuf_init()
63 iobuf_clear(struct iobuf *io) in iobuf_clear() argument
67 free(io->buf); in iobuf_clear()
69 while ((q = io->outq)) { in iobuf_clear()
70 io->outq = q->next; in iobuf_clear()
74 memset(io, 0, sizeof (*io)); in iobuf_clear()
78 iobuf_drain(struct iobuf *io, size_t n) in iobuf_drain() argument
83 while ((q = io->outq) && left) { in iobuf_drain()
89 io->outq = q->next; in iobuf_drain()
94 io->queued -= (n - left); in iobuf_drain()
95 if (io->outq == NULL) in iobuf_drain()
96 io->outqlast = NULL; in iobuf_drain()
100 iobuf_extend(struct iobuf *io, size_t n) in iobuf_extend() argument
104 if (n > io->max) in iobuf_extend()
107 if (io->max - io->size < n) in iobuf_extend()
110 t = recallocarray(io->buf, io->size, io->size + n, 1); in iobuf_extend()
114 io->size += n; in iobuf_extend()
115 io->buf = t; in iobuf_extend()
121 iobuf_left(struct iobuf *io) in iobuf_left() argument
123 return io->size - io->wpos; in iobuf_left()
127 iobuf_space(struct iobuf *io) in iobuf_space() argument
129 return io->size - (io->wpos - io->rpos); in iobuf_space()
133 iobuf_len(struct iobuf *io) in iobuf_len() argument
135 return io->wpos - io->rpos; in iobuf_len()
139 iobuf_data(struct iobuf *io) in iobuf_data() argument
141 return io->buf + io->rpos; in iobuf_data()
145 iobuf_drop(struct iobuf *io, size_t n) in iobuf_drop() argument
147 if (n >= iobuf_len(io)) { in iobuf_drop()
148 io->rpos = io->wpos = 0; in iobuf_drop()
152 io->rpos += n; in iobuf_drop()
184 iobuf_normalize(struct iobuf *io) in iobuf_normalize() argument
186 if (io->rpos == 0) in iobuf_normalize()
189 if (io->rpos == io->wpos) { in iobuf_normalize()
190 io->rpos = io->wpos = 0; in iobuf_normalize()
194 memmove(io->buf, io->buf + io->rpos, io->wpos - io->rpos); in iobuf_normalize()
195 io->wpos -= io->rpos; in iobuf_normalize()
196 io->rpos = 0; in iobuf_normalize()
200 iobuf_read(struct iobuf *io, int fd) in iobuf_read() argument
204 n = read(fd, io->buf + io->wpos, iobuf_left(io)); in iobuf_read()
214 io->wpos += n; in iobuf_read()
220 ioqbuf_alloc(struct iobuf *io, size_t len) in ioqbuf_alloc() argument
236 if (io->outqlast == NULL) in ioqbuf_alloc()
237 io->outq = q; in ioqbuf_alloc()
239 io->outqlast->next = q; in ioqbuf_alloc()
240 io->outqlast = q; in ioqbuf_alloc()
246 iobuf_queued(struct iobuf *io) in iobuf_queued() argument
248 return io->queued; in iobuf_queued()
252 iobuf_reserve(struct iobuf *io, size_t len) in iobuf_reserve() argument
260 if (((q = io->outqlast) == NULL) || q->size - q->wpos <= len) { in iobuf_reserve()
261 if ((q = ioqbuf_alloc(io, len)) == NULL) in iobuf_reserve()
267 io->queued += len; in iobuf_reserve()
273 iobuf_queue(struct iobuf *io, const void *data, size_t len) in iobuf_queue() argument
280 if ((buf = iobuf_reserve(io, len)) == NULL) in iobuf_queue()
289 iobuf_queuev(struct iobuf *io, const struct iovec *iov, int iovcnt) in iobuf_queuev() argument
298 if ((buf = iobuf_reserve(io, len)) == NULL) in iobuf_queuev()
313 iobuf_fqueue(struct iobuf *io, const char *fmt, ...) in iobuf_fqueue() argument
319 len = iobuf_vfqueue(io, fmt, ap); in iobuf_fqueue()
326 iobuf_vfqueue(struct iobuf *io, const char *fmt, va_list ap) in iobuf_vfqueue() argument
336 len = iobuf_queue(io, buf, len); in iobuf_vfqueue()
343 iobuf_write(struct iobuf *io, int fd) in iobuf_write() argument
351 for (q = io->outq; q ; q = q->next) { in iobuf_write()
368 iobuf_drain(io, n); in iobuf_write()
374 iobuf_flush(struct iobuf *io, int fd) in iobuf_flush() argument
378 while (io->queued) in iobuf_flush()
379 if ((s = iobuf_write(io, fd)) < 0) in iobuf_flush()
388 iobuf_flush_tls(struct iobuf *io, struct tls *tls) in iobuf_flush_tls() argument
392 while (io->queued) in iobuf_flush_tls()
393 if ((s = iobuf_write_tls(io, tls)) < 0) in iobuf_flush_tls()
400 iobuf_write_tls(struct iobuf *io, struct tls *tls) in iobuf_write_tls() argument
405 q = io->outq; in iobuf_write_tls()
417 iobuf_drain(io, n); in iobuf_write_tls()
423 iobuf_read_tls(struct iobuf *io, struct tls *tls) in iobuf_read_tls() argument
427 n = tls_read(tls, io->buf + io->wpos, iobuf_left(io)); in iobuf_read_tls()
437 io->wpos += n; in iobuf_read_tls()