Lines Matching refs:f

45 static int fifolog_write_gzip(struct fifolog_writer *f, time_t now);
66 fifolog_write_assert(const struct fifolog_writer *f) in fifolog_write_assert() argument
69 CHECK_OBJ_NOTNULL(f, FIFOLOG_WRITER_MAGIC); in fifolog_write_assert()
70 assert(f->ff->zs->next_out + f->ff->zs->avail_out == \ in fifolog_write_assert()
71 f->obuf + f->obufsize); in fifolog_write_assert()
81 struct fifolog_writer *f; in fifolog_write_new() local
83 ALLOC_OBJ(f, FIFOLOG_WRITER_MAGIC); in fifolog_write_new()
84 assert(f != NULL); in fifolog_write_new()
85 return (f); in fifolog_write_new()
89 fifolog_write_destroy(struct fifolog_writer *f) in fifolog_write_destroy() argument
92 free(f->obuf); in fifolog_write_destroy()
93 free(f->ibuf); in fifolog_write_destroy()
94 FREE_OBJ(f); in fifolog_write_destroy()
102 fifolog_write_close(struct fifolog_writer *f) in fifolog_write_close() argument
106 CHECK_OBJ_NOTNULL(f, FIFOLOG_WRITER_MAGIC); in fifolog_write_close()
107 fifolog_write_assert(f); in fifolog_write_close()
109 f->cleanup = 1; in fifolog_write_close()
111 fifolog_write_gzip(f, now); in fifolog_write_close()
112 fifolog_write_assert(f); in fifolog_write_close()
113 fifolog_int_close(&f->ff); in fifolog_write_close()
114 free(f->ff); in fifolog_write_close()
118 fifolog_write_open(struct fifolog_writer *f, const char *fn, in fifolog_write_open() argument
126 CHECK_OBJ_NOTNULL(f, FIFOLOG_WRITER_MAGIC); in fifolog_write_open()
132 f->writerate = writerate; in fifolog_write_open()
133 f->syncrate = syncrate; in fifolog_write_open()
134 f->compression = compression; in fifolog_write_open()
137 memset(f->cnt, 0, sizeof f->cnt); in fifolog_write_open()
139 es = fifolog_int_open(&f->ff, fn, 1); in fifolog_write_open()
142 es = fifolog_int_findend(f->ff, &o); in fifolog_write_open()
145 i = fifolog_int_read(f->ff, o); in fifolog_write_open()
148 f->seq = be32dec(f->ff->recbuf); in fifolog_write_open()
149 if (f->seq == 0) { in fifolog_write_open()
151 f->seq = random(); in fifolog_write_open()
153 f->recno = o + 1; in fifolog_write_open()
154 f->seq++; in fifolog_write_open()
157 f->obufsize = f->ff->recsize; in fifolog_write_open()
158 ALLOC(&f->obuf, f->obufsize); in fifolog_write_open()
160 f->ibufsize = f->obufsize * 10; in fifolog_write_open()
161 ALLOC(&f->ibuf, f->ibufsize); in fifolog_write_open()
162 f->ibufptr = 0; in fifolog_write_open()
164 i = deflateInit(f->ff->zs, (int)f->compression); in fifolog_write_open()
167 f->flag |= FIFOLOG_FLG_RESTART; in fifolog_write_open()
168 f->flag |= FIFOLOG_FLG_SYNC; in fifolog_write_open()
169 f->ff->zs->next_out = f->obuf + 9; in fifolog_write_open()
170 f->ff->zs->avail_out = f->obufsize - 9; in fifolog_write_open()
173 f->starttime = now; in fifolog_write_open()
174 f->lastsync = now; in fifolog_write_open()
175 f->lastwrite = now; in fifolog_write_open()
177 fifolog_write_assert(f); in fifolog_write_open()
187 fifolog_write_output(struct fifolog_writer *f, int fl, time_t now) in fifolog_write_output() argument
189 long h, l = f->ff->zs->next_out - f->obuf; in fifolog_write_output()
194 be32enc(f->obuf, f->seq); in fifolog_write_output()
195 f->obuf[h] = f->flag; in fifolog_write_output()
197 if (f->flag & FIFOLOG_FLG_SYNC) { in fifolog_write_output()
198 be32enc(f->obuf + h, now); in fifolog_write_output()
202 assert(l <= (long)f->ff->recsize); /* NB: l includes h */ in fifolog_write_output()
209 if (l < (long)f->ff->recsize && fl == Z_NO_FLUSH) in fifolog_write_output()
212 w = f->ff->recsize - l; in fifolog_write_output()
214 be32enc(f->obuf + f->ff->recsize - 4, w); in fifolog_write_output()
215 f->obuf[4] |= FIFOLOG_FLG_4BYTE; in fifolog_write_output()
217 f->obuf[f->ff->recsize - 1] = (uint8_t)w; in fifolog_write_output()
218 f->obuf[4] |= FIFOLOG_FLG_1BYTE; in fifolog_write_output()
221 f->cnt[FIFOLOG_PT_BYTES_POST] += l - h; in fifolog_write_output()
223 i = pwrite(f->ff->fd, f->obuf, f->ff->recsize, in fifolog_write_output()
224 (f->recno + 1) * f->ff->recsize); in fifolog_write_output()
225 if (i != f->ff->recsize) in fifolog_write_output()
230 f->cnt[FIFOLOG_PT_WRITES]++; in fifolog_write_output()
231 f->cnt[FIFOLOG_PT_RUNTIME] = now - f->starttime; in fifolog_write_output()
233 f->lastwrite = now; in fifolog_write_output()
238 f->seq++; in fifolog_write_output()
239 f->recno++; in fifolog_write_output()
240 f->flag = 0; in fifolog_write_output()
242 memset(f->obuf, 0, f->obufsize); in fifolog_write_output()
243 f->ff->zs->next_out = f->obuf + 5; in fifolog_write_output()
244 f->ff->zs->avail_out = f->obufsize - 5; in fifolog_write_output()
254 fifolog_write_gzip(struct fifolog_writer *f, time_t now) in fifolog_write_gzip() argument
259 if (f->cleanup || now >= (int)(f->lastsync + f->syncrate)) { in fifolog_write_gzip()
260 f->cleanup = 0; in fifolog_write_gzip()
262 f->cnt[FIFOLOG_PT_SYNC]++; in fifolog_write_gzip()
263 } else if (now >= (int)(f->lastwrite + f->writerate)) { in fifolog_write_gzip()
265 f->cnt[FIFOLOG_PT_FLUSH]++; in fifolog_write_gzip()
266 } else if (f->ibufptr == 0) in fifolog_write_gzip()
271 f->ff->zs->avail_in = f->ibufptr; in fifolog_write_gzip()
272 f->ff->zs->next_in = f->ibuf; in fifolog_write_gzip()
275 i = deflate(f->ff->zs, fl); in fifolog_write_gzip()
278 i = fifolog_write_output(f, fl, now); in fifolog_write_gzip()
284 assert(f->ff->zs->avail_in == 0); in fifolog_write_gzip()
285 f->ibufptr = 0; in fifolog_write_gzip()
287 f->flag |= FIFOLOG_FLG_SYNC; in fifolog_write_gzip()
288 f->ff->zs->next_out = f->obuf + 9; in fifolog_write_gzip()
289 f->ff->zs->avail_out = f->obufsize - 9; in fifolog_write_gzip()
290 f->lastsync = now; in fifolog_write_gzip()
291 assert(Z_OK == deflateReset(f->ff->zs)); in fifolog_write_gzip()
302 fifolog_write_poll(struct fifolog_writer *f, time_t now) in fifolog_write_poll() argument
307 return (fifolog_write_gzip(f, now)); in fifolog_write_poll()
316 fifolog_write_record(struct fifolog_writer *f, uint32_t id, time_t now, in fifolog_write_record() argument
323 fifolog_write_assert(f); in fifolog_write_record()
341 if (now != f->last) in fifolog_write_record()
355 if (bufl + len + f->ibufptr > f->ibufsize) in fifolog_write_record()
358 memcpy(f->ibuf + f->ibufptr, buf, bufl); in fifolog_write_record()
359 f->ibufptr += bufl; in fifolog_write_record()
360 memcpy(f->ibuf + f->ibufptr, p, len); in fifolog_write_record()
361 f->ibufptr += len; in fifolog_write_record()
362 f->cnt[FIFOLOG_PT_BYTES_PRE] += bufl + len; in fifolog_write_record()
365 f->last = now; in fifolog_write_record()
376 fifolog_write_record_poll(struct fifolog_writer *f, uint32_t id, time_t now, in fifolog_write_record_poll() argument
385 fifolog_write_assert(f); in fifolog_write_record_poll()
391 if (!fifolog_write_record(f, id, now, ptr, len)) { in fifolog_write_record_poll()
392 if (fifolog_write_gzip(f, now) < 0) in fifolog_write_record_poll()
395 if (!fifolog_write_record(f, id, now, ptr, len)) in fifolog_write_record_poll()
403 while (!fifolog_write_record(f, id, now, p, l)) in fifolog_write_record_poll()
404 if (fifolog_write_gzip(f, now) < 0) in fifolog_write_record_poll()
408 if (fifolog_write_gzip(f, now) < 0) in fifolog_write_record_poll()
410 fifolog_write_assert(f); in fifolog_write_record_poll()