Commit 2d22959d61fa866d2bbe310b61539da98bb47917
Committed by
Anthony Liguori
1 parent
759754f0
mux-term: Localize timestamps
As we can have multiple multiplexed terminals, timestamp control and tracking should better take place per MuxDriver. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Showing
1 changed file
with
10 additions
and
10 deletions
qemu-char.c
| ... | ... | @@ -219,8 +219,6 @@ static CharDriverState *qemu_chr_open_null(void) |
| 219 | 219 | } |
| 220 | 220 | |
| 221 | 221 | /* MUX driver for serial I/O splitting */ |
| 222 | -static int term_timestamps; | |
| 223 | -static int64_t term_timestamps_start; | |
| 224 | 222 | #define MAX_MUX 4 |
| 225 | 223 | #define MUX_BUFFER_SIZE 32 /* Must be a power of 2. */ |
| 226 | 224 | #define MUX_BUFFER_MASK (MUX_BUFFER_SIZE - 1) |
| ... | ... | @@ -239,6 +237,8 @@ typedef struct { |
| 239 | 237 | unsigned char buffer[MAX_MUX][MUX_BUFFER_SIZE]; |
| 240 | 238 | int prod[MAX_MUX]; |
| 241 | 239 | int cons[MAX_MUX]; |
| 240 | + int timestamps; | |
| 241 | + int64_t timestamps_start; | |
| 242 | 242 | } MuxDriver; |
| 243 | 243 | |
| 244 | 244 | |
| ... | ... | @@ -246,7 +246,7 @@ static int mux_chr_write(CharDriverState *chr, const uint8_t *buf, int len) |
| 246 | 246 | { |
| 247 | 247 | MuxDriver *d = chr->opaque; |
| 248 | 248 | int ret; |
| 249 | - if (!term_timestamps) { | |
| 249 | + if (!d->timestamps) { | |
| 250 | 250 | ret = d->drv->chr_write(d->drv, buf, len); |
| 251 | 251 | } else { |
| 252 | 252 | int i; |
| ... | ... | @@ -260,9 +260,9 @@ static int mux_chr_write(CharDriverState *chr, const uint8_t *buf, int len) |
| 260 | 260 | int secs; |
| 261 | 261 | |
| 262 | 262 | ti = qemu_get_clock(rt_clock); |
| 263 | - if (term_timestamps_start == -1) | |
| 264 | - term_timestamps_start = ti; | |
| 265 | - ti -= term_timestamps_start; | |
| 263 | + if (d->timestamps_start == -1) | |
| 264 | + d->timestamps_start = ti; | |
| 265 | + ti -= d->timestamps_start; | |
| 266 | 266 | secs = ti / 1000; |
| 267 | 267 | snprintf(buf1, sizeof(buf1), |
| 268 | 268 | "[%02d:%02d:%02d.%03d] ", |
| ... | ... | @@ -357,10 +357,10 @@ static int mux_proc_byte(CharDriverState *chr, MuxDriver *d, int ch) |
| 357 | 357 | chr->focus = 0; |
| 358 | 358 | mux_chr_send_event(d, chr->focus, CHR_EVENT_MUX_IN); |
| 359 | 359 | break; |
| 360 | - case 't': | |
| 361 | - term_timestamps = !term_timestamps; | |
| 362 | - term_timestamps_start = -1; | |
| 363 | - break; | |
| 360 | + case 't': | |
| 361 | + d->timestamps = !d->timestamps; | |
| 362 | + d->timestamps_start = -1; | |
| 363 | + break; | |
| 364 | 364 | } |
| 365 | 365 | } else if (ch == term_escape_char) { |
| 366 | 366 | d->term_got_escape = 1; | ... | ... |