char-mux: Use separate input buffers (Jan Kiszka)

Currently, the intermediate input buffer of mux'ed character devices
records data across all sub-devices. This has the side effect that we
easily leak data recorded over one sub-devices to another once we switch
the focus. Avoid data loss and confusion by defining exclusive buffers.

Note: In contrast to the original author's claim, the buffering concept
still breaks down when the fifo of the currently active sub-device is
full. As we cannot accept futher data from this point on without risking
to loose it, we will also miss escape sequences, just like without all
that buffering. In short: There is no reliable escape sequence handling
without infinite buffers or the risk of loosing some data.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6701 c046a42c-6fe2-441c-8c8c-71466251a162
1 file changed
tree: 7b31a1ca28f33bd96158474d0303ae0fcf1634e6
  1. audio/
  2. bsd-user/
  3. darwin-user/
  4. fpu/
  5. gdb-xml/
  6. hw/
  7. keymaps/
  8. linux-user/
  9. pc-bios/
  10. slirp/
  11. target-alpha/
  12. target-arm/
  13. target-cris/
  14. target-i386/
  15. target-m68k/
  16. target-mips/
  17. target-ppc/
  18. target-sh4/
  19. target-sparc/
  20. tcg/
  21. tests/
  22. .gitignore
  23. a.out.h
  24. aes.c
  25. aes.h
  26. aio.c
  27. alpha-dis.c
  28. alpha.ld
  29. arm-dis.c
  30. arm-semi.c
  31. arm.ld
  32. balloon.h
  33. block-bochs.c
  34. block-cloop.c
  35. block-cow.c
  36. block-dmg.c
  37. block-nbd.c
  38. block-parallels.c
  39. block-qcow.c
  40. block-qcow2.c
  41. block-raw-posix.c
  42. block-raw-win32.c
  43. block-vmdk.c
  44. block-vpc.c
  45. block-vvfat.c
  46. block.c
  47. block.h
  48. block_int.h
  49. bswap.h
  50. bt-host.c
  51. bt-vhci.c
  52. buffered_file.c
  53. buffered_file.h
  54. cache-utils.c
  55. cache-utils.h
  56. Changelog
  57. cocoa.m
  58. configure
  59. console.c
  60. console.h
  61. COPYING
  62. COPYING.LIB
  63. cpu-all.h
  64. cpu-defs.h
  65. cpu-exec.c
  66. cris-dis.c
  67. curses.c
  68. curses_keys.h
  69. cutils.c
  70. d3des.c
  71. d3des.h
  72. def-helper.h
  73. device_tree.c
  74. device_tree.h
  75. dis-asm.h
  76. disas.c
  77. disas.h
  78. dma-helpers.c
  79. dma.h
  80. dyngen-exec.h
  81. elf.h
  82. elf_ops.h
  83. exec-all.h
  84. exec.c
  85. feature_to_c.sh
  86. gdbstub.c
  87. gdbstub.h
  88. gen-icount.h
  89. host-utils.c
  90. host-utils.h
  91. hostregs_helper.h
  92. hpet.h
  93. hppa-dis.c
  94. hppa.ld
  95. i386-dis.c
  96. i386.ld
  97. ia64.ld
  98. keymaps.c
  99. kqemu.c
  100. kqemu.h
  101. kvm-all.c
  102. kvm.h
  103. libfdt_env.h
  104. LICENSE
  105. loader.c
  106. m68k-dis.c
  107. m68k-semi.c
  108. m68k.ld
  109. MAINTAINERS
  110. Makefile
  111. Makefile.target
  112. migration-exec.c
  113. migration-tcp.c
  114. migration.c
  115. migration.h
  116. mips-dis.c
  117. mips.ld
  118. mipsel.ld
  119. monitor.c
  120. nbd.c
  121. nbd.h
  122. net-checksum.c
  123. net.c
  124. net.h
  125. osdep.c
  126. osdep.h
  127. pci-ids.txt
  128. posix-aio-compat.c
  129. posix-aio-compat.h
  130. ppc-dis.c
  131. ppc.ld
  132. ppc64.ld
  133. qemu-aio.h
  134. qemu-binfmt-conf.sh
  135. qemu-char.c
  136. qemu-char.h
  137. qemu-common.h
  138. qemu-doc.texi
  139. qemu-img.c
  140. qemu-img.texi
  141. qemu-lock.h
  142. qemu-log.h
  143. qemu-malloc.c
  144. qemu-nbd.c
  145. qemu-nbd.texi
  146. qemu-sockets.c
  147. qemu-tech.texi
  148. qemu-timer.h
  149. qemu-tool.c
  150. qemu_socket.h
  151. readline.c
  152. README
  153. rules.mak
  154. s390-dis.c
  155. s390.ld
  156. savevm.c
  157. sdl.c
  158. sdl_keysym.h
  159. sh4-dis.c
  160. softmmu-semi.h
  161. softmmu_defs.h
  162. softmmu_exec.h
  163. softmmu_header.h
  164. softmmu_template.h
  165. sparc-dis.c
  166. sparc.ld
  167. sparc64.ld
  168. sys-queue.h
  169. sysemu.h
  170. tap-win32.c
  171. texi2pod.pl
  172. thunk.c
  173. thunk.h
  174. TODO
  175. translate-all.c
  176. uboot_image.h
  177. usb-bsd.c
  178. usb-linux.c
  179. usb-stub.c
  180. VERSION
  181. vgafont.h
  182. vl.c
  183. vnc.c
  184. vnc.h
  185. vnc_keysym.h
  186. vnchextile.h
  187. x86_64.ld
  188. x_keymap.c
  189. x_keymap.h