static void buffered_rate_tick(void *opaque) { QEMUFileBuffered *s = opaque; if (qemu_file_get_error(s->file)) { buffered_close(s); return; } qemu_mod_timer(s->timer, qemu_get_clock_ms(rt_clock) + 100); if (s->freeze_output) return; s->bytes_xfer = 0; buffered_put_buffer(s, NULL, 0, 0); }
QEMUFile *qemu_fopen_ops_buffered(void *opaque, size_t bytes_per_sec, BufferedPutFunc *put_buffer, BufferedPutReadyFunc *put_ready, BufferedWaitForUnfreezeFunc *wait_for_unfreeze, BufferedCloseFunc *close) { // dummy functions & dummy calls buffered_append(NULL, NULL, 0); buffered_flush(NULL); buffered_put_buffer(opaque, NULL, 0, 0); buffered_close(opaque); buffered_rate_limit(opaque); buffered_set_rate_limit(opaque, 0); buffered_get_rate_limit(opaque); buffered_rate_tick(opaque); return NULL; }