Original Xbox Emulator for Windows, macOS, and Linux (Active Development)
Go to file
Anthony Liguori 33e95c6328 qom: Reimplement Interfaces
The current implementation of Interfaces is poorly designed.  Each interface
that an object implements ends up being an object that's tracked by the
implementing object.  There's all sorts of gymnastics to deal with casting
between these objects.

But an interface shouldn't be associated with an Object.  Interfaces are global
to a class.  This patch moves all Interface knowledge to ObjectClass eliminating
the relationship between Object and Interfaces.

Interfaces are now abstract (as they should be) but this is okay.  Interfaces
essentially act as additional parents for the classes and are treated as such.

With this new implementation, we should fully support derived interfaces
including reimplementing an inherited interface.

PC: Rebased against qom-next merge Jun-2012.

PC: Removed replication of cast logic for interfaces, i.e. there is only
one cast function - object_dynamic_cast() (and object_dynamic_cast_assert())

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Peter A. G. Crosthwaite <peter.crosthwaite@petalogix.com>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
2012-08-13 11:20:41 +02:00
QMP Add event notification for guest balloon changes 2012-06-15 13:34:50 -03:00
audio audio: Unbreak capturing in mixemu case 2012-07-16 18:08:36 +04:00
block Merge remote-tracking branch 'kwolf/for-anthony' into staging 2012-08-11 19:48:50 -05:00
bsd-user Support 'help' as a synonym for '?' in command line options 2012-08-02 13:16:42 -05:00
default-configs unicore32-softmmu: Add ps2 support 2012-08-11 09:37:02 +00:00
docs docs: add lazy refcounts bit to qcow2 specification 2012-08-06 22:39:14 +02:00
fpu softfloat: Replace int16 type with int_fast16_t 2012-04-28 09:13:26 +00:00
fsdev build: move fsdev/ objects to nested Makefile.objs 2012-06-07 09:21:13 +02:00
gdb-xml
hw xilinx_axi*: Re-implemented interconnect 2012-08-13 11:20:41 +02:00
include/qemu qom: Reimplement Interfaces 2012-08-13 11:20:41 +02:00
libcacard libcacard: build fixes 2012-06-21 20:04:24 +00:00
linux-headers kvm: Update kernel headers 2012-06-18 15:32:45 +02:00
linux-user unicore32-softmmu: Make UniCore32 cpuid & exceptions correct and runable 2012-08-11 09:36:56 +00:00
net qapi: avoid reserved keywords 2012-08-09 18:34:57 +00:00
pc-bios qemu-keymaps: Finnish keyboard mapping broken 2012-07-13 10:38:16 +01:00
qapi qapi: introduce OptsVisitor 2012-07-23 11:55:17 +01:00
qga build: Fix linking failure for qemu-ga 2012-07-29 08:41:53 +00:00
qom qom: Reimplement Interfaces 2012-08-13 11:20:41 +02:00
roms Add vgabios build rules to roms/Makefile 2012-07-12 15:25:54 +02:00
scripts qapi: avoid reserved keywords 2012-08-09 18:34:57 +00:00
slirp slirp: fix build on mingw32 2012-08-06 19:31:55 -05:00
sysconfigs/target move CPU definitions to /usr/share/qemu/cpus-x86_64.conf (v2) 2012-05-10 12:37:57 -05:00
target-alpha alpha-linux-user: Work around hosted mmap allocation problems 2012-08-04 09:37:48 -07:00
target-arm target-arm: Fix typos in comments 2012-08-10 14:37:28 +01:00
target-cris cris: Fix NMI-flag handling on crisv10. 2012-06-15 13:21:32 +02:00
target-i386 Merge branch 'x86cpu_qom_tcg_v2' of git://github.com/imammedo/qemu 2012-08-09 18:44:49 +00:00
target-lm32 build: move other target-*/ objects to nested Makefile.objs 2012-06-07 09:21:11 +02:00
target-m68k build: move other target-*/ objects to nested Makefile.objs 2012-06-07 09:21:11 +02:00
target-microblaze qemu-log: use LOG_UNIMP for some target CPU cases 2012-06-21 18:45:22 +00:00
target-mips MIPS: Correct FCR0 initialization 2012-08-09 18:36:19 +00:00
target-openrisc target-or32: Add linux user support 2012-07-27 21:13:05 +00:00
target-ppc pseries: Convert sPAPR TCEs to use generic IOMMU infrastructure 2012-06-27 16:33:25 -05:00
target-s390x s390: autodetect map private 2012-07-10 18:27:33 +02:00
target-sh4 build: move other target-*/ objects to nested Makefile.objs 2012-06-07 09:21:11 +02:00
target-sparc qemu-log: use LOG_UNIMP for some target CPU cases 2012-06-21 18:45:22 +00:00
target-unicore32 unicore32-softmmu: Add a minimal curses screen support 2012-08-11 09:37:05 +00:00
target-xtensa Merge branch 'x86cpu_qom_tcg_v2' of git://github.com/imammedo/qemu 2012-08-09 18:44:49 +00:00
tcg tci: don't write zero for reloc in tci_out_label 2012-06-24 12:19:24 +00:00
tests qemu-iotests: skip 039 with ./check -nocache 2012-08-10 10:25:12 +02:00
trace Simpletrace v2: Support multiple arguments, strings. 2012-07-19 11:34:33 +01:00
ui vnc: disable VNC password authentication (security type 2) when in FIPS mode 2012-08-03 14:28:40 -05:00
.gitignore .gitignore update 2012-07-07 09:04:42 +00:00
.gitmodules
.mailmap
CODING_STYLE
COPYING
COPYING.LIB
Changelog fix some common typos 2012-05-14 07:27:24 +02:00
HACKING
LICENSE
MAINTAINERS unicore32-softmmu: Add maintainer information for UniCore32 machine 2012-08-11 09:37:02 +00:00
Makefile Makefile: add qapi.py dependencies 2012-08-11 12:21:20 +00:00
Makefile.dis build: get dependency file directories from object file names 2012-07-28 09:16:09 +00:00
Makefile.hw build: get dependency file directories from object file names 2012-07-28 09:16:09 +00:00
Makefile.objs Merge remote-tracking branch 'mjt/mjt-iov2' into staging 2012-07-09 12:35:06 -05:00
Makefile.target build: get dependency file directories from object file names 2012-07-28 09:16:09 +00:00
Makefile.user build: get dependency file directories from object file names 2012-07-28 09:16:09 +00:00
README
TODO
VERSION Update version to open the 1.2 development branch 2012-06-01 16:56:16 +08:00
a.out.h
acl.c
acl.h
aes.c
aes.h
aio.c aio: simplify qemu_aio_wait 2012-04-19 16:51:47 +02:00
alpha-dis.c
alpha.ld
arch_init.c unicore32-softmmu: Add unicore32-softmmu build support 2012-08-11 09:36:55 +00:00
arch_init.h unicore32-softmmu: Add unicore32-softmmu build support 2012-08-11 09:36:55 +00:00
arm-dis.c
arm.ld
async.c async: Use bool for boolean struct members and remove a hole 2012-05-01 10:13:25 +01:00
balloon.c Add event notification for guest balloon changes 2012-06-15 13:34:50 -03:00
balloon.h Add event notification for guest balloon changes 2012-06-15 13:34:50 -03:00
bitmap.c
bitmap.h
bitops.c
bitops.h bitops: drop volatile qualifier 2012-08-04 15:51:23 +00:00
block-migration.c savevm: split save_live into stage2 and stage3 2012-07-20 08:19:27 +02:00
block-migration.h
block.c block: Use bdrv_get_backing_file_depth() 2012-08-03 10:10:51 -03:00
block.h block: add BLOCK_O_CHECK for qemu-img check 2012-08-10 10:25:12 +02:00
block_int.h qcow2: implement lazy refcounts 2012-08-06 22:39:14 +02:00
blockdev.c blockdev: flip default cache mode from writethrough to writeback 2012-08-10 10:25:12 +02:00
blockdev.h blockdev: Don't limit DriveInfo serial to 20 characters 2012-07-17 16:48:32 +02:00
bswap.h
bt-host.c
bt-host.h
bt-vhci.c
buffered_file.c
buffered_file.h
cache-utils.c
cache-utils.h
cmd.c qemu-io: correctly print non-integer values as decimals 2012-05-10 10:32:12 +02:00
cmd.h
compatfd.c
compatfd.h
compiler.h
config.h
configure configure: fix double check tests with Clang 2012-08-11 15:07:45 +00:00
console.c console: Implementing blinking of cursor 2012-07-14 10:49:01 +00:00
console.h
coroutine-gthread.c coroutine-gthread.c: Avoid threading APIs deprecated in GLib 2.31 2012-04-14 10:59:14 +00:00
coroutine-sigaltstack.c Merge remote-tracking branch 'kwolf/for-anthony' into staging 2012-05-14 12:45:01 -05:00
coroutine-ucontext.c configure: Split valgrind test into pragma test and valgrind.h test 2012-07-31 20:04:42 +00:00
coroutine-win32.c
cpu-all.h Maintain the number of dirty pages 2012-06-29 13:31:07 +02:00
cpu-common.h cpu-common.h: Remove a pointless ifndef CONFIG_USER_ONLY 2012-07-02 10:10:07 +01:00
cpu-defs.h cpu: Move thread_kicked to CPUState 2012-08-02 18:12:17 +02:00
cpu-exec.c unicore32-softmmu: Make UniCore32 cpuid & exceptions correct and runable 2012-08-11 09:36:56 +00:00
cpus.c Fixes related to processing of qemu's -numa option 2012-08-04 13:23:58 +00:00
cpus.h
cputlb.c cputlb: fix watchpoints handling 2012-05-12 09:14:38 +00:00
cputlb.h memory: move functions is_romd and section_addr to memory API 2012-05-01 10:45:07 +00:00
cris-dis.c
cursor.c
cursor_hidden.xpm
cursor_left_ptr.xpm
cutils.c cutils: add strpadcpy() 2012-07-26 17:44:08 +02:00
def-helper.h
device_tree.c device_tree: Add support for reading device tree properties 2012-07-20 13:34:50 +01:00
device_tree.h device_tree: Add support for reading device tree properties 2012-07-20 13:34:50 +01:00
dis-asm.h
disas.c disas: Fix printing of addresses in disassembly 2012-07-14 10:32:34 +00:00
disas.h
dma-helpers.c ahci: Fix sglist memleak in ahci_dma_rw_buf() 2012-08-10 10:25:12 +02:00
dma.h Avoid returning void 2012-07-28 09:23:11 +00:00
dump-stub.c dump: Fix license version (GPL2+ instead of GPL2) 2012-06-11 22:20:21 +02:00
dump.c dump: Fix license version (GPL2+ instead of GPL2) 2012-06-11 22:20:21 +02:00
dump.h dump: Fix license version (GPL2+ instead of GPL2) 2012-06-11 22:20:21 +02:00
dyngen-exec.h
elf.h target-or32: Add target stubs and QOM cpu 2012-07-27 21:12:55 +00:00
envlist.c
envlist.h
error.c qapi: fix error propagation 2012-07-23 11:55:17 +01:00
error.h qapi: fix error propagation 2012-07-23 11:55:17 +01:00
error_int.h
event_notifier.c event_notifier: add event_notifier_set_handler 2012-07-12 14:08:10 +03:00
event_notifier.h event_notifier: add event_notifier_set_handler 2012-07-12 14:08:10 +03:00
exec-all.h cleanup cpu_set_debug_excp_handler 2012-06-25 15:37:15 +02:00
exec-memory.h
exec-obsolete.h Maintain the number of dirty pages 2012-06-29 13:31:07 +02:00
exec.c exec.c: fix dirty bitmap reallocation 2012-08-11 12:23:46 +00:00
gdbstub.c target-or32: Add gdb stub support 2012-07-27 21:13:04 +00:00
gdbstub.h make gdb_id() generally avialable and rename it to cpu_index() 2012-06-04 13:49:34 -03:00
gen-icount.h
hmp-commands.hx qapi: generalize documentation of streaming commands 2012-08-06 22:39:14 +02:00
hmp.c hmp: show the backing file depth 2012-08-03 10:10:55 -03:00
hmp.h qapi: Convert getfd and closefd 2012-07-13 13:46:55 -03:00
host-utils.c
host-utils.h
hppa-dis.c
hppa.ld
i386-dis.c
i386.ld
ia64-dis.c
ia64.ld
input.c runstate: introduce suspended state 2012-05-08 14:30:09 -03:00
int128.h
iohandler.c iohandler: Use bool for boolean struct member and remove holes 2012-05-01 10:13:33 +01:00
ioport.c
ioport.h
iorange.h
iov.c iov: Fix do_send_recv() for MinGW (also fixes a build breakage) 2012-07-11 08:51:50 -05:00
iov.h rewrite iov_send_recv() and move it to iov.c 2012-06-11 23:12:11 +04:00
json-lexer.c
json-lexer.h
json-parser.c
json-parser.h
json-streamer.c
json-streamer.h
kvm-all.c Merge remote-tracking branch 'qemu-kvm/uq/master' into staging 2012-07-18 14:44:43 -05:00
kvm-stub.c virtio: move common irqfd handling out of virtio-pci 2012-07-12 14:08:11 +03:00
kvm.h Merge remote-tracking branch 'qemu-kvm/uq/master' into staging 2012-07-18 14:44:43 -05:00
libfdt_env.h
linux-aio.c consolidate qemu_iovec_memset{,_skip}() into single function and use existing iov_memset() 2012-06-11 23:07:44 +04:00
lm32-dis.c
m68k-dis.c
m68k.ld
main-loop.c main-loop: Calculate poll timeout using timeout argument 2012-05-01 10:46:25 +00:00
main-loop.h Switch SIG_IPI to SIGUSR1 2012-05-10 08:33:34 -05:00
memory.c memory: pass EventNotifier, not eventfd 2012-07-12 14:08:10 +03:00
memory.h memory: pass EventNotifier, not eventfd 2012-07-12 14:08:10 +03:00
memory_mapping-stub.c Fix some more license versions (GPL2+ instead of GPL2) 2012-06-15 10:41:05 -03:00
memory_mapping.c Fix some more license versions (GPL2+ instead of GPL2) 2012-06-15 10:41:05 -03:00
memory_mapping.h Fix some more license versions (GPL2+ instead of GPL2) 2012-06-15 10:41:05 -03:00
microblaze-dis.c
migration-exec.c
migration-fd.c
migration-tcp.c use inet_listen()/inet_connect() to support ipv6 migration 2012-05-10 12:37:57 -05:00
migration-unix.c
migration.c Add spent time for migration 2012-06-29 13:27:28 +02:00
migration.h savevm: Live migration handlers register the struct directly 2012-07-20 08:19:27 +02:00
mips-dis.c
mips.ld
module.c
module.h
monitor.c monitor: remove unused do_info_trace 2012-07-19 11:34:32 +01:00
monitor.h Add event notification for guest balloon changes 2012-06-15 13:34:50 -03:00
nbd.c sockets: use error class to pass listen error 2012-05-10 12:37:57 -05:00
nbd.h nbd: consistently return negative errno values 2012-04-19 16:36:43 +02:00
net.c Merge remote-tracking branch 'stefanha/net' into staging 2012-08-03 13:54:05 -05:00
net.h net: cleanup deliver/deliver_iov func pointers 2012-08-01 13:32:11 +01:00
notify.c
notify.h
os-posix.c fips: fix build on !Linux 2012-08-03 18:28:37 -05:00
os-win32.c Prevent disk data loss when closing qemu 2012-06-15 14:03:42 +02:00
osdep.c vnc: disable VNC password authentication (security type 2) when in FIPS mode 2012-08-03 14:28:40 -05:00
osdep.h vnc: disable VNC password authentication (security type 2) when in FIPS mode 2012-08-03 14:28:40 -05:00
oslib-posix.c s390: autodetect map private 2012-07-10 18:27:33 +02:00
oslib-win32.c
path.c
pci-ids.txt
pflib.c
pflib.h
poison.h target-or32: Add target stubs and QOM cpu 2012-07-27 21:12:55 +00:00
posix-aio-compat.c consolidate qemu_iovec_memset{,_skip}() into single function and use existing iov_memset() 2012-06-11 23:07:44 +04:00
ppc-dis.c Replace Qemu by QEMU in comments 2012-04-07 14:00:45 +00:00
ppc.ld
ppc64.ld
qapi-schema-guest.json qemu-ga: add guest-fstrim command 2012-06-21 17:59:27 -05:00
qapi-schema-test.json
qapi-schema.json qapi: generalize documentation of streaming commands 2012-08-06 22:39:14 +02:00
qbool.c
qbool.h
qdict-test-data.txt
qdict.c
qdict.h
qemu-aio.h aio: return "AIO in progress" state from qemu_aio_wait 2012-04-19 16:50:49 +02:00
qemu-barrier.h virtio: order index/descriptor reads 2012-04-25 10:53:47 +03:00
qemu-bridge-helper.c net: Add interface to bridge when SIOCBRADDIF isn't available 2012-08-01 12:28:51 +01:00
qemu-char.c do not include <libutil.h> needlessly or if it doesn't exist 2012-06-09 10:30:08 +00:00
qemu-char.h
qemu-common.h iscsi: Pick default initiator-name based on the name of the VM 2012-08-09 15:04:09 +02:00
qemu-config.c PPC: e500: allow users to set the /compatible property via -machine 2012-06-24 01:04:51 +02:00
qemu-config.h qemu-config: Use QEMU instead of Qemu 2012-06-22 09:41:31 +01:00
qemu-coroutine-int.h
qemu-coroutine-io.c rewrite iov_send_recv() and move it to iov.c 2012-06-11 23:12:11 +04:00
qemu-coroutine-lock.c
qemu-coroutine-sleep.c block: allow interrupting a co_sleep_ns 2012-04-19 16:03:27 +02:00
qemu-coroutine.c
qemu-coroutine.h
qemu-doc.texi iscsi: Pick default initiator-name based on the name of the VM 2012-08-09 15:04:09 +02:00
qemu-error.c
qemu-error.h
qemu-file.h
qemu-ga.c Support 'help' as a synonym for '?' in command line options 2012-08-02 13:16:42 -05:00
qemu-img-cmds.hx qemu-img check -r for repairing images 2012-06-15 14:03:42 +02:00
qemu-img.c block: add BLOCK_O_CHECK for qemu-img check 2012-08-10 10:25:12 +02:00
qemu-img.texi qemu-img: document qed format on qemu-img man page 2012-06-15 14:03:43 +02:00
qemu-io.c qemu-io: add "abort" command to simulate program crash 2012-08-06 22:39:14 +02:00
qemu-lock.h
qemu-log.c qemu-log: fix x86 and user logging 2012-07-14 11:53:03 +00:00
qemu-log.h qemu-log: fix x86 and user logging 2012-07-14 11:53:03 +00:00
qemu-nbd.c qemu-nbd: add --cache and --aio options 2012-07-24 09:31:53 +02:00
qemu-nbd.texi
qemu-objects.h
qemu-option-internal.h expose QemuOpt and QemuOpts struct definitions to interested parties 2012-07-23 11:55:17 +01:00
qemu-option.c Support 'help' as a synonym for '?' in command line options 2012-08-02 13:16:42 -05:00
qemu-option.h Support 'help' as a synonym for '?' in command line options 2012-08-02 13:16:42 -05:00
qemu-options-wrapper.h
qemu-options.h
qemu-options.hx iscsi: Pick default initiator-name based on the name of the VM 2012-08-09 15:04:09 +02:00
qemu-os-posix.h
qemu-os-win32.h w64: Fix definition of setjmp 2012-04-15 21:25:16 +02:00
qemu-progress.c
qemu-queue.h Replace Qemu by QEMU in comments 2012-04-07 14:00:45 +00:00
qemu-sockets.c socket: clean up redundant assignment 2012-08-03 14:25:21 +01:00
qemu-tech.texi doc: Fix indefinite article an -> a before nouns that begin with 'h' 2012-07-17 15:40:14 -05:00
qemu-thread-posix.c qemu-thread: Let qemu_thread_is_self() return bool 2012-08-02 18:11:11 +02:00
qemu-thread-posix.h
qemu-thread-win32.c qemu-thread: Let qemu_thread_is_self() return bool 2012-08-02 18:11:11 +02:00
qemu-thread-win32.h
qemu-thread.h qemu-thread: Let qemu_thread_is_self() return bool 2012-08-02 18:11:11 +02:00
qemu-timer-common.c
qemu-timer.c qemu_rearm_alarm_timer: do not call rearm if the next deadline is INT64_MAX 2012-08-09 18:42:38 +00:00
qemu-timer.h qemu-timer: Move include for __FreeBSD_version to header 2012-05-08 11:14:56 -05:00
qemu-tls.h
qemu-tool.c iscsi: Pick default initiator-name based on the name of the VM 2012-08-09 15:04:09 +02:00
qemu-user.c
qemu-x509.h
qemu-xattr.h
qemu.sasl
qemu_socket.h sockets: use error class to pass listen error 2012-05-10 12:37:57 -05:00
qerror.c qerror: introduce QERR_INVALID_OPTION_GROUP 2012-06-04 13:49:34 -03:00
qerror.h qerror: introduce QERR_INVALID_OPTION_GROUP 2012-06-04 13:49:34 -03:00
qfloat.c
qfloat.h
qint.c
qint.h
qjson.c
qjson.h
qlist.c
qlist.h
qmp-commands.hx block: Use bdrv_get_backing_file_depth() 2012-08-03 10:10:51 -03:00
qmp.c runstate: introduce suspended state 2012-05-08 14:30:09 -03:00
qobject.h
qstring.c
qstring.h
qtest.c qtest: Fix tv_usec != long 2012-04-24 09:50:31 -05:00
qtest.h qtest: add dummy functions for user emulators 2012-04-19 18:52:35 +00:00
range.h
readline.c monitor: Fix memory leak with readline completion 2012-06-15 10:41:05 -03:00
readline.h
rules.mak build: get dependency file directories from object file names 2012-07-28 09:16:09 +00:00
s390-dis.c
s390.ld
savevm.c savevm: split save_live into stage2 and stage3 2012-07-20 08:19:27 +02:00
sh4-dis.c
softmmu-semi.h
softmmu_defs.h
softmmu_exec.h
softmmu_header.h w64: Fix data types in softmmu*.h 2012-04-15 21:25:17 +02:00
softmmu_template.h w64: Fix data types in softmmu*.h 2012-04-15 21:25:17 +02:00
sparc-dis.c
sparc.ld
sparc64.ld
spice-qemu-char.c spice-qemu-char.c: Show what name is unsupported 2012-04-20 13:14:53 +01:00
sysemu.h Fixes related to processing of qemu's -numa option 2012-08-04 13:23:58 +00:00
targphys.h targphys.h: Define TARGET_PRI*PHYS format specifier macros 2012-07-14 10:35:48 +00:00
tcg-runtime.c
tci-dis.c
tci.c tci: Support INDEX_op_bswap64_i64 2012-06-22 10:34:21 +01:00
thunk.c
thunk.h linux-user: Fix invalid TARGET_ABI_BITS usage on ppc hosts 2012-05-01 21:47:01 +02:00
trace-events scsi: establish precedence levels for unit attention 2012-07-27 08:25:25 +02:00
translate-all.c
uboot_image.h
user-exec.c user: fix accidental AREG0 use 2012-08-09 18:34:57 +00:00
version.rc
vgafont.h
vl.c Merge remote-tracking branch 'stefanha/trivial-patches' into staging 2012-08-11 19:49:03 -05:00
vmstate.h savevm: split save_live into stage2 and stage3 2012-07-20 08:19:27 +02:00
x86_64.ld
xen-all.c memory: pass EventNotifier, not eventfd 2012-07-12 14:08:10 +03:00
xen-mapcache.c xen-mapcache: don't unmap locked entry during mapcache invalidation 2012-04-13 17:35:06 +00:00
xen-mapcache.h
xen-stub.c Xen: basic HVM MSI injection support. 2012-04-13 17:34:08 +00:00

README

Read the documentation in qemu-doc.html or on http://wiki.qemu.org

- QEMU team