void run_main_b() { cbuf *cb1 ; cb1 = cbuf_init() ; cbuf_update(cb1, 60, 1.291) ; cbuf_update(cb1, 63, 1.287) ; cbuf_update(cb1, 63, 1.231) ; cbuf_update(cb1, 69, 1.229) ; cbuf_update(cb1, 72, 1.247) ; cbuf_update(cb1, 361, 1.291) ; cbuf_update(cb1, 411, 1.291) ; cbuf_update(cb1, 412, 1.281) ; cbuf_update(cb1, 413, 1.292) ; cbuf_update(cb1, 414, 1.284) ; cbuf_update(cb1, 414, 1.290) ; cbuf_update(cb1, 511, 1.241) ; cbuf_update(cb1, 512, 1.251) ; cbuf_update(cb1, 513, 1.232) ; cbuf_update(cb1, 514, 1.202) ; cbuf_update(cb1, 517, 1.119) ; cbuf_update(cb1, 551, 1.080) ; cbuf_update(cb1, 552, 1.081) ; cbuf_update(cb1, 553, 1.079) ; cbuf_update(cb1, 554, 1.088) ; cbuf_update(cb1, 561, 1.072) ; cbuf_update(cb1, 562, 1.113) ; cbuf_update(cb1, 563, 1.091) ; cbuf_update(cb1, 564, 1.092) ; cbuf_update(cb1, 571, 1.089) ; cbuf_update(cb1, 572, 1.073) ; cbuf_update(cb1, 573, 1.061) ; cbuf_update(cb1, 574, 1.111) ; cbuf_update(cb1, 581, 1.119) ; cbuf_update(cb1, 582, 1.123) ; cbuf_update(cb1, 583, 1.151) ; cbuf_update(cb1, 584, 1.153) ; cbuf_dump(cb1) ; double avg ; avg = cbuf_average(cb1) ; printf("Average rate = %f\n", avg) ; quote *q_start, *q_end ; q_start = cbuf_start(cb1) ; q_end = cbuf_end(cb1) ; printf("Start: time = %d, rate = %f\n", q_start->time, q_start->rate) ; printf("End: time = %d, rate = %f\n", q_end->time, q_end->rate) ; cbuf_stats(cb1) ; cbuf_delete(cb1) ; }
void cbufq_dump(cbufq_t *cbufq, FILE *fp) { unsigned i = 0; fprintf(fp, "cbufq[%p]: count %8u\n", cbufq, cbufq->cbufq_count); for (cbuf_t *cbuf = list_head(&cbufq->cbufq_bufs); cbuf != NULL; cbuf = list_next(&cbufq->cbufq_bufs, cbuf)) { fprintf(fp, "--- entry %8u ---\n", i++); cbuf_dump(cbuf, fp); } fprintf(fp, "cbufq[%p]: end\n\n", cbufq); }
void *cbuf_get(CBUF *b, int size, int *ret_datasize) { cbuf_lock(b); void *ret = NULL; int new_size = min(size, cbuf_size_to_end(b)); if (b->debug_get) { LOGf("1 cbuf_get(%s, %d) new_size: %d size_to_end: %d\n", b->name, size, new_size, cbuf_size_to_end(b)); cbuf_dump(b); } if (new_size <= 0) { // No data *ret_datasize = 0; ret = NULL; goto OUT; } *ret_datasize = new_size; ret = b->buffer + b->writepos; b->writepos += new_size; // Move writepos b->output += new_size; if (b->writepos > b->size) { LOGf("!!! b->writepos > b->size !!! size:%d new_size:%d\n", size, new_size); cbuf_dump(b); assert(b->writepos <= b->size); } if (b->writepos == b->size) // Buffer wraparound b->writepos = 0; OUT: if (b->debug_get) { LOGf("2 cbuf_get(%s, %d) new_size: %d size_to_end: %d ret_sz:%d\n", b->name, size, new_size, cbuf_size_to_end(b), *ret_datasize); cbuf_dump(b); b->debug_get = 0; } cbuf_unlock(b); return ret; }
void run_main_a() { cbuf *cb1 ; cb1 = cbuf_init() ; cbuf_update(cb1, 60, 1.291) ; cbuf_update(cb1, 63, 1.287) ; cbuf_update(cb1, 63, 1.231) ; cbuf_update(cb1, 69, 1.229) ; cbuf_update(cb1, 72, 1.247) ; cbuf_dump(cb1) ; cbuf_update(cb1, 361, 1.291) ; cbuf_dump(cb1) ; cbuf_update(cb1, 411, 1.291) ; cbuf_update(cb1, 412, 1.281) ; cbuf_update(cb1, 413, 1.292) ; cbuf_update(cb1, 414, 1.284) ; cbuf_update(cb1, 414, 1.290) ; cbuf_dump(cb1) ; cbuf_update(cb1, 511, 1.241) ; cbuf_update(cb1, 512, 1.251) ; cbuf_update(cb1, 513, 1.232) ; cbuf_update(cb1, 514, 1.202) ; cbuf_update(cb1, 517, 1.119) ; cbuf_dump(cb1) ; cbuf_update(cb1, 551, 1.080) ; cbuf_update(cb1, 552, 1.081) ; cbuf_update(cb1, 553, 1.079) ; cbuf_update(cb1, 554, 1.088) ; cbuf_update(cb1, 561, 1.072) ; cbuf_update(cb1, 562, 1.113) ; cbuf_update(cb1, 563, 1.091) ; cbuf_update(cb1, 564, 1.092) ; cbuf_update(cb1, 571, 1.089) ; cbuf_update(cb1, 572, 1.073) ; cbuf_update(cb1, 573, 1.061) ; cbuf_update(cb1, 574, 1.111) ; cbuf_update(cb1, 581, 1.119) ; cbuf_update(cb1, 582, 1.123) ; cbuf_update(cb1, 583, 1.151) ; cbuf_update(cb1, 584, 1.153) ; cbuf_dump(cb1) ; cbuf_update(cb1, 750, 1.200) ; cbuf_dump(cb1) ; cbuf_update(cb1, 818, 1.210) ; cbuf_dump(cb1) ; cbuf_update(cb1, 868, 1.230) ; cbuf_dump(cb1) ; cbuf_update(cb1, 878, 1.230) ; cbuf_dump(cb1) ; cbuf_update(cb1, 900, 1.240) ; cbuf_dump(cb1) ; cbuf_update(cb1, 2000, 1.240) ; cbuf_dump(cb1) ; }