unicorn/qemu
Daniel P. Berrange b97ab59f08
qom: Allow properties to be registered against classes
When there are many instances of a given class, registering
properties against the instance is wasteful of resources. The
majority of objects have a statically defined list of possible
properties, so most of the properties are easily registerable
against the class. Only those properties which are conditionally
registered at runtime need be recorded against the klass.

Registering properties against classes also makes it possible
to provide static introspection of QOM - currently introspection
is only possible after creating an instance of a class, which
severely limits its usefulness.

This impl only supports simple scalar properties. It does not
attempt to allow child object / link object properties against
the class. There are ways to support those too, but it would
make this patch more complicated, so it is left as an exercise
for the future.

There is no equivalent to object_property_del() provided, since
classes must be immutable once they are defined.

Backports commit 16bf7f522a2ff68993f80631ed86254c71eaf5d4 from qemu
2018-02-21 21:00:56 -05:00
..
crypto crypto: Clean up includes 2018-02-19 00:47:40 -05:00
default-configs arm64eb: add support for ARM64 big endian. 2017-04-24 23:30:01 +08:00
docs docs: clarify memory region lifecycle 2018-02-12 15:11:21 -05:00
fpu softfloat: Remove lingering fast casts 2018-02-20 19:04:22 -05:00
hw qom: Allow properties to be registered against classes 2018-02-21 21:00:56 -05:00
include qom: Allow properties to be registered against classes 2018-02-21 21:00:56 -05:00
qapi qapi: Don't box branches of flat unions 2018-02-20 16:44:55 -05:00
qobject qapi: Convert QType into QAPI built-in enum type 2018-02-19 21:47:05 -05:00
qom qom: Allow properties to be registered against classes 2018-02-21 21:00:56 -05:00
scripts qapi: Don't box branches of flat unions 2018-02-20 16:44:55 -05:00
target-arm target-arm: Only trap SRS from S-EL1 if specified mode is MON 2018-02-21 02:49:28 -05:00
target-i386 qom: Allow properties to be registered against classes 2018-02-21 21:00:56 -05:00
target-m68k tcg: Make store_dummy a TCGv 2018-02-21 00:24:40 -05:00
target-mips tcg: Make cpu_gpr a TCGv array 2018-02-21 01:02:46 -05:00
target-sparc tcg: Make cpu_regs_sparc a TCGv array 2018-02-21 01:50:28 -05:00
tcg tcg: Make cpu_regs_sparc a TCGv array 2018-02-21 01:50:28 -05:00
util error: New error_fatal 2018-02-20 08:22:27 -05:00
aarch64.h memory: Implement memory_region_get_ram_addr with mr->ram_block 2018-02-21 08:53:08 -05:00
aarch64eb.h memory: Implement memory_region_get_ram_addr with mr->ram_block 2018-02-21 08:53:08 -05:00
accel.c all: Clean up includes 2018-02-19 01:34:28 -05:00
arm.h memory: Implement memory_region_get_ram_addr with mr->ram_block 2018-02-21 08:53:08 -05:00
armeb.h memory: Implement memory_region_get_ram_addr with mr->ram_block 2018-02-21 08:53:08 -05:00
CODING_STYLE import 2015-08-21 15:04:50 +08:00
configure tcg: Drop ia64 host support 2018-02-04 18:33:02 -05:00
COPYING import 2015-08-21 15:04:50 +08:00
COPYING.LIB import 2015-08-21 15:04:50 +08:00
cpu-exec-common.c exec: Clean up includes 2018-02-19 00:49:55 -05:00
cpu-exec.c exec: Clean up includes 2018-02-19 00:49:55 -05:00
cpus.c exec: Clean up includes 2018-02-19 00:49:55 -05:00
cputlb.c memory: Drop MemoryRegion.ram_addr 2018-02-21 08:53:08 -05:00
exec.c exec: Remove unnecessary return in qemu_ram_remap 2018-02-21 09:51:23 -05:00
gen_all_header.sh arm64eb: add support for ARM64 big endian. 2017-04-24 23:30:01 +08:00
glib_compat.c glib_compat: backport hashtable iterator interfaces 2018-02-21 13:18:44 -05:00
HACKING import 2015-08-21 15:04:50 +08:00
header_gen.py memory: Implement memory_region_get_ram_addr with mr->ram_block 2018-02-21 08:53:08 -05:00
ioport.c all: Clean up includes 2018-02-19 01:34:28 -05:00
LICENSE import 2015-08-21 15:04:50 +08:00
m68k.h memory: Implement memory_region_get_ram_addr with mr->ram_block 2018-02-21 08:53:08 -05:00
Makefile qapi: Turn generators' mandatory option -i into an argument 2018-02-19 15:22:27 -05:00
Makefile.objs crypto: move crypto objects out of libqemuutil.la 2018-02-17 15:23:50 -05:00
Makefile.target tcg: split tcg_op_defs to -common 2018-02-17 15:23:51 -05:00
memory.c qom: Allow properties to be registered against classes 2018-02-21 21:00:56 -05:00
memory_mapping.c all: Clean up includes 2018-02-19 01:34:28 -05:00
mips.h memory: Implement memory_region_get_ram_addr with mr->ram_block 2018-02-21 08:53:08 -05:00
mips64.h memory: Implement memory_region_get_ram_addr with mr->ram_block 2018-02-21 08:53:08 -05:00
mips64el.h memory: Implement memory_region_get_ram_addr with mr->ram_block 2018-02-21 08:53:08 -05:00
mipsel.h memory: Implement memory_region_get_ram_addr with mr->ram_block 2018-02-21 08:53:08 -05:00
powerpc.h memory: Implement memory_region_get_ram_addr with mr->ram_block 2018-02-21 08:53:08 -05:00
qapi-schema.json qapi: Lazy creation of array types 2018-02-19 18:55:35 -05:00
qemu-log.c all: Clean up includes 2018-02-19 01:34:28 -05:00
qemu-timer.c all: Clean up includes 2018-02-19 01:34:28 -05:00
rules.mak import 2015-08-21 15:04:50 +08:00
softmmu_template.h exec.c: Pass MemTxAttrs to iotlb_to_region so it uses the right AS 2018-02-17 23:19:00 -05:00
sparc.h memory: Implement memory_region_get_ram_addr with mr->ram_block 2018-02-21 08:53:08 -05:00
sparc64.h memory: Implement memory_region_get_ram_addr with mr->ram_block 2018-02-21 08:53:08 -05:00
tcg-runtime.c all: Clean up includes 2018-02-19 01:34:28 -05:00
translate-all.c all: Clean up includes 2018-02-19 01:34:28 -05:00
translate-all.h translate-all: remove unnecessary argument to tb_invalidate_phys_range 2018-02-13 09:04:51 -05:00
translate-common.c exec: Clean up includes 2018-02-19 00:49:55 -05:00
unicorn_common.h qom/cpu: Add MemoryRegion property 2018-02-18 21:54:50 -05:00
VERSION import 2015-08-21 15:04:50 +08:00
vl.c vl.c: Remove periods and exclamation points from error messages 2018-02-17 15:24:14 -05:00
vl.h import 2015-08-21 15:04:50 +08:00
x86_64.h memory: Implement memory_region_get_ram_addr with mr->ram_block 2018-02-21 08:53:08 -05:00