Original Xbox Emulator for Windows, macOS, and Linux (Active Development)
Go to file
Mark McLoughlin f3b6c7fcf8 net: add qemu_send_packet_async()
Add a qemu_send_packet() variant which will queue up the packet
if it cannot be sent when all client queues are full. It later
invokes the supplied callback when the packet has been sent.

If qemu_send_packet_async() returns zero, the caller is expected
to not send any more packets until the queued packet has been
sent.

Packets are queued iff a receive() handler returns zero (indicating
queue full) and the caller has provided a sent notification callback
(indicating it will stop and start its own queue).

We need the packet sending API to support queueing because:

  - a sending client should process all available packets in one go
    (e.g. virtio-net emptying its tx ring)

  - a receiving client may not be able to handle the packet
    (e.g. -EAGAIN from write() to tapfd)

  - the sending client could detect this condition in advance
    (e.g. by select() for writable on tapfd)

  - that's too much overhead (e.g. a select() call per packet)

  - therefore the sending client must handle the condition by
    dropping the packet or queueing it

  - dropping packets is poor form; we should queue.

However, we don't want queueing to be completely transparent. We
want the sending client to stop sending packets as soon as a
packet is queued. This allows the sending client to be throttled
by the receiver.

Signed-off-by: Mark McLoughlin <markmc@redhat.com>
2009-06-09 11:38:50 +01:00
audio Remove any pretense that there can be more than one AudioState 2009-05-14 03:20:43 +04:00
block qemu-img: Print available options with -o ? 2009-06-06 18:38:57 +03:00
bsd-user BSD user: initial support for i386 and x86_64 targets 2009-04-11 11:09:31 +00:00
darwin-user Replace gcc variadic macro extension with C99 version 2009-05-13 17:53:17 +00:00
fpu Fix OpenSolaris gcc4 warnings: iovec type mismatches, missing 'static' 2009-04-13 16:31:01 +00:00
gdb-xml Work around QEMU GDB stub suboptimality 2009-03-07 22:00:56 +00:00
hw net: add return value to packet receive handler 2009-06-09 11:38:49 +01:00
linux-user fix gdbstub support for multiple threads in usermode, v3 2009-06-04 10:04:49 +01:00
pc-bios microblaze: Fix loading of petalogix s3adsp1800 dtb. 2009-06-03 21:54:31 +02:00
slirp slirp: Reorder initialization 2009-06-09 11:38:49 +01:00
target-alpha qemu: introduce qemu_init_vcpu (Marcelo Tosatti) 2009-04-24 18:03:41 +00:00
target-arm Convert machine registration to use module init functions 2009-05-21 08:47:55 -05:00
target-cris CRIS: Remove duplicated flag defines. 2009-06-03 22:48:05 +02:00
target-i386 x86: Add support for resume flag 2009-05-22 10:50:37 -05:00
target-m68k Convert machine registration to use module init functions 2009-05-21 08:47:55 -05:00
target-microblaze microblaze: Make writes to MMU_ZPR flush the TLB. 2009-05-27 01:19:58 +02:00
target-mips Convert machine registration to use module init functions 2009-05-21 08:47:55 -05:00
target-ppc kvm: Add missing bits to support live migration 2009-05-22 10:50:33 -05:00
target-sh4 Convert machine registration to use module init functions 2009-05-21 08:47:55 -05:00
target-sparc Use correct type for SPARC cpu_cc_op 2009-06-06 02:54:03 +01:00
tcg Include assert.h from qemu-common.h 2009-05-13 20:54:26 +01:00
tests Replace gcc variadic macro extension with C99 version 2009-05-13 17:53:17 +00:00
.gitignore Use hxtool for qemu-img command list 2009-06-07 09:59:47 +03:00
a.out.h Remove unnecessary trailing newlines 2008-12-13 09:32:43 +00:00
acl.c Remove tabs introduced from VNC ACL series 2009-03-06 20:27:40 +00:00
acl.h Support ACLs for controlling VNC access ("Daniel P. Berrange") 2009-03-06 20:27:37 +00:00
aes.c Include assert.h from qemu-common.h 2009-05-13 20:54:26 +01:00
aes.h
aio.c AIO deletion race fix 2009-05-08 15:24:10 -05:00
alpha-dis.c Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
alpha.ld
arm-dis.c clean build: Fix arm build warnings 2009-03-07 21:48:00 +00:00
arm-semi.c Fix more FSF addresses 2009-01-05 18:11:53 +00:00
arm.ld Link ARM prologue closer to code segment to avoid a build failure 2008-07-10 17:21:31 +00:00
balloon.h Add missing file from previous commit. 2008-12-04 20:35:16 +00:00
block_int.h fully split aio_pool from BlockDriver 2009-05-27 09:46:03 -05:00
block.c fully split aio_pool from BlockDriver 2009-05-27 09:46:03 -05:00
block.h Convert all block drivers to new bdrv_create 2009-05-22 10:50:31 -05:00
bswap.h Sparse fixes: truncation by cast 2009-03-07 15:46:23 +00:00
bt-host.c Fix OpenSolaris gcc4 warnings: iovec type mismatches, missing 'static' 2009-04-13 16:31:01 +00:00
bt-host.h Clean build: Add bt-host.h 2009-03-10 21:43:35 +00:00
bt-vhci.c Sparse fixes: NULL use, header order, ANSI prototypes, static 2009-03-07 15:32:56 +00:00
buffered_file.c introduce set_rate_limit function for QEMUFile 2009-05-22 10:50:30 -05:00
buffered_file.h Introduce a buffered file wrapper for QEMUFile 2008-10-13 03:10:22 +00:00
cache-utils.c Properly initialize len argument of sysctl and include stdio.h (perror) 2009-02-04 20:39:09 +00:00
cache-utils.h Remove all traces of __powerpc__ 2009-01-14 18:39:49 +00:00
Changelog Update Changelog to reflect 0.10.2 release 2009-04-07 02:19:41 +00:00
cmd.c Fix a few Sparse warnings 2009-04-07 17:57:09 +00:00
cmd.h Fix a few Sparse warnings 2009-04-07 17:57:09 +00:00
cocoa.m Update cocoa.m to match new DisplayState code (Samuel Benson) 2009-03-04 19:25:22 +00:00
CODING_STYLE Remove potentially offensive humor. 2009-04-07 02:10:16 +00:00
configure kvm: Improve upgrade notes when facing unsupported kernels 2009-06-07 16:40:22 +03:00
console.c Delete some unused macros detected with -Wp,-Wunused-macros use 2009-03-16 16:33:01 +00:00
console.h Eliminate --disable-gfx-check and make VNC default when SDL not available 2009-05-21 08:47:48 -05:00
COPYING COPYING: update from FSF 2008-10-12 17:54:42 +00:00
COPYING.LIB Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
cpu-all.h kvm: Rework dirty bitmap synchronization 2009-05-22 10:50:33 -05:00
cpu-common.h Hardware convenience library 2009-05-19 16:17:58 +01:00
cpu-defs.h fix gdbstub support for multiple threads in usermode, v3 2009-06-04 10:04:49 +01:00
cpu-exec.c microblaze: linux-user support. 2009-05-26 21:10:28 +02:00
cris-dis.c toplevel: remove error handling from qemu_malloc() callers (Avi Kivity) 2009-02-05 22:06:18 +00:00
curses_keys.h Sparse fixes: remove duplicate entry 2009-03-07 15:53:15 +00:00
curses.c DisplayAllocator interface (Stefano Stabellini) 2009-03-13 15:02:13 +00:00
cutils.c Include assert.h from qemu-common.h 2009-05-13 20:54:26 +01:00
d3des.c Ansify to please sparse 2008-10-27 19:49:12 +00:00
d3des.h
def-helper.h Remove unnecessary trailing newlines 2008-12-13 09:32:43 +00:00
device_tree.c Remove unused variable 2009-05-24 21:24:33 +01:00
device_tree.h Wean device tree code off phys_ram_base. 2009-04-10 16:23:59 +00:00
dis-asm.h microblaze: Add disassembler. 2009-05-26 21:10:28 +02:00
disas.c microblaze: Add disassembler. 2009-05-26 21:10:28 +02:00
disas.h monitor: Rework API (Jan Kiszka) 2009-03-05 23:01:23 +00:00
dma-helpers.c fully split aio_pool from BlockDriver 2009-05-27 09:46:03 -05:00
dma.h fully split aio_pool from BlockDriver 2009-05-27 09:46:03 -05:00
dyngen-exec.h Use stdint.h for integral data types and definitions 2009-04-08 22:56:19 +00:00
elf_ops.h Fix elf loader range checking 2009-06-05 15:16:41 +01:00
elf.h microblaze: linux-user support. 2009-05-26 21:10:28 +02:00
exec-all.h kqemu: merge CONFIG_KQEMU and USE_KQEMU 2009-04-19 10:18:01 +00:00
exec.c fix gdbstub support for multiple threads in usermode, v3 2009-06-04 10:04:49 +01:00
feature_to_c.sh Fix undeclared symbol warnings from sparse 2008-10-26 13:43:07 +00:00
gdbstub.c fix gdbstub support for multiple threads in usermode, v3 2009-06-04 10:04:49 +01:00
gdbstub.h Guest debugging support for KVM (Jan Kiszka) 2009-03-12 20:12:48 +00:00
gen-icount.h Remove unnecessary trailing newlines 2008-12-13 09:32:43 +00:00
host-utils.c
host-utils.h Include <strings.h> for ffs(). 2008-11-12 17:18:41 +00:00
hostregs_helper.h Prune unused AREGs 2009-03-08 12:41:36 +00:00
hpet.h
hppa-dis.c
hppa.ld
hxtool Fix hxtool eating backslash sequences for sh != bash 2009-03-29 10:50:43 +00:00
i386-dis.c Update i386-dis.c from commits before GPLv3 switch 2009-03-07 16:57:53 +00:00
i386.ld
ia64.ld
keymaps.c Use relative path for bios 2009-05-30 01:59:37 +01:00
keymaps.h Add missing file from previous commit 2009-03-06 22:47:54 +00:00
kqemu.c kqemu: merge CONFIG_KQEMU and USE_KQEMU 2009-04-19 10:18:01 +00:00
kqemu.h
kvm-all.c kvm: Improve upgrade notes when facing unsupported kernels 2009-06-07 16:40:22 +03:00
kvm.h kvm: x86: Save/restore KVM-specific CPU states 2009-05-22 10:50:34 -05:00
libfdt_env.h Implement device tree support needed for Bamboo emulation 2008-12-16 10:43:48 +00:00
LICENSE Add missing newline at the end of file 2008-12-14 08:50:18 +00:00
loader.c Delete some unused macros detected with -Wp,-Wunused-macros use 2009-03-16 16:33:01 +00:00
m68k-dis.c Spelling and grammar fixes 2008-11-30 16:25:37 +00:00
m68k-semi.c Fix more FSF addresses 2009-01-05 18:11:53 +00:00
m68k.ld
MAINTAINERS Update maintainer list. 2009-05-28 14:00:49 +02:00
Makefile Use hxtool for qemu-img command list 2009-06-07 09:59:47 +03:00
Makefile.hw Add dummy command to submakefiles 2009-05-25 18:56:13 +01:00
Makefile.target Use hxtool to generate monitor documentation and C structures 2009-06-06 08:22:04 +00:00
microblaze-dis.c microblaze: Add disassembler. 2009-05-26 21:10:28 +02:00
migration-exec.c Allow monitor interaction when using migrate -exec 2009-05-27 09:46:07 -05:00
migration-tcp.c Cast pointer arguments of get/setsockopt, send to void * to keep GCC 2009-05-21 05:30:51 +04:00
migration.c allow changing the speed of a running migration 2009-05-22 10:50:31 -05:00
migration.h monitor: Decouple terminals (Jan Kiszka) 2009-03-05 23:01:42 +00:00
mips-dis.c Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
mips.ld
mipsel.ld
module.c Fix module initialization when more than 1 class is in use 2009-05-14 18:06:49 -05:00
module.h Convert machine registration to use module init functions 2009-05-21 08:47:55 -05:00
monitor.c Use hxtool to generate monitor documentation and C structures 2009-06-06 08:22:04 +00:00
monitor.h monitor: Introduce MONITOR_USE_READLINE flag (Jan Kiszka) 2009-03-05 23:01:51 +00:00
nbd.c Cast pointer arguments of get/setsockopt, send to void * to keep GCC 2009-05-21 05:30:51 +04:00
nbd.h Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
net-checksum.c Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
net.c net: add qemu_send_packet_async() 2009-06-09 11:38:50 +01:00
net.h net: add qemu_send_packet_async() 2009-06-09 11:38:50 +01:00
osdep.c Add tool_osdep.c 2009-05-13 22:21:47 +01:00
osdep.h snapshot subcommand for qemu-img (Kevin Wolf) 2009-01-07 17:40:15 +00:00
pci-ids.txt List virtio console device in pci-ids.txt 2009-01-24 16:37:31 +00:00
posix-aio-compat.c fix asynchronous ioctls 2009-05-08 15:51:19 -05:00
posix-aio-compat.h push down vector linearization to posix-aio-compat.c (Christoph Hellwig) 2009-04-07 18:43:24 +00:00
ppc64.ld Correct version of Heikki Lindholms ppc64.ld script 2008-08-20 22:39:24 +00:00
ppc-dis.c Update ppc-dis.c from binutils from 4th July, 2007, just before GPLv3 switch 2009-02-09 19:59:57 +00:00
ppc.ld
qemu_socket.h Fix windows build and clean up use of <windows.h> 2009-03-08 16:26:59 +00:00
qemu-aio.h Refactor AIO to allow multiple AIO implementations 2008-09-22 19:17:18 +00:00
qemu-binfmt-conf.sh
qemu-char.c Refactor how display drivers are selected 2009-05-21 20:54:40 -05:00
qemu-char.h monitor: Improve mux'ed console experience (Jan Kiszka) 2009-03-05 23:01:47 +00:00
qemu-common.h SSP bus framework 2009-05-14 22:35:09 +01:00
qemu-doc.texi doc: Update information on supported network adapters. 2009-06-06 19:22:44 +03:00
qemu-img-cmds.hx Use hxtool for qemu-img command list 2009-06-07 09:59:47 +03:00
qemu-img.c Use hxtool for qemu-img command list 2009-06-07 09:59:47 +03:00
qemu-img.texi Use hxtool for qemu-img command list 2009-06-07 09:59:47 +03:00
qemu-io.c Workaround compiler warnings at -O1 2009-05-09 23:22:35 +01:00
qemu-lock.h Remove all traces of __powerpc__ 2009-01-14 18:39:49 +00:00
qemu-log.h Define macros that will become the new logging API (Eduardo Habkost) 2009-01-15 21:52:11 +00:00
qemu-malloc.c Format per CODING_STYLE 2009-05-19 22:29:20 +04:00
qemu-monitor.hx Use hxtool to generate monitor documentation and C structures 2009-06-06 08:22:04 +00:00
qemu-nbd.c toplevel: remove error handling from qemu_malloc() callers (Avi Kivity) 2009-02-05 22:06:18 +00:00
qemu-nbd.texi Fix formatting of documentation (Stefan Weil) 2008-09-22 20:41:57 +00:00
qemu-option.c qemu-img: Print available options with -o ? 2009-06-06 18:38:57 +03:00
qemu-option.h qemu-img: Print available options with -o ? 2009-06-06 18:38:57 +03:00
qemu-options.hx qemu-options.hx: fix description of cache=none suboption 2009-05-04 10:05:10 +02:00
qemu-sockets.c Fix in file qemu-sockets.c 2009-05-08 16:11:49 -05:00
qemu-tech.texi Update docs on dynamic condition code calculation 2009-05-10 18:23:46 +00:00
qemu-thread.c qemu: mutex/thread/cond wrappers and configure tweaks (Marcelo Tosatti) 2009-04-24 18:03:15 +00:00
qemu-thread.h qemu: mutex/thread/cond wrappers and configure tweaks (Marcelo Tosatti) 2009-04-24 18:03:15 +00:00
qemu-timer.h
qemu-tool.c monitor: Rework API (Jan Kiszka) 2009-03-05 23:01:23 +00:00
qemu.sasl Add SASL authentication support ("Daniel P. Berrange") 2009-03-06 20:27:28 +00:00
readline.c monitor: Provide empty command as final history entry (Jan Kiszka) 2009-03-13 15:02:28 +00:00
readline.h monitor: Improve mux'ed console experience (Jan Kiszka) 2009-03-05 23:01:47 +00:00
README Add missing newline at the end of file 2008-12-14 08:50:18 +00:00
rules.mak Fix build on Solaris and WIN32 2009-05-14 17:03:49 -05:00
s390-dis.c Remove unnecessary trailing newlines 2008-12-13 09:32:43 +00:00
s390.ld Remove unnecessary trailing newlines 2008-12-13 09:32:43 +00:00
savevm.c net: pass VLANClientState* as first arg to receive handlers 2009-06-09 11:38:49 +01:00
sdl_keysym.h Refactor keymap code to avoid duplication ("Daniel P. Berrange") 2009-03-06 20:27:10 +00:00
sdl.c Only shutdown video subsytem in sdl_cleanup 2009-05-17 18:26:52 +04:00
sh4-dis.c Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
softmmu_defs.h Fix some warnings that would be generated by gcc -Wredundant-decls 2008-08-30 09:51:20 +00:00
softmmu_exec.h Allow 5 mmu indexes. 2009-04-07 21:47:27 +00:00
softmmu_header.h Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
softmmu_template.h kqemu: merge CONFIG_KQEMU and USE_KQEMU 2009-04-19 10:18:01 +00:00
softmmu-semi.h Suppress gcc 4.x -Wpointer-sign (included in -Wall) warnings 2008-09-20 08:07:15 +00:00
sparc64.ld Map code buffers below 2G on Sparc64 2008-07-26 15:05:57 +00:00
sparc-dis.c Make OpenBSD sparc-softmmu compile warning free 2009-01-14 18:08:08 +00:00
sparc.ld
sys-queue.h Remove CRs 2008-12-14 08:53:17 +00:00
sysemu.h net: Real fix for check_params users 2009-06-09 11:38:49 +01:00
tap-win32.c net: add return value to packet receive handler 2009-06-09 11:38:49 +01:00
targphys.h kvm: Mark full address range dirty on live migration start 2009-05-28 02:14:56 -05:00
texi2pod.pl
thunk.c Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
thunk.h Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
TODO Update 2008-12-04 11:29:42 +00:00
tool-osdep.c Add tool_osdep.c 2009-05-13 22:21:47 +01:00
translate-all.c global s/loglevel & X/qemu_loglevel_mask(X)/ (Eduardo Habkost) 2009-01-15 22:36:53 +00:00
uboot_image.h Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
usb-bsd.c Support for DragonFly BSD (Hasso Tepper) 2009-03-07 20:06:23 +00:00
usb-linux.c USB serial device support 2009-05-22 10:50:35 -05:00
usb-stub.c monitor: Rework API (Jan Kiszka) 2009-03-05 23:01:23 +00:00
VERSION Update the version information to 0.10.50 to signify development branch 2009-04-08 13:14:12 +00:00
vgafont.h Some little fixes on QEMU 2008-09-06 16:31:30 +00:00
vl.c net: Improve parameter error reporting 2009-06-09 11:38:49 +01:00
vnc_keysym.h Refactor keymap code to avoid duplication ("Daniel P. Berrange") 2009-03-06 20:27:10 +00:00
vnc-auth-sasl.c Remove tabs introduced from VNC ACL series 2009-03-06 20:27:40 +00:00
vnc-auth-sasl.h Support ACLs for controlling VNC access ("Daniel P. Berrange") 2009-03-06 20:27:37 +00:00
vnc-auth-vencrypt.c Add more missing files 2009-03-06 23:44:29 +00:00
vnc-auth-vencrypt.h Add more missing files 2009-03-06 23:44:29 +00:00
vnc-tls.c Add more missing files 2009-03-06 23:44:29 +00:00
vnc-tls.h Add more missing files 2009-03-06 23:44:29 +00:00
vnc.c Fix spelling in comment. 2009-06-06 18:17:14 +03:00
vnc.h vnc: throttle screen updates. (Gerd Hoffmann) 2009-03-20 15:59:24 +00:00
vnchextile.h vnc: cleanup surface handling, fix screen corruption bug. (Gerd Hoffmann) 2009-03-20 15:59:14 +00:00
x86_64.ld
x_keymap.c Fix SDL on evdev hosts (Anthony Liguori) 2009-03-03 17:37:21 +00:00
x_keymap.h Fix SDL on evdev hosts (Anthony Liguori) 2009-03-03 17:37:21 +00:00

Read the documentation in qemu-doc.html.

Fabrice Bellard.