Lines Matching refs:stream

63                            libxl__stream_write_state *stream);
65 libxl__stream_write_state *stream, int rc);
67 libxl__stream_write_state *stream, int rc);
69 libxl__stream_write_state *stream,
72 libxl__stream_write_state *stream, int rc);
79 libxl__stream_write_state *stream);
82 libxl__stream_write_state *stream);
84 libxl__stream_write_state *stream);
86 libxl__stream_write_state *stream);
91 libxl__stream_write_state *stream);
93 libxl__stream_write_state *stream);
97 libxl__stream_write_state *stream);
99 libxl__stream_write_state *stream);
103 libxl__stream_write_state *stream);
105 libxl__stream_write_state *stream, int rc);
115 libxl__stream_write_state *stream, in setup_generic_write() argument
124 libxl__datacopier_state *dc = &stream->dc; in setup_generic_write()
127 assert(stream->record_done_callback == NULL); in setup_generic_write()
135 stream_complete(egc, stream, rc); in setup_generic_write()
160 stream->record_done_callback = cb; in setup_generic_write()
165 libxl__stream_write_state *stream, in setup_write() argument
171 setup_generic_write(egc, stream, what, hdr, NULL, body, cb); in setup_write()
176 libxl__stream_write_state *stream, in setup_emulator_write() argument
183 assert(stream->emu_sub_hdr.id != EMULATOR_UNKNOWN); in setup_emulator_write()
184 setup_generic_write(egc, stream, what, hdr, emu_hdr, body, cb); in setup_emulator_write()
192 libxl__stream_write_state *stream = CONTAINER_OF(dc, *stream, dc); in write_done() local
193 STATE_AO_GC(stream->ao); in write_done()
194 sws_record_done_cb cb = stream->record_done_callback; in write_done()
196 stream->record_done_callback = NULL; in write_done()
199 stream_complete(egc, stream, rc ?: ERROR_FAIL); in write_done()
201 cb(egc, stream); in write_done()
206 void libxl__stream_write_init(libxl__stream_write_state *stream) in libxl__stream_write_init() argument
208 assert(stream->ao); in libxl__stream_write_init()
210 stream->shs.ao = stream->ao; in libxl__stream_write_init()
211 libxl__save_helper_init(&stream->shs); in libxl__stream_write_init()
213 stream->rc = 0; in libxl__stream_write_init()
214 stream->running = false; in libxl__stream_write_init()
215 stream->in_checkpoint = false; in libxl__stream_write_init()
216 stream->sync_teardown = false; in libxl__stream_write_init()
217 FILLZERO(stream->dc); in libxl__stream_write_init()
218 stream->record_done_callback = NULL; in libxl__stream_write_init()
219 FILLZERO(stream->emu_dc); in libxl__stream_write_init()
220 stream->emu_carefd = NULL; in libxl__stream_write_init()
221 FILLZERO(stream->emu_rec_hdr); in libxl__stream_write_init()
222 FILLZERO(stream->emu_sub_hdr); in libxl__stream_write_init()
223 stream->emu_body = NULL; in libxl__stream_write_init()
224 stream->device_model_version = LIBXL_DEVICE_MODEL_VERSION_UNKNOWN; in libxl__stream_write_init()
228 libxl__stream_write_state *stream) in libxl__stream_write_start() argument
230 libxl__datacopier_state *dc = &stream->dc; in libxl__stream_write_start()
231 libxl__domain_save_state *dss = stream->dss; in libxl__stream_write_start()
232 STATE_AO_GC(stream->ao); in libxl__stream_write_start()
236 libxl__stream_write_init(stream); in libxl__stream_write_start()
238 stream->running = true; in libxl__stream_write_start()
244 dc->writefd = stream->fd; in libxl__stream_write_start()
248 if (stream->back_channel) in libxl__stream_write_start()
252 stream->device_model_version = in libxl__stream_write_start()
254 switch (stream->device_model_version) { in libxl__stream_write_start()
256 stream->emu_sub_hdr.id = EMULATOR_QEMU_TRADITIONAL; in libxl__stream_write_start()
260 stream->emu_sub_hdr.id = EMULATOR_QEMU_UPSTREAM; in libxl__stream_write_start()
268 stream->emu_sub_hdr.index = 0; in libxl__stream_write_start()
285 stream_complete(egc, stream, rc); in libxl__stream_write_start()
289 libxl__stream_write_state *stream) in libxl__stream_write_start_checkpoint() argument
291 assert(stream->running); in libxl__stream_write_start_checkpoint()
292 assert(!stream->in_checkpoint); in libxl__stream_write_start_checkpoint()
293 assert(!stream->back_channel); in libxl__stream_write_start_checkpoint()
294 stream->in_checkpoint = true; in libxl__stream_write_start_checkpoint()
296 write_emulator_xenstore_record(egc, stream); in libxl__stream_write_start_checkpoint()
300 libxl__stream_write_state *stream, int rc) in libxl__stream_write_abort() argument
304 if (stream->running) in libxl__stream_write_abort()
305 stream_complete(egc, stream, rc); in libxl__stream_write_abort()
314 libxl__stream_write_state *stream = CONTAINER_OF(dc, *stream, dc); in stream_header_done() local
315 STATE_AO_GC(stream->ao); in stream_header_done()
319 stream_complete(egc, stream, rc ?: ERROR_FAIL); in stream_header_done()
326 setup_write(egc, stream, "libxc header", in stream_header_done()
331 libxl__stream_write_state *stream) in libxc_header_done() argument
333 libxl__xc_domain_save(egc, stream->dss, &stream->shs); in libxc_header_done()
340 libxl__stream_write_state *stream = &dss->sws; in libxl__xc_domain_save_done() local
361 check_all_finished(egc, stream, rc); in libxl__xc_domain_save_done()
369 if (libxl__stream_write_inuse(stream)) { in libxl__xc_domain_save_done()
377 stream_complete(egc, stream, 0); in libxl__xc_domain_save_done()
379 write_emulator_xenstore_record(egc, stream); in libxl__xc_domain_save_done()
384 libxl__stream_write_state *stream) in write_emulator_xenstore_record() argument
386 libxl__domain_save_state *dss = stream->dss; in write_emulator_xenstore_record()
387 STATE_AO_GC(stream->ao); in write_emulator_xenstore_record()
394 emulator_xenstore_record_done(egc, stream); in write_emulator_xenstore_record()
404 emulator_xenstore_record_done(egc, stream); in write_emulator_xenstore_record()
410 rec.length = len + sizeof(stream->emu_sub_hdr); in write_emulator_xenstore_record()
412 setup_emulator_write(egc, stream, "emulator xenstore record", in write_emulator_xenstore_record()
413 &rec, &stream->emu_sub_hdr, buf, in write_emulator_xenstore_record()
419 stream_complete(egc, stream, rc); in write_emulator_xenstore_record()
423 libxl__stream_write_state *stream) in emulator_xenstore_record_done() argument
425 libxl__domain_save_state *dss = stream->dss; in emulator_xenstore_record_done()
428 write_emulator_context_record(egc, stream); in emulator_xenstore_record_done()
430 if (stream->in_checkpoint) in emulator_xenstore_record_done()
431 write_checkpoint_end_record(egc, stream); in emulator_xenstore_record_done()
433 write_end_record(egc, stream); in emulator_xenstore_record_done()
438 libxl__stream_write_state *stream) in write_emulator_context_record() argument
440 libxl__domain_save_state *dss = stream->dss; in write_emulator_context_record()
441 libxl__datacopier_state *dc = &stream->emu_dc; in write_emulator_context_record()
442 STATE_AO_GC(stream->ao); in write_emulator_context_record()
443 struct libxl__sr_rec_hdr *rec = &stream->emu_rec_hdr; in write_emulator_context_record()
448 emulator_context_record_done(egc, stream); in write_emulator_context_record()
457 stream->emu_carefd = libxl__carefd_opened(CTX, readfd); in write_emulator_context_record()
477 rec->length = st.st_size + sizeof(stream->emu_sub_hdr); in write_emulator_context_record()
478 stream->emu_body = libxl__malloc(NOGC, st.st_size); in write_emulator_context_record()
481 dc->ao = stream->ao; in write_emulator_context_record()
487 dc->readbuf = stream->emu_body; in write_emulator_context_record()
499 stream_complete(egc, stream, rc); in write_emulator_context_record()
506 libxl__stream_write_state *stream = CONTAINER_OF(dc, *stream, emu_dc); in emulator_context_read_done() local
507 STATE_AO_GC(stream->ao); in emulator_context_read_done()
510 stream_complete(egc, stream, rc ?: ERROR_FAIL); in emulator_context_read_done()
514 libxl__carefd_close(stream->emu_carefd); in emulator_context_read_done()
515 stream->emu_carefd = NULL; in emulator_context_read_done()
517 setup_emulator_write(egc, stream, "emulator record", in emulator_context_read_done()
518 &stream->emu_rec_hdr, in emulator_context_read_done()
519 &stream->emu_sub_hdr, in emulator_context_read_done()
520 stream->emu_body, in emulator_context_read_done()
525 libxl__stream_write_state *stream) in emulator_context_record_done() argument
527 free(stream->emu_body); in emulator_context_record_done()
528 stream->emu_body = NULL; in emulator_context_record_done()
530 if (stream->in_checkpoint) in emulator_context_record_done()
531 write_checkpoint_end_record(egc, stream); in emulator_context_record_done()
533 write_end_record(egc, stream); in emulator_context_record_done()
537 libxl__stream_write_state *stream) in write_end_record() argument
544 setup_write(egc, stream, "end record", in write_end_record()
549 libxl__stream_write_state *stream) in write_checkpoint_end_record() argument
556 setup_write(egc, stream, "checkpoint end record", in write_checkpoint_end_record()
561 libxl__stream_write_state *stream) in checkpoint_end_record_done() argument
563 checkpoint_done(egc, stream, 0); in checkpoint_end_record_done()
568 static void stream_success(libxl__egc *egc, libxl__stream_write_state *stream) in stream_success() argument
570 stream_complete(egc, stream, 0); in stream_success()
574 libxl__stream_write_state *stream, int rc) in stream_complete() argument
576 assert(stream->running); in stream_complete()
578 if (stream->in_checkpoint) { in stream_complete()
586 checkpoint_done(egc, stream, rc); in stream_complete()
590 if (stream->in_checkpoint_state) { in stream_complete()
601 checkpoint_state_done(egc, stream, rc); in stream_complete()
605 stream_done(egc, stream, rc); in stream_complete()
609 libxl__stream_write_state *stream, int rc) in stream_done() argument
611 assert(stream->running); in stream_done()
612 assert(!stream->in_checkpoint_state); in stream_done()
613 stream->running = false; in stream_done()
615 if (stream->emu_carefd) in stream_done()
616 libxl__carefd_close(stream->emu_carefd); in stream_done()
617 free(stream->emu_body); in stream_done()
619 if (!stream->back_channel) { in stream_done()
628 check_all_finished(egc, stream, rc); in stream_done()
633 libxl__stream_write_state *stream, in checkpoint_done() argument
636 assert(stream->in_checkpoint); in checkpoint_done()
638 stream->in_checkpoint = false; in checkpoint_done()
639 stream->checkpoint_callback(egc, stream, rc); in checkpoint_done()
643 libxl__stream_write_state *stream, in check_all_finished() argument
646 STATE_AO_GC(stream->ao); in check_all_finished()
662 if (stream->sync_teardown) in check_all_finished()
665 if (!stream->rc && rc) { in check_all_finished()
667 stream->rc = rc; in check_all_finished()
668 stream->sync_teardown = true; in check_all_finished()
670 libxl__stream_write_abort(egc, stream, rc); in check_all_finished()
671 libxl__save_helper_abort(egc, &stream->shs); in check_all_finished()
673 stream->sync_teardown = false; in check_all_finished()
677 if (libxl__stream_write_inuse(stream) || in check_all_finished()
678 libxl__save_helper_inuse(&stream->shs)) in check_all_finished()
681 if (stream->completion_callback) in check_all_finished()
683 stream->completion_callback(egc, stream, stream->rc); in check_all_finished()
689 libxl__stream_write_state *stream, in libxl__stream_write_checkpoint_state() argument
694 assert(stream->running); in libxl__stream_write_checkpoint_state()
695 assert(!stream->in_checkpoint); in libxl__stream_write_checkpoint_state()
696 assert(!stream->in_checkpoint_state); in libxl__stream_write_checkpoint_state()
697 stream->in_checkpoint_state = true; in libxl__stream_write_checkpoint_state()
703 setup_write(egc, stream, "checkpoint state", &rec, in libxl__stream_write_checkpoint_state()
708 libxl__stream_write_state *stream) in write_checkpoint_state_done() argument
710 checkpoint_state_done(egc, stream, 0); in write_checkpoint_state_done()
714 libxl__stream_write_state *stream, int rc) in checkpoint_state_done() argument
716 assert(stream->in_checkpoint_state); in checkpoint_state_done()
717 stream->in_checkpoint_state = false; in checkpoint_state_done()
718 stream->checkpoint_callback(egc, stream, rc); in checkpoint_state_done()