Lines Matching full:d
47 MuxChardev *d = MUX_CHARDEV(chr); in mux_chr_write() local
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()
68 "[%02d:%02d:%02d.%03d] ", 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()
128 static void mux_chr_send_event(MuxChardev *d, unsigned int mux_nr, in mux_chr_send_event() argument
131 CharBackend *be = d->backends[mux_nr]; in mux_chr_send_event()
140 MuxChardev *d = MUX_CHARDEV(chr); in mux_chr_be_event() local
142 if (d->focus != -1) { in mux_chr_be_event()
143 mux_chr_send_event(d, d->focus, event); in mux_chr_be_event()
147 static int mux_proc_byte(Chardev *chr, MuxChardev *d, int ch) in mux_proc_byte() argument
149 if (d->term_got_escape) { in mux_proc_byte()
150 d->term_got_escape = false; 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()
201 MuxChardev *d = MUX_CHARDEV(chr); in mux_chr_accept_input() local
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()
208 &d->buffer[m][d->cons[m]++ & MUX_BUFFER_MASK], 1); in mux_chr_accept_input()
214 MuxChardev *d = MUX_CHARDEV(opaque); in mux_chr_can_read() local
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()
232 MuxChardev *d = MUX_CHARDEV(opaque); in mux_chr_read() local
233 int m = d->focus; in mux_chr_read()
234 CharBackend *be = d->backends[m]; in mux_chr_read()
240 if (mux_proc_byte(chr, d, buf[i])) { in mux_chr_read()
241 if (d->prod[m] == d->cons[m] && in mux_chr_read()
246 d->buffer[m][d->prod[m]++ & MUX_BUFFER_MASK] = buf[i]; in mux_chr_read()
253 MuxChardev *d = MUX_CHARDEV(chr); in mux_chr_send_all_event() local
262 while ((bit = find_next_bit(&d->mux_bitset, MAX_MUX, bit + 1)) < MAX_MUX) { in mux_chr_send_all_event()
263 mux_chr_send_event(d, bit, event); in mux_chr_send_all_event()
274 MuxChardev *d = MUX_CHARDEV(s); in mux_chr_add_watch() local
275 Chardev *chr = qemu_chr_fe_get_driver(&d->chr); in mux_chr_add_watch()
287 MuxChardev *d = MUX_CHARDEV(obj); in char_mux_finalize() local
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()
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()
302 MuxChardev *d = MUX_CHARDEV(chr); in mux_chr_update_read_handlers() local
305 qemu_chr_fe_set_handlers_full(&d->chr, in mux_chr_update_read_handlers()
314 bool mux_chr_attach_frontend(MuxChardev *d, CharBackend *b, in mux_chr_attach_frontend() argument
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()
337 bool mux_chr_detach_frontend(MuxChardev *d, unsigned int tag) in mux_chr_detach_frontend() argument
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()
351 MuxChardev *d = MUX_CHARDEV(chr); in mux_set_focus() local
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()
371 MuxChardev *d = MUX_CHARDEV(chr); in qemu_chr_open_mux() local
379 d->focus = -1; in qemu_chr_open_mux()
384 qemu_chr_fe_init(&d->chr, drv, errp); in qemu_chr_open_mux()