| /* This file is included from monitor.c, it's purpose is to hold as much |
| * Android-specific stuff as possible to ease upstream integrations. |
| */ |
| |
| Monitor* |
| monitor_fake_new(void* opaque, MonitorFakeFunc cb) |
| { |
| Monitor* mon; |
| |
| assert(cb != NULL); |
| mon = qemu_mallocz(sizeof(*mon)); |
| mon->fake_opaque = opaque; |
| mon->fake_func = cb; |
| mon->fake_count = 0; |
| |
| return mon; |
| } |
| |
| int |
| monitor_fake_get_bytes(Monitor* mon) |
| { |
| assert(mon->fake_func != NULL); |
| return mon->fake_count; |
| } |
| |
| void |
| monitor_fake_free(Monitor* mon) |
| { |
| assert(mon->fake_func != NULL); |
| free(mon); |
| } |
| |
| /* This replaces the definition in monitor.c which is in a |
| * #ifndef CONFIG_ANDROID .. #endif block. |
| */ |
| void monitor_flush(Monitor *mon) |
| { |
| if (!mon) |
| return; |
| |
| if (mon->fake_func != NULL) { |
| mon->fake_func(mon->fake_opaque, (void*)mon->outbuf, mon->outbuf_index); |
| mon->outbuf_index = 0; |
| mon->fake_count += mon->outbuf_index; |
| } else if (!mon->mux_out) { |
| qemu_chr_write(mon->chr, mon->outbuf, mon->outbuf_index); |
| mon->outbuf_index = 0; |
| } |
| } |