Lines Matching +full:1000 +full:base +full:- +full:x

4  * Copyright (c) 2003-2008 Fabrice Bellard
31 #include "system/block-backend.h"
32 #include "qapi/qapi-commands-control.h"
33 #include "chardev-internal.h"
49 if (!d->timestamps) { in mux_chr_write()
50 ret = qemu_chr_fe_write(&d->chr, buf, len); in mux_chr_write()
56 if (d->linestart) { in mux_chr_write()
62 if (d->timestamps_start == -1) { in mux_chr_write()
63 d->timestamps_start = ti; in mux_chr_write()
65 ti -= d->timestamps_start; in mux_chr_write()
66 secs = ti / 1000; in mux_chr_write()
72 (int)(ti % 1000)); in mux_chr_write()
75 qemu_chr_fe_write_all(&d->chr, in mux_chr_write()
77 d->linestart = false; in mux_chr_write()
79 ret += qemu_chr_fe_write(&d->chr, buf + i, 1); in mux_chr_write()
81 d->linestart = true; in mux_chr_write()
90 "% x exit emulator\n\r",
91 "% s save disk data back to file (if -snapshot)\n\r",
99 int term_escape_char = 0x01; /* ctrl-a is used for escape */
103 char ebuf[15] = "Escape-Char"; in mux_print_help()
108 snprintf(ebuf, sizeof(ebuf), "C-%c", term_escape_char - 1 + 'a'); in mux_print_help()
111 "\n\rEscape-Char set to Ascii: 0x%02x\n\r\n\r", in mux_print_help()
131 CharBackend *be = d->backends[mux_nr]; in mux_chr_send_event()
133 if (be && be->chr_event) { in mux_chr_send_event()
134 be->chr_event(be->opaque, event); in mux_chr_send_event()
142 if (d->focus != -1) { in mux_chr_be_event()
143 mux_chr_send_event(d, d->focus, event); in mux_chr_be_event()
149 if (d->term_got_escape) { in mux_proc_byte()
150 d->term_got_escape = false; in mux_proc_byte()
159 case 'x': in mux_proc_byte()
176 assert(d->mux_bitset != 0); in mux_proc_byte()
178 bit = find_next_bit(&d->mux_bitset, MAX_MUX, d->focus + 1); in mux_proc_byte()
180 bit = find_next_bit(&d->mux_bitset, MAX_MUX, 0); in mux_proc_byte()
185 d->timestamps = !d->timestamps; in mux_proc_byte()
186 d->timestamps_start = -1; in mux_proc_byte()
187 d->linestart = false; in mux_proc_byte()
191 d->term_got_escape = true; in mux_proc_byte()
202 int m = d->focus; in mux_chr_accept_input()
203 CharBackend *be = d->backends[m]; in mux_chr_accept_input()
205 while (be && d->prod[m] != d->cons[m] && in mux_chr_accept_input()
206 be->chr_can_read && be->chr_can_read(be->opaque)) { in mux_chr_accept_input()
207 be->chr_read(be->opaque, in mux_chr_accept_input()
208 &d->buffer[m][d->cons[m]++ & MUX_BUFFER_MASK], 1); in mux_chr_accept_input()
215 int m = d->focus; in mux_chr_can_read()
216 CharBackend *be = d->backends[m]; in mux_chr_can_read()
218 if ((d->prod[m] - d->cons[m]) < MUX_BUFFER_SIZE) { in mux_chr_can_read()
222 if (be && be->chr_can_read) { in mux_chr_can_read()
223 return be->chr_can_read(be->opaque); in mux_chr_can_read()
233 int m = d->focus; in mux_chr_read()
234 CharBackend *be = d->backends[m]; in mux_chr_read()
241 if (d->prod[m] == d->cons[m] && in mux_chr_read()
242 be && be->chr_can_read && in mux_chr_read()
243 be->chr_can_read(be->opaque)) { in mux_chr_read()
244 be->chr_read(be->opaque, &buf[i], 1); in mux_chr_read()
246 d->buffer[m][d->prod[m]++ & MUX_BUFFER_MASK] = buf[i]; in mux_chr_read()
261 bit = -1; in mux_chr_send_all_event()
262 while ((bit = find_next_bit(&d->mux_bitset, MAX_MUX, bit + 1)) < MAX_MUX) { in mux_chr_send_all_event()
275 Chardev *chr = qemu_chr_fe_get_driver(&d->chr); in mux_chr_add_watch()
278 if (!cc->chr_add_watch) { in mux_chr_add_watch()
282 return cc->chr_add_watch(chr, cond); in mux_chr_add_watch()
290 bit = -1; in char_mux_finalize()
291 while ((bit = find_next_bit(&d->mux_bitset, MAX_MUX, bit + 1)) < MAX_MUX) { in char_mux_finalize()
292 CharBackend *be = d->backends[bit]; in char_mux_finalize()
293 be->chr = NULL; in char_mux_finalize()
294 d->backends[bit] = NULL; in char_mux_finalize()
296 d->mux_bitset = 0; in char_mux_finalize()
297 qemu_chr_fe_deinit(&d->chr, false); in char_mux_finalize()
305 qemu_chr_fe_set_handlers_full(&d->chr, in mux_chr_update_read_handlers()
311 chr->gcontext, true, false); in mux_chr_update_read_handlers()
319 QEMU_BUILD_BUG_ON(MAX_MUX > (sizeof(d->mux_bitset) * BITS_PER_BYTE)); in mux_chr_attach_frontend()
321 bit = find_next_zero_bit(&d->mux_bitset, MAX_MUX, 0); in mux_chr_attach_frontend()
326 d->parent.label); in mux_chr_attach_frontend()
330 d->mux_bitset |= (1ul << bit); in mux_chr_attach_frontend()
331 d->backends[bit] = b; in mux_chr_attach_frontend()
339 if (!(d->mux_bitset & (1ul << tag))) { in mux_chr_detach_frontend()
343 d->mux_bitset &= ~(1ul << tag); in mux_chr_detach_frontend()
344 d->backends[tag] = NULL; in mux_chr_detach_frontend()
353 assert(d->mux_bitset & (1ul << focus)); in mux_set_focus()
355 if (d->focus != -1) { in mux_set_focus()
356 mux_chr_send_event(d, d->focus, CHR_EVENT_MUX_OUT); in mux_set_focus()
359 d->focus = focus; in mux_set_focus()
360 chr->be = d->backends[focus]; in mux_set_focus()
361 mux_chr_send_event(d, d->focus, CHR_EVENT_MUX_IN); in mux_set_focus()
369 ChardevMux *mux = backend->u.mux.data; in qemu_chr_open_mux()
373 drv = qemu_chr_find(mux->chardev); in qemu_chr_open_mux()
375 error_setg(errp, "mux: base chardev %s not found", mux->chardev); in qemu_chr_open_mux()
379 d->focus = -1; in qemu_chr_open_mux()
384 qemu_chr_fe_init(&d->chr, drv, errp); in qemu_chr_open_mux()
397 backend->type = CHARDEV_BACKEND_KIND_MUX; in qemu_chr_parse_mux()
398 mux = backend->u.mux.data = g_new0(ChardevMux, 1); in qemu_chr_parse_mux()
400 mux->chardev = g_strdup(chardev); in qemu_chr_parse_mux()
404 * Called after processing of default and command-line-specified
408 * focus when initial command-line processing/machine init is
417 /* send OPENED to all already-attached FEs */ in open_muxes()
424 chr->be_open = 1; in open_muxes()
436 if (!chr->be_open && CHARDEV_IS_MUX(chr)) { in chardev_options_parsed_cb()
454 cc->parse = qemu_chr_parse_mux; in char_mux_class_init()
455 cc->open = qemu_chr_open_mux; in char_mux_class_init()
456 cc->chr_write = mux_chr_write; in char_mux_class_init()
457 cc->chr_accept_input = mux_chr_accept_input; in char_mux_class_init()
458 cc->chr_add_watch = mux_chr_add_watch; in char_mux_class_init()
459 cc->chr_be_event = mux_chr_be_event; in char_mux_class_init()
460 cc->chr_update_read_handler = mux_chr_update_read_handlers; in char_mux_class_init()