# HG changeset patch
# User Hollis Blanchard <hollisb@xxxxxxxxxx>
# Node ID 749c399d73dfe7a7cb5f659dcfed0df79df98e7d
# Parent a510c94ceaa35e9dcb2c2a47e8e875ccde49b7d9
# Parent 37141c3a3d39956ad5faf2d4e2a91276eaca557b
[POWERPC] Merge with xen-unstable.hg.
Signed-off-by: Hollis Blanchard <hollisb@xxxxxxxxxx>
---
patches/linux-2.6.16.32/blktap-aio-16_03_06.patch
| 271
patches/linux-2.6.16.32/device_bind.patch
| 14
patches/linux-2.6.16.32/fix-hz-suspend.patch
| 25
patches/linux-2.6.16.32/fix-ide-cd-pio-mode.patch
| 13
patches/linux-2.6.16.32/i386-mach-io-check-nmi.patch
| 35
patches/linux-2.6.16.32/ipv6-no-autoconf.patch
| 18
patches/linux-2.6.16.32/kasprintf.patch
| 57
patches/linux-2.6.16.32/net-csum.patch
| 57
patches/linux-2.6.16.32/net-gso-0-base.patch
| 2501 ---
patches/linux-2.6.16.32/net-gso-1-check-dodgy.patch
| 22
patches/linux-2.6.16.32/net-gso-2-checksum-fix.patch
| 400
patches/linux-2.6.16.32/net-gso-3-fix-errorcheck.patch
| 13
patches/linux-2.6.16.32/net-gso-4-kill-warnon.patch
| 16
patches/linux-2.6.16.32/net-gso-5-rcv-mss.patch
| 11
patches/linux-2.6.16.32/pci-mmconfig-fix-from-2.6.17.patch
| 252
patches/linux-2.6.16.32/pmd-shared.patch
| 100
patches/linux-2.6.16.32/rcu_needs_cpu.patch
| 33
patches/linux-2.6.16.32/rename-TSS_sysenter_esp0-SYSENTER_stack_esp0.patch
| 26
patches/linux-2.6.16.32/series
| 27
patches/linux-2.6.16.32/smp-alts.patch
| 540
patches/linux-2.6.16.32/tpm_plugin_2.6.17.patch
| 1380 -
patches/linux-2.6.16.32/vsnprintf.patch
| 178
patches/linux-2.6.16.32/x86-elfnote-as-preprocessor-macro.patch
| 27
patches/linux-2.6.16.32/x86-increase-interrupt-vector-range.patch
| 73
patches/linux-2.6.16.32/x86-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch
| 138
patches/linux-2.6.16.32/x86_64-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch
| 72
patches/linux-2.6.16.32/xen-hotplug.patch
| 10
patches/linux-2.6.16.32/xenoprof-generic.patch
| 615
tools/firmware/hvmloader/acpi_ssdt_tpm.asl
| 29
tools/firmware/hvmloader/acpi_ssdt_tpm.h
| 25
tools/firmware/hvmloader/acpi_utils.c
| 318
tools/firmware/hvmloader/acpi_utils.h
| 36
xen/arch/x86/hvm/vmx/io.c
| 202
xen/include/asm-ia64/linux/asm-generic/pgtable-nopud.h
| 61
.hgignore
| 2
Config.mk
| 3
buildconfigs/linux-defconfig_xen0_x86_32
| 1
buildconfigs/linux-defconfig_xen0_x86_64
| 1
buildconfigs/linux-defconfig_xen_ia64
| 2
buildconfigs/linux-defconfig_xen_x86_32
| 4
buildconfigs/linux-defconfig_xen_x86_64
| 3
buildconfigs/mk.linux-2.6-xen
| 2
docs/src/user.tex
| 5
docs/xen-api/presentation.tex
| 5
docs/xen-api/todo.tex
| 2
docs/xen-api/wire-protocol.tex
| 66
docs/xen-api/xenapi-datamodel-graph.dot
| 3
docs/xen-api/xenapi-datamodel.tex
| 2239 +-
extras/mini-os/events.c
| 27
extras/mini-os/include/events.h
| 1
linux-2.6-xen-sparse/arch/i386/Kconfig
| 2
linux-2.6-xen-sparse/arch/i386/kernel/crash.c
| 187
linux-2.6-xen-sparse/arch/i386/kernel/machine_kexec.c
| 129
linux-2.6-xen-sparse/arch/i386/kernel/setup-xen.c
| 27
linux-2.6-xen-sparse/arch/i386/kernel/swiotlb.c
| 23
linux-2.6-xen-sparse/arch/i386/kernel/time-xen.c
| 30
linux-2.6-xen-sparse/arch/ia64/Kconfig
| 3
linux-2.6-xen-sparse/arch/ia64/kernel/entry.S
| 4
linux-2.6-xen-sparse/arch/ia64/kernel/iosapic.c
| 10
linux-2.6-xen-sparse/arch/ia64/kernel/irq_ia64.c
| 68
linux-2.6-xen-sparse/arch/ia64/kernel/perfmon.c
| 6941 ++++++++
linux-2.6-xen-sparse/arch/ia64/kernel/setup.c
| 10
linux-2.6-xen-sparse/arch/ia64/oprofile/Makefile
| 14
linux-2.6-xen-sparse/arch/ia64/oprofile/init.c
| 52
linux-2.6-xen-sparse/arch/ia64/oprofile/oprofile_perfmon.h
| 30
linux-2.6-xen-sparse/arch/ia64/oprofile/perfmon.c
| 119
linux-2.6-xen-sparse/arch/ia64/oprofile/xenoprof.c
| 142
linux-2.6-xen-sparse/arch/ia64/xen/Makefile
| 2
linux-2.6-xen-sparse/arch/ia64/xen/hypervisor.c
| 64
linux-2.6-xen-sparse/arch/ia64/xen/mem.c
| 76
linux-2.6-xen-sparse/arch/ia64/xen/xcom_hcall.c
| 62
linux-2.6-xen-sparse/arch/ia64/xen/xcom_mini.c
| 98
linux-2.6-xen-sparse/arch/ia64/xen/xcom_privcmd.c
| 13
linux-2.6-xen-sparse/arch/ia64/xen/xenentry.S
| 41
linux-2.6-xen-sparse/arch/x86_64/Kconfig
| 2
linux-2.6-xen-sparse/arch/x86_64/kernel/crash.c
| 190
linux-2.6-xen-sparse/arch/x86_64/kernel/e820-xen.c
| 6
linux-2.6-xen-sparse/arch/x86_64/kernel/machine_kexec.c
| 279
linux-2.6-xen-sparse/arch/x86_64/kernel/setup-xen.c
| 23
linux-2.6-xen-sparse/drivers/xen/Kconfig
| 23
linux-2.6-xen-sparse/drivers/xen/Makefile
| 2
linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c
| 3
linux-2.6-xen-sparse/drivers/xen/char/mem.c
| 4
linux-2.6-xen-sparse/drivers/xen/console/console.c
| 92
linux-2.6-xen-sparse/drivers/xen/core/Makefile
| 1
linux-2.6-xen-sparse/drivers/xen/core/evtchn.c
| 62
linux-2.6-xen-sparse/drivers/xen/core/machine_kexec.c
| 190
linux-2.6-xen-sparse/drivers/xen/core/smpboot.c
| 72
linux-2.6-xen-sparse/drivers/xen/fbfront/Makefile
| 2
linux-2.6-xen-sparse/drivers/xen/fbfront/xenfb.c
| 682
linux-2.6-xen-sparse/drivers/xen/fbfront/xenkbd.c
| 300
linux-2.6-xen-sparse/drivers/xen/netback/netback.c
| 18
linux-2.6-xen-sparse/drivers/xen/xenbus/Makefile
| 10
linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_client.c
| 1
linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_comms.c
| 2
linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_comms.h
| 1
linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.h
| 2
linux-2.6-xen-sparse/include/asm-i386/kexec.h
| 117
linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/hypercall.h
| 8
linux-2.6-xen-sparse/include/asm-ia64/hypercall.h
| 41
linux-2.6-xen-sparse/include/asm-ia64/io.h
| 7
linux-2.6-xen-sparse/include/asm-ia64/irq.h
| 4
linux-2.6-xen-sparse/include/asm-ia64/privop.h
| 1
linux-2.6-xen-sparse/include/asm-ia64/sal.h
| 904 +
linux-2.6-xen-sparse/include/asm-ia64/uaccess.h
| 421
linux-2.6-xen-sparse/include/asm-ia64/xen/privop.h
| 1
linux-2.6-xen-sparse/include/asm-ia64/xen/xcom_hcall.h
| 10
linux-2.6-xen-sparse/include/asm-ia64/xenoprof.h
| 48
linux-2.6-xen-sparse/include/asm-x86_64/kexec.h
| 109
linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/agp.h
| 35
linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/hypercall.h
| 7
linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/ptrace.h
| 2
linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/xenoprof.h
| 1
linux-2.6-xen-sparse/include/linux/kexec.h
| 152
linux-2.6-xen-sparse/include/xen/xencons.h
| 2
linux-2.6-xen-sparse/kernel/kexec.c
| 1105 +
linux-2.6-xen-sparse/mm/memory.c
| 1
patches/linux-2.6.16.33/blktap-aio-16_03_06.patch
| 161
patches/linux-2.6.16.33/device_bind.patch
| 9
patches/linux-2.6.16.33/fix-hz-suspend.patch
| 9
patches/linux-2.6.16.33/fix-ide-cd-pio-mode.patch
| 13
patches/linux-2.6.16.33/git-2a8a3d5b65e86ec1dfef7d268c64a909eab94af7.patch
| 50
patches/linux-2.6.16.33/git-2efe55a9cec8418f0e0cde3dc3787a42fddc4411.patch
| 75
patches/linux-2.6.16.33/git-3566561bfadffcb5dbc85d576be80c0dbf2cccc9.patch
| 197
patches/linux-2.6.16.33/git-4bfaaef01a1badb9e8ffb0c0a37cd2379008d21f.patch
| 156
patches/linux-2.6.16.33/git-dbaab49f92ff6ae6255762a948375e4036cbdbd2.patch
| 44
patches/linux-2.6.16.33/i386-mach-io-check-nmi.patch
| 30
patches/linux-2.6.16.33/ipv6-no-autoconf.patch
| 16
patches/linux-2.6.16.33/kasprintf.patch
| 32
patches/linux-2.6.16.33/linux-2.6.19-rc1-kexec-move_segment_code-i386.patch
| 114
patches/linux-2.6.16.33/linux-2.6.19-rc1-kexec-move_segment_code-x86_64.patch
| 114
patches/linux-2.6.16.33/net-csum.patch
| 40
patches/linux-2.6.16.33/net-gso-0-base.patch
| 1970 ++
patches/linux-2.6.16.33/net-gso-1-check-dodgy.patch
| 16
patches/linux-2.6.16.33/net-gso-2-checksum-fix.patch
| 311
patches/linux-2.6.16.33/net-gso-3-fix-errorcheck.patch
| 13
patches/linux-2.6.16.33/net-gso-4-kill-warnon.patch
| 26
patches/linux-2.6.16.33/net-gso-5-rcv-mss.patch
| 11
patches/linux-2.6.16.33/pci-mmconfig-fix-from-2.6.17.patch
| 143
patches/linux-2.6.16.33/pmd-shared.patch
| 57
patches/linux-2.6.16.33/rcu_needs_cpu.patch
| 18
patches/linux-2.6.16.33/rename-TSS_sysenter_esp0-SYSENTER_stack_esp0.patch
| 26
patches/linux-2.6.16.33/series
| 34
patches/linux-2.6.16.33/smp-alts.patch
| 330
patches/linux-2.6.16.33/tpm_plugin_2.6.17.patch
| 703
patches/linux-2.6.16.33/vsnprintf.patch
| 177
patches/linux-2.6.16.33/x86-elfnote-as-preprocessor-macro.patch
| 25
patches/linux-2.6.16.33/x86-increase-interrupt-vector-range.patch
| 73
patches/linux-2.6.16.33/x86-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch
| 39
patches/linux-2.6.16.33/x86_64-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch
| 63
patches/linux-2.6.16.33/xen-hotplug.patch
| 10
patches/linux-2.6.16.33/xenoprof-generic.patch
| 294
tools/Makefile
| 2
tools/blktap/drivers/block-aio.c
| 8
tools/blktap/drivers/block-qcow.c
| 9
tools/blktap/drivers/tapdisk.c
| 3
tools/check/Makefile
| 6
tools/check/check_libvncserver
| 27
tools/check/check_sdl
| 27
tools/examples/init.d/xend
| 5
tools/examples/init.d/xendomains
| 9
tools/examples/network-route
| 8
tools/examples/xm-config.xml
| 43
tools/firmware/hvmloader/Makefile
| 15
tools/firmware/hvmloader/acpi/Makefile
| 15
tools/firmware/hvmloader/acpi/acpi2_0.h
| 17
tools/firmware/hvmloader/acpi/build.c
| 121
tools/firmware/hvmloader/acpi/ssdt_tpm.asl
| 29
tools/firmware/hvmloader/acpi/ssdt_tpm.h
| 25
tools/firmware/hvmloader/hvmloader.c
| 9
tools/firmware/hvmloader/mp_tables.c
| 1
tools/firmware/hvmloader/util.h
| 3
tools/firmware/vmxassist/head.S
| 2
tools/firmware/vmxassist/setup.c
| 26
tools/firmware/vmxassist/trap.S
| 16
tools/firmware/vmxassist/util.c
| 6
tools/firmware/vmxassist/vm86.c
| 234
tools/firmware/vmxassist/vm86.h
| 2
tools/ioemu/Makefile.target
| 4
tools/ioemu/hw/ide.c
| 31
tools/ioemu/hw/pci.c
| 24
tools/ioemu/hw/tpm_tis.c
| 12
tools/ioemu/hw/usb-hid.c
| 19
tools/ioemu/hw/usb-uhci.c
| 44
tools/ioemu/keymaps.c
| 63
tools/ioemu/patches/acpi-support
| 41
tools/ioemu/patches/acpi-timer-support
| 8
tools/ioemu/patches/domain-destroy
| 12
tools/ioemu/patches/domain-reset
| 8
tools/ioemu/patches/domain-timeoffset
| 12
tools/ioemu/patches/fix-interrupt-routing
| 55
tools/ioemu/patches/hypervisor-pit
| 8
tools/ioemu/patches/hypervisor-rtc
| 12
tools/ioemu/patches/ide-error-reporting
| 85
tools/ioemu/patches/ioemu-ia64
| 72
tools/ioemu/patches/limit-fdc-sector-size-to-16K
| 30
tools/ioemu/patches/ne2000-bounds-checks
| 79
tools/ioemu/patches/nodelay-serial-over-tcp
| 25
tools/ioemu/patches/qemu-bootorder
| 14
tools/ioemu/patches/qemu-daemonize
| 4
tools/ioemu/patches/qemu-dm
| 20
tools/ioemu/patches/qemu-no-apic
| 6
tools/ioemu/patches/qemu-pci
| 18
tools/ioemu/patches/qemu-serial-fixes
| 79
tools/ioemu/patches/qemu-target-i386-dm
| 149
tools/ioemu/patches/remove-pci-bridge-setup
| 287
tools/ioemu/patches/rtl8139-bound-chaining
| 31
tools/ioemu/patches/series
| 16
tools/ioemu/patches/shared-vram
| 30
tools/ioemu/patches/tpm-tis-device
| 56
tools/ioemu/patches/usb-mouse-tablet-status-check
| 124
tools/ioemu/patches/usb-uhci-buffer-size
| 23
tools/ioemu/patches/vnc-access-monitor-vt
| 4
tools/ioemu/patches/vnc-backoff-screen-scan
| 22
tools/ioemu/patches/vnc-display-find-unused
| 20
tools/ioemu/patches/vnc-fixes
| 46
tools/ioemu/patches/vnc-japan-keymap
| 24
tools/ioemu/patches/vnc-listen-specific-interface
| 18
tools/ioemu/patches/vnc-monitor-shift-key-processing
| 41
tools/ioemu/patches/vnc-numpad-handling
| 126
tools/ioemu/patches/vnc-password
| 68
tools/ioemu/patches/vnc-protocol-fixes
| 8
tools/ioemu/patches/vnc-start-vncviewer
| 14
tools/ioemu/patches/vnc-title-domain-name
| 6
tools/ioemu/patches/xen-build
| 18
tools/ioemu/patches/xen-mapcache
| 145
tools/ioemu/patches/xen-mm
| 18
tools/ioemu/patches/xen-platform-device
| 9
tools/ioemu/patches/xen-support-buffered-ioreqs
| 28
tools/ioemu/patches/xenstore-block-device-config
| 40
tools/ioemu/patches/xenstore-device-info-functions
| 32
tools/ioemu/patches/xenstore-write-vnc-port
| 8
tools/ioemu/target-i386-dm/cpu.h
| 3
tools/ioemu/target-i386-dm/exec-dm.c
| 17
tools/ioemu/vl.c
| 188
tools/ioemu/vl.h
| 27
tools/ioemu/vnc.c
| 52
tools/ioemu/vnc_keysym.h
| 14
tools/libxc/Makefile
| 4
tools/libxc/ia64/xc_ia64_hvm_build.c
| 207
tools/libxc/ia64/xc_ia64_linux_restore.c
| 80
tools/libxc/ia64/xc_ia64_linux_save.c
| 6
tools/libxc/xc_core.c
| 4
tools/libxc/xc_domain.c
| 46
tools/libxc/xc_hvm_build.c
| 16
tools/libxc/xc_linux.c
| 9
tools/libxc/xc_linux_build.c
| 215
tools/libxc/xc_load_elf.c
| 103
tools/libxc/xc_private.c
| 95
tools/libxc/xc_private.h
| 20
tools/libxc/xc_solaris.c
| 9
tools/libxc/xenctrl.h
| 62
tools/libxen/Makefile
| 47
tools/libxen/README
| 5
tools/libxen/include/xen_console.h
| 207
tools/libxen/include/xen_console_decl.h
| 30
tools/libxen/include/xen_console_protocol.h
| 82
tools/libxen/include/xen_console_protocol_internal.h
| 37
tools/libxen/include/xen_vm.h
| 9
tools/libxen/src/xen_common.c
| 26
tools/libxen/src/xen_console.c
| 207
tools/libxen/src/xen_console_protocol.c
| 82
tools/libxen/src/xen_vm.c
| 46
tools/misc/xend
| 4
tools/pygrub/Makefile
| 4
tools/pygrub/src/pygrub
| 6
tools/python/scripts/xapi.domcfg.py
| 2
tools/python/scripts/xapi.py
| 46
tools/python/xen/lowlevel/xc/xc.c
| 149
tools/python/xen/util/bugtool.py
| 5
tools/python/xen/util/mkdir.py
| 44
tools/python/xen/util/xmlrpclib2.py
| 13
tools/python/xen/web/httpserver.py
| 44
tools/python/xen/web/unix.py
| 12
tools/python/xen/xend/XendAPI.py
| 663
tools/python/xen/xend/XendAuthSessions.py
| 2
tools/python/xen/xend/XendBootloader.py
| 16
tools/python/xen/xend/XendCheckpoint.py
| 3
tools/python/xen/xend/XendConfig.py
| 1415 +
tools/python/xen/xend/XendConstants.py
| 2
tools/python/xen/xend/XendDevices.py
| 4
tools/python/xen/xend/XendDomain.py
| 83
tools/python/xen/xend/XendDomainInfo.py
| 493
tools/python/xen/xend/XendLogging.py
| 5
tools/python/xen/xend/XendStorageRepository.py
| 9
tools/python/xen/xend/image.py
| 228
tools/python/xen/xend/server/DevController.py
| 13
tools/python/xen/xend/server/SrvDaemon.py
| 33
tools/python/xen/xend/server/SrvDomain.py
| 13
tools/python/xen/xend/server/SrvDomainDir.py
| 42
tools/python/xen/xend/server/SrvServer.py
| 148
tools/python/xen/xend/server/XMLRPCServer.py
| 40
tools/python/xen/xend/server/blkif.py
| 23
tools/python/xen/xend/server/iopif.py
| 4
tools/python/xen/xend/server/irqif.py
| 2
tools/python/xen/xend/server/netif.py
| 28
tools/python/xen/xend/server/pciif.py
| 69
tools/python/xen/xend/server/pciquirk.py
| 43
tools/python/xen/xend/server/tests/test_controllers.py
| 6
tools/python/xen/xend/server/tpmif.py
| 12
tools/python/xen/xend/server/vfbif.py
| 74
tools/python/xen/xend/xenstore/xstransact.py
| 3
tools/python/xen/xend/xenstore/xswatch.py
| 11
tools/python/xen/xm/XenAPI.py
| 132
tools/python/xen/xm/create.py
| 40
tools/python/xen/xm/main.py
| 191
tools/python/xen/xm/migrate.py
| 3
tools/python/xen/xm/new.py
| 11
tools/python/xen/xm/shutdown.py
| 4
tools/tests/test_x86_emulator.c
| 108
tools/xenfb/Makefile
| 35
tools/xenfb/sdlfb.c
| 342
tools/xenfb/vncfb.c
| 401
tools/xenfb/xenfb.c
| 711
tools/xenfb/xenfb.h
| 35
tools/xm-test/grouptest/xapi
| 1
tools/xm-test/lib/XmTestLib/XenManagedDomain.py
| 177
tools/xm-test/lib/XmTestLib/xapi.py
| 66
tools/xm-test/ramdisk/Makefile.am
| 8
tools/xm-test/tests/vtpm/09_vtpm-xapi.py
| 76
tools/xm-test/tests/vtpm/Makefile.am
| 3
xen/arch/ia64/Makefile
| 16
xen/arch/ia64/Rules.mk
| 3
xen/arch/ia64/asm-offsets.c
| 34
xen/arch/ia64/linux-xen/Makefile
| 2
xen/arch/ia64/linux-xen/README.origin
| 8
xen/arch/ia64/linux-xen/mca.c
| 369
xen/arch/ia64/linux-xen/mca_asm.S
| 152
xen/arch/ia64/linux-xen/perfmon.c
| 7798 ++++++++++
xen/arch/ia64/linux-xen/perfmon_default_smpl.c
| 311
xen/arch/ia64/linux-xen/perfmon_generic.h
| 45
xen/arch/ia64/linux-xen/perfmon_itanium.h
| 115
xen/arch/ia64/linux-xen/perfmon_mckinley.h
| 187
xen/arch/ia64/linux-xen/perfmon_montecito.h
| 269
xen/arch/ia64/linux-xen/smpboot.c
| 2
xen/arch/ia64/linux/Makefile
| 1
xen/arch/ia64/linux/README.origin
| 3
xen/arch/ia64/linux/carta_random.S
| 54
xen/arch/ia64/vmx/Makefile
| 2
xen/arch/ia64/vmx/mmio.c
| 305
xen/arch/ia64/vmx/optvfault.S
| 9
xen/arch/ia64/vmx/viosapic.c
| 339
xen/arch/ia64/vmx/vlsapic.c
| 389
xen/arch/ia64/vmx/vmx_hypercall.c
| 98
xen/arch/ia64/vmx/vmx_init.c
| 76
xen/arch/ia64/vmx/vmx_process.c
| 33
xen/arch/ia64/vmx/vmx_support.c
| 6
xen/arch/ia64/xen/Makefile
| 4
xen/arch/ia64/xen/crash.c
| 19
xen/arch/ia64/xen/dom0_ops.c
| 26
xen/arch/ia64/xen/dom_fw.c
| 23
xen/arch/ia64/xen/domain.c
| 76
xen/arch/ia64/xen/faults.c
| 4
xen/arch/ia64/xen/fw_emul.c
| 252
xen/arch/ia64/xen/hypercall.c
| 40
xen/arch/ia64/xen/machine_kexec.c
| 34
xen/arch/ia64/xen/mm.c
| 279
xen/arch/ia64/xen/mm_init.c
| 9
xen/arch/ia64/xen/oprofile/Makefile
| 1
xen/arch/ia64/xen/oprofile/perfmon.c
| 200
xen/arch/ia64/xen/oprofile/xenoprof.c
| 56
xen/arch/ia64/xen/vcpu.c
| 2
xen/arch/ia64/xen/xenmem.c
| 17
xen/arch/powerpc/Makefile
| 2
xen/arch/powerpc/crash.c
| 19
xen/arch/powerpc/machine_kexec.c
| 34
xen/arch/x86/Makefile
| 2
xen/arch/x86/boot/x86_32.S
| 9
xen/arch/x86/boot/x86_64.S
| 9
xen/arch/x86/crash.c
| 120
xen/arch/x86/domain.c
| 4
xen/arch/x86/hvm/platform.c
| 18
xen/arch/x86/hvm/svm/emulate.c
| 15
xen/arch/x86/hvm/svm/svm.c
| 232
xen/arch/x86/hvm/svm/vmcb.c
| 22
xen/arch/x86/hvm/vlapic.c
| 11
xen/arch/x86/hvm/vmx/Makefile
| 2
xen/arch/x86/hvm/vmx/intr.c
| 196
xen/arch/x86/hvm/vmx/vmx.c
| 328
xen/arch/x86/machine_kexec.c
| 105
xen/arch/x86/mm.c
| 220
xen/arch/x86/mm/shadow/common.c
| 442
xen/arch/x86/mm/shadow/multi.c
| 82
xen/arch/x86/mm/shadow/private.h
| 22
xen/arch/x86/oprofile/op_model_athlon.c
| 9
xen/arch/x86/setup.c
| 75
xen/arch/x86/traps.c
| 33
xen/arch/x86/x86_32/domain_page.c
| 36
xen/arch/x86/x86_32/entry.S
| 10
xen/arch/x86/x86_32/mm.c
| 35
xen/arch/x86/x86_64/entry.S
| 8
xen/arch/x86/x86_64/mm.c
| 31
xen/arch/x86/x86_emulate.c
| 558
xen/common/Makefile
| 1
xen/common/domain.c
| 4
xen/common/domctl.c
| 2
xen/common/kexec.c
| 343
xen/common/memory.c
| 4
xen/common/page_alloc.c
| 86
xen/drivers/char/console.c
| 3
xen/include/asm-ia64/config.h
| 10
xen/include/asm-ia64/debugger.h
| 2
xen/include/asm-ia64/domain.h
| 8
xen/include/asm-ia64/elf.h
| 30
xen/include/asm-ia64/event.h
| 2
xen/include/asm-ia64/grant_table.h
| 15
xen/include/asm-ia64/kexec.h
| 25
xen/include/asm-ia64/linux-null/asm/signal.h
| 1
xen/include/asm-ia64/linux-null/linux/capability.h
| 1
xen/include/asm-ia64/linux-null/linux/completion.h
| 1
xen/include/asm-ia64/linux-null/linux/mount.h
| 1
xen/include/asm-ia64/linux-null/linux/pagemap.h
| 1
xen/include/asm-ia64/linux-null/linux/poll.h
| 1
xen/include/asm-ia64/linux-null/linux/rcupdate.h
| 1
xen/include/asm-ia64/linux-null/linux/sysctl.h
| 1
xen/include/asm-ia64/linux-null/linux/vfs.h
| 1
xen/include/asm-ia64/linux-null/linux/vmalloc.h
| 1
xen/include/asm-ia64/linux-xen/asm-generic/README.origin
| 8
xen/include/asm-ia64/linux-xen/asm-generic/pgtable-nopud.h
| 69
xen/include/asm-ia64/linux-xen/asm/README.origin
| 4
xen/include/asm-ia64/linux-xen/asm/mca_asm.h
| 4
xen/include/asm-ia64/linux-xen/asm/perfmon.h
| 287
xen/include/asm-ia64/linux-xen/asm/perfmon_default_smpl.h
| 83
xen/include/asm-ia64/linux-xen/asm/pgalloc.h
| 27
xen/include/asm-ia64/linux-xen/asm/pgtable.h
| 13
xen/include/asm-ia64/linux-xen/asm/processor.h
| 10
xen/include/asm-ia64/linux-xen/linux/README.origin
| 3
xen/include/asm-ia64/linux-xen/linux/interrupt.h
| 6
xen/include/asm-ia64/linux-xen/linux/oprofile.h
| 119
xen/include/asm-ia64/linux/asm-generic/README.origin
| 1
xen/include/asm-ia64/mm.h
| 4
xen/include/asm-ia64/regs.h
| 1
xen/include/asm-ia64/softirq.h
| 9
xen/include/asm-ia64/vcpu.h
| 2
xen/include/asm-ia64/viosapic.h
| 95
xen/include/asm-ia64/vlsapic.h
| 46
xen/include/asm-ia64/vmx.h
| 1
xen/include/asm-ia64/vmx_platform.h
| 48
xen/include/asm-ia64/vmx_vpd.h
| 13
xen/include/asm-ia64/xenmca.h
| 34
xen/include/asm-ia64/xenoprof.h
| 64
xen/include/asm-powerpc/config.h
| 2
xen/include/asm-powerpc/elf.h
| 30
xen/include/asm-powerpc/kexec.h
| 25
xen/include/asm-powerpc/softirq.h
| 6
xen/include/asm-x86/config.h
| 2
xen/include/asm-x86/domain.h
| 13
xen/include/asm-x86/elf.h
| 24
xen/include/asm-x86/fixmap.h
| 4
xen/include/asm-x86/guest_access.h
| 16
xen/include/asm-x86/hvm/hvm.h
| 71
xen/include/asm-x86/hvm/svm/vmcb.h
| 50
xen/include/asm-x86/hvm/vlapic.h
| 1
xen/include/asm-x86/hvm/vmx/vmx.h
| 7
xen/include/asm-x86/hypercall.h
| 5
xen/include/asm-x86/kexec.h
| 20
xen/include/asm-x86/page.h
| 15
xen/include/asm-x86/shadow.h
| 8
xen/include/asm-x86/softirq.h
| 6
xen/include/asm-x86/x86_32/elf.h
| 72
xen/include/asm-x86/x86_32/kexec.h
| 40
xen/include/asm-x86/x86_32/page-2level.h
| 3
xen/include/asm-x86/x86_32/page-3level.h
| 7
xen/include/asm-x86/x86_32/page.h
| 2
xen/include/asm-x86/x86_64/elf.h
| 92
xen/include/asm-x86/x86_64/kexec.h
| 39
xen/include/asm-x86/x86_64/page.h
| 5
xen/include/asm-x86/x86_emulate.h
| 139
xen/include/public/arch-ia64.h
| 34
xen/include/public/domctl.h
| 2
xen/include/public/elfnote.h
| 19
xen/include/public/io/fbif.h
| 116
xen/include/public/io/kbdif.h
| 108
xen/include/public/kexec.h
| 137
xen/include/public/memory.h
| 17
xen/include/public/physdev.h
| 1
xen/include/public/xenoprof.h
| 2
xen/include/xen/domain_page.h
| 9
xen/include/xen/elf.h
| 20
xen/include/xen/elfcore.h
| 140
xen/include/xen/hypercall.h
| 6
xen/include/xen/kexec.h
| 45
xen/include/xen/mm.h
| 5
xen/include/xen/multiboot.h
| 35
xen/include/xen/softirq.h
| 7
485 files changed, 43466 insertions(+), 13223 deletions(-)
diff -r a510c94ceaa3 -r 749c399d73df .hgignore
--- a/.hgignore Tue Dec 12 09:56:06 2006 -0600
+++ b/.hgignore Tue Dec 12 09:58:42 2006 -0600
@@ -158,6 +158,8 @@
^tools/xcutils/xc_restore$
^tools/xcutils/xc_save$
^tools/xcutils/readnotes$
+^tools/xenfb/sdlfb$
+^tools/xenfb/vncfb$
^tools/xenmon/xentrace_setmask$
^tools/xenmon/xenbaked$
^tools/xenstat/xentop/xentop$
diff -r a510c94ceaa3 -r 749c399d73df Config.mk
--- a/Config.mk Tue Dec 12 09:56:06 2006 -0600
+++ b/Config.mk Tue Dec 12 09:58:42 2006 -0600
@@ -69,7 +69,8 @@ ACM_DEFAULT_SECURITY_POLICY ?= ACM_NULL_
# Optional components
XENSTAT_XENTOP ?= y
-
VTPM_TOOLS ?= n
+LIBXENAPI_BINDINGS ?= n
+XENFB_TOOLS ?= n
-include $(XEN_ROOT)/.config
diff -r a510c94ceaa3 -r 749c399d73df buildconfigs/linux-defconfig_xen0_x86_32
--- a/buildconfigs/linux-defconfig_xen0_x86_32 Tue Dec 12 09:56:06 2006 -0600
+++ b/buildconfigs/linux-defconfig_xen0_x86_32 Tue Dec 12 09:58:42 2006 -0600
@@ -179,6 +179,7 @@ CONFIG_HZ_100=y
# CONFIG_HZ_250 is not set
# CONFIG_HZ_1000 is not set
CONFIG_HZ=100
+CONFIG_KEXEC=y
# CONFIG_CRASH_DUMP is not set
CONFIG_PHYSICAL_START=0x100000
diff -r a510c94ceaa3 -r 749c399d73df buildconfigs/linux-defconfig_xen0_x86_64
--- a/buildconfigs/linux-defconfig_xen0_x86_64 Tue Dec 12 09:56:06 2006 -0600
+++ b/buildconfigs/linux-defconfig_xen0_x86_64 Tue Dec 12 09:58:42 2006 -0600
@@ -126,6 +126,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y
# CONFIG_SPARSEMEM_STATIC is not set
CONFIG_SPLIT_PTLOCK_CPUS=4096
CONFIG_SWIOTLB=y
+CONFIG_KEXEC=y
# CONFIG_CRASH_DUMP is not set
CONFIG_PHYSICAL_START=0x100000
CONFIG_SECCOMP=y
diff -r a510c94ceaa3 -r 749c399d73df buildconfigs/linux-defconfig_xen_ia64
--- a/buildconfigs/linux-defconfig_xen_ia64 Tue Dec 12 09:56:06 2006 -0600
+++ b/buildconfigs/linux-defconfig_xen_ia64 Tue Dec 12 09:58:42 2006 -0600
@@ -1548,6 +1548,8 @@ CONFIG_XEN_PCIDEV_BACKEND_SLOT=y
# CONFIG_XEN_TPMDEV_BACKEND is not set
CONFIG_XEN_BLKDEV_FRONTEND=y
CONFIG_XEN_NETDEV_FRONTEND=y
+CONFIG_XEN_FRAMEBUFFER=y
+CONFIG_XEN_KEYBOARD=y
# CONFIG_XEN_SCRUB_PAGES is not set
CONFIG_XEN_DISABLE_SERIAL=y
CONFIG_XEN_SYSFS=y
diff -r a510c94ceaa3 -r 749c399d73df buildconfigs/linux-defconfig_xen_x86_32
--- a/buildconfigs/linux-defconfig_xen_x86_32 Tue Dec 12 09:56:06 2006 -0600
+++ b/buildconfigs/linux-defconfig_xen_x86_32 Tue Dec 12 09:58:42 2006 -0600
@@ -184,6 +184,7 @@ CONFIG_REGPARM=y
CONFIG_REGPARM=y
CONFIG_SECCOMP=y
CONFIG_HZ_100=y
+CONFIG_KEXEC=y
# CONFIG_HZ_250 is not set
# CONFIG_HZ_1000 is not set
CONFIG_HZ=100
@@ -2776,6 +2777,7 @@ CONFIG_NTFS_FS=m
#
CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y
+# CONFIG_PROC_VMCORE is not set
CONFIG_SYSFS=y
CONFIG_TMPFS=y
# CONFIG_HUGETLB_PAGE is not set
@@ -3032,6 +3034,8 @@ CONFIG_XEN_NETDEV_LOOPBACK=y
# CONFIG_XEN_TPMDEV_BACKEND is not set
CONFIG_XEN_BLKDEV_FRONTEND=y
CONFIG_XEN_NETDEV_FRONTEND=y
+CONFIG_XEN_FRAMEBUFFER=y
+CONFIG_XEN_KEYBOARD=y
CONFIG_XEN_SCRUB_PAGES=y
CONFIG_XEN_DISABLE_SERIAL=y
CONFIG_XEN_SYSFS=y
diff -r a510c94ceaa3 -r 749c399d73df buildconfigs/linux-defconfig_xen_x86_64
--- a/buildconfigs/linux-defconfig_xen_x86_64 Tue Dec 12 09:56:06 2006 -0600
+++ b/buildconfigs/linux-defconfig_xen_x86_64 Tue Dec 12 09:58:42 2006 -0600
@@ -139,6 +139,7 @@ CONFIG_PHYSICAL_START=0x100000
CONFIG_PHYSICAL_START=0x100000
CONFIG_SECCOMP=y
CONFIG_HZ_100=y
+CONFIG_KEXEC=y
# CONFIG_HZ_250 is not set
# CONFIG_HZ_1000 is not set
CONFIG_HZ=100
@@ -2865,6 +2866,8 @@ CONFIG_XEN_TPMDEV_BACKEND=m
# CONFIG_XEN_TPMDEV_CLOSE_IF_VTPM_FAILS is not set
CONFIG_XEN_BLKDEV_FRONTEND=y
CONFIG_XEN_NETDEV_FRONTEND=y
+CONFIG_XEN_FRAMEBUFFER=y
+CONFIG_XEN_KEYBOARD=y
CONFIG_XEN_SCRUB_PAGES=y
CONFIG_XEN_DISABLE_SERIAL=y
CONFIG_XEN_SYSFS=y
diff -r a510c94ceaa3 -r 749c399d73df buildconfigs/mk.linux-2.6-xen
--- a/buildconfigs/mk.linux-2.6-xen Tue Dec 12 09:56:06 2006 -0600
+++ b/buildconfigs/mk.linux-2.6-xen Tue Dec 12 09:58:42 2006 -0600
@@ -1,5 +1,5 @@ LINUX_SERIES = 2.6
LINUX_SERIES = 2.6
-LINUX_VER = 2.6.16.32
+LINUX_VER = 2.6.16.33
EXTRAVERSION ?= xen
diff -r a510c94ceaa3 -r 749c399d73df docs/src/user.tex
--- a/docs/src/user.tex Tue Dec 12 09:56:06 2006 -0600
+++ b/docs/src/user.tex Tue Dec 12 09:58:42 2006 -0600
@@ -3240,6 +3240,11 @@ editing \path{grub.conf}.
enabled by the BIOS.
\item [ apic=bigsmp,default,es7000,summit ] Specify NUMA platform.
This can usually be probed automatically.
+\item [ dma\_bits=xxx ] Specify width of DMA
+ addresses in bits. Default is 30 bits (addresses up to 1GB are DMAable).
+\item [ dma\_emergency\_pool=xxx ] Specify lower bound on size of DMA
+ pool below which ordinary allocations will fail rather than fall
+ back to allocating from the DMA pool.
\end{description}
In addition, the following options may be specified on the Xen command
diff -r a510c94ceaa3 -r 749c399d73df docs/xen-api/presentation.tex
--- a/docs/xen-api/presentation.tex Tue Dec 12 09:56:06 2006 -0600
+++ b/docs/xen-api/presentation.tex Tue Dec 12 09:58:42 2006 -0600
@@ -131,9 +131,6 @@ of that class that has the specified {\t
``{\tt get\_by\_name\_label(name)}'' RPC that returns a set of objects of that
class that have the specified {\tt label}.
-\item Each class has a ``{\tt to\_XML()}'' RPC that serialises the
-state of all fields as an XML string.
-
\item Each class has a ``{\tt destroy(Ref x)}'' RPC that explicitly deletes
the persistent object specified by {\tt x} from the system. This is a
non-cascading delete -- if the object being removed is referenced by another
@@ -144,6 +141,6 @@ object then the {\tt destroy} call will
\subsection{Additional RPCs}
As well as the RPCs enumerated above, some classes have additional RPCs
-associated with them. For example, the {\tt VM} class have RPCs for cloning,
+associated with them. For example, the {\tt VM} class has RPCs for cloning,
suspending, starting etc. Such additional RPCs are described explicitly
in the API reference.
diff -r a510c94ceaa3 -r 749c399d73df docs/xen-api/todo.tex
--- a/docs/xen-api/todo.tex Tue Dec 12 09:56:06 2006 -0600
+++ b/docs/xen-api/todo.tex Tue Dec 12 09:58:42 2006 -0600
@@ -34,6 +34,8 @@ code, potential error description, but o
\item Clarify behaviour of progress field on asyncrhonous request polling when
that request fails.
+
+\item Clarify which calls have asynchronous counterparts by marking them as
such in the reference. (Individual getters and setters are too small and quick
to justify having async versions)
\end{itemize}
diff -r a510c94ceaa3 -r 749c399d73df docs/xen-api/wire-protocol.tex
--- a/docs/xen-api/wire-protocol.tex Tue Dec 12 09:56:06 2006 -0600
+++ b/docs/xen-api/wire-protocol.tex Tue Dec 12 09:58:42 2006 -0600
@@ -21,9 +21,9 @@ In our API Reference we specify the sign
In our API Reference we specify the signatures of API functions in the
following
style:
\begin{verbatim}
- (ref_vm Set) Host.ListAllVMs()
-\end{verbatim}
-This specifies that the function with name {\tt Host.ListAllVMs} takes
+ (ref_vm Set) VM.get_all()
+\end{verbatim}
+This specifies that the function with name {\tt VM.get\_all} takes
no parameters and returns a Set of {\tt ref\_vm}s.
These types are mapped onto XML-RPC types in a straight-forward manner:
\begin{itemize}
@@ -105,8 +105,8 @@ the struct contains a second element nam
the struct contains a second element named {\tt ErrorDescription}:
\begin{itemize}
\item The element of the struct named {\tt ErrorDescription} contains
-an array of string values. The first element of the array represents an error
code;
-the remainder of the array represents error parameters relating to that code.
+an array of string values. The first element of the array is an XML-RPC 32-bit
{\tt i4} and represents an error code;
+the remainder of the array are strings representing error parameters relating
to that code.
\end{itemize}
For example, an XML-RPC return value from the {\tt Host.ListAllVMs} function
above
@@ -161,19 +161,19 @@ A session can be terminated with the {\t
\subsection{Synchronous and Asynchronous invocation}
-Each method call (apart from those on ``Session'' and ``Task'' objects)
+Each method call (apart from methods on ``Session'' and ``Task'' objects
+and ``getters'' and ``setters'' derived from fields)
can be made either synchronously or asynchronously.
A synchronous RPC call blocks until the
return value is received; the return value of a synchronous RPC call is
exactly as specified in Section~\ref{synchronous-result}.
-Each of the methods specified in the API Reference is synchronous.
-However, although not listed explicitly in this document, each
-method call has an asynchronous analogue in the {\tt Async}
-namespace. For example, synchronous call {\tt VM.Install(...)}
+Only synchronous API calls are listed explicitly in this document.
+All asynchronous versions are in the special {\tt Async} namespace.
+For example, synchronous call {\tt VM.clone(...)}
(described in Chapter~\ref{api-reference})
has an asynchronous counterpart, {\tt
-Async.VM.Install(...)}, that is non-blocking.
+Async.VM.clone(...)}, that is non-blocking.
Instead of returning its result directly, an asynchronous RPC call
returns a {\tt task-id}; this identifier is subsequently used
@@ -186,39 +186,14 @@ The {\tt task-id} is provided in the {\t
The {\tt task-id} is provided in the {\tt Value} field if {\tt Status} is set
to
{\tt Success}.
-Two special RPC calls are provided to poll the status of
-asynchronous calls:
-\begin{verbatim}
- Array<task_id> Async.Task.GetAllTasks (session_id s)
- task_status Async.Task.GetStatus (session_id s, task_id t)
-\end{verbatim}
-
-{\tt Async.Task.GetAllTasks} returns a set of the currently
-executing asynchronous tasks belong to the current user\footnote{
-%
-The current user is determined by the username that was provided
-to {\tt Session.Login}.
-%
-}.
-
-{\tt Async.Task.GetStatus} returns a {\tt task\_status} result.
-This is an XML-RPC struct with three elements:
-\begin{itemize}
- \item The first element is named {\tt Progress} and contains
-an {\tt Integer} between 0 and 100 representing the estimated percentage of
-the task currently completed.
- \item The second element is named {\tt ETA} and contains a {\tt DateTime}
-representing the estimated time the task will be complete.
- \item The third element is named {\tt Result}. If {\tt Progress}
-is not 100 then {\tt Result} contains the empty string. If {\tt Progress}
-{\em is\/} set to 100, then {\tt Result} contains the function's return
-result (as specified in Section~\ref{synchronous-result})\footnote{
-%
-Recall that this itself is a struct potentially containing status, errorcode,
-value fields etc.
-%
-}.
-\end{itemize}
+The RPC call
+\begin{verbatim}
+ (ref_task Set) Task.get_all(session_id s)
+\end{verbatim}
+returns a set of all task IDs known to the system. The status (including any
+returned result and error codes) of these tasks
+can then be queried by accessing the fields of the Task object in the usual
way.
+Note that, in order to get a consistent snapshot of a task's state, it is
advisable to call the ``get\_record'' function.
\section{Example interactive session}
@@ -267,7 +242,8 @@ Next, the user may acquire a list of all
\begin{verbatim}
>>> all_vms = xen.VM.do_list(session)['Value']
>>> all_vms
-['b7b92d9e-d442-4710-92a5-ab039fd7d89b',
'23e1e837-abbf-4675-b077-d4007989b0cc', '2045dbc0-0734-4eea-9cb2-b8218c6b5bf2',
'3202ae18-a046-4c32-9fda-e32e9631866e']
+['b7b92d9e-d442-4710-92a5-ab039fd7d89b',
'23e1e837-abbf-4675-b077-d4007989b0cc',
+ '2045dbc0-0734-4eea-9cb2-b8218c6b5bf2',
'3202ae18-a046-4c32-9fda-e32e9631866e']
\end{verbatim}
Note the VM references are internally UUIDs. Once a reference to a VM has been
acquired a lifecycle operation may be invoked:
diff -r a510c94ceaa3 -r 749c399d73df docs/xen-api/xenapi-datamodel-graph.dot
--- a/docs/xen-api/xenapi-datamodel-graph.dot Tue Dec 12 09:56:06 2006 -0600
+++ b/docs/xen-api/xenapi-datamodel-graph.dot Tue Dec 12 09:58:42 2006 -0600
@@ -1,5 +1,5 @@ digraph g{
digraph g{
-node [ shape=box ]; session [ URL="session.html" ] task [ URL="task.html" ] VM
[ URL="VM.html" ] host [ URL="host.html" ] host_cpu [ URL="host_cpu.html" ]
network [ URL="network.html" ] VIF [ URL="VIF.html" ] PIF [ URL="PIF.html" ] SR
[ URL="SR.html" ] VDI [ URL="VDI.html" ] VBD [ URL="VBD.html" ] VTPM [
URL="VTPM.html" ] user [ URL="user.html" ] debug [ URL="debug.html" ];
+node [ shape=box ]; session [ URL="session.html" ] task [ URL="task.html" ] VM
[ URL="VM.html" ] host [ URL="host.html" ] host_cpu [ URL="host_cpu.html" ]
network [ URL="network.html" ] VIF [ URL="VIF.html" ] PIF [ URL="PIF.html" ] SR
[ URL="SR.html" ] VDI [ URL="VDI.html" ] VBD [ URL="VBD.html" ] VTPM [
URL="VTPM.html" ] console [ URL="console.html" ] user [ URL="user.html" ] debug
[ URL="debug.html" ];
session -> host [ label="this_host(1)" ]
session -> user [ label="this_user(1)" ]
host -> VM [ color="blue", arrowhead="crow", arrowtail="none" ]
@@ -14,4 +14,5 @@ VBD -> VM [ color="blue", arrowhead="non
VBD -> VM [ color="blue", arrowhead="none", arrowtail="crow" ]
VTPM -> VM [ label="backend(1)" ]
VTPM -> VM [ color="blue", arrowhead="none", arrowtail="crow" ]
+console -> VM [ color="blue", arrowhead="none", arrowtail="crow" ]
}
diff -r a510c94ceaa3 -r 749c399d73df docs/xen-api/xenapi-datamodel.tex
--- a/docs/xen-api/xenapi-datamodel.tex Tue Dec 12 09:56:06 2006 -0600
+++ b/docs/xen-api/xenapi-datamodel.tex Tue Dec 12 09:58:42 2006 -0600
@@ -23,7 +23,7 @@ Name & Description \\
Name & Description \\
\hline
{\tt session} & A session \\
-{\tt task} & A longrunning asynchronous task \\
+{\tt task} & A long-running asynchronous task \\
{\tt VM} & A virtual machine (or 'guest') \\
{\tt host} & A physical host \\
{\tt host\_cpu} & A physical CPU \\
@@ -34,6 +34,7 @@ Name & Description \\
{\tt VDI} & A virtual disk image \\
{\tt VBD} & A virtual block device \\
{\tt VTPM} & A virtual TPM device \\
+{\tt console} & A console \\
{\tt user} & A user of the system \\
{\tt debug} & A basic class for testing \\
\hline
@@ -54,6 +55,7 @@ PIF.network & network.PIFs & one-to-many
PIF.network & network.PIFs & one-to-many\\
SR.VDIs & VDI.SR & many-to-one\\
VTPM.VM & VM.VTPMs & one-to-many\\
+console.VM & VM.consoles & one-to-many\\
host.resident\_VMs & VM.resident\_on & many-to-one\\
host.host\_CPUs & host\_cpu.host & many-to-one\\
\hline
@@ -99,6 +101,17 @@ The following enumeration types are used
\begin{longtable}{|ll|}
\hline
+{\tt enum console\_protocol} & \\
+\hline
+\hspace{0.5cm}{\tt vt100} & VT100 terminal \\
+\hspace{0.5cm}{\tt rfb} & Remote FrameBuffer protocol (as used in VNC) \\
+\hspace{0.5cm}{\tt rdp} & Remote Desktop Protocol \\
+\hline
+\end{longtable}
+
+\vspace{1cm}
+\begin{longtable}{|ll|}
+\hline
{\tt enum vdi\_type} & \\
\hline
\hspace{0.5cm}{\tt system} & a disk that may be replaced on upgrade \\
@@ -118,6 +131,17 @@ The following enumeration types are used
\hspace{0.5cm}{\tt Suspended} & Suspended \\
\hspace{0.5cm}{\tt ShuttingDown} & Shutting Down \\
\hspace{0.5cm}{\tt Unknown} & Some other unknown state \\
+\hline
+\end{longtable}
+
+\vspace{1cm}
+\begin{longtable}{|ll|}
+\hline
+{\tt enum task\_status\_type} & \\
+\hline
+\hspace{0.5cm}{\tt pending} & task is in progress \\
+\hspace{0.5cm}{\tt success} & task was completed successfully \\
+\hspace{0.5cm}{\tt failure} & task has failed \\
\hline
\end{longtable}
@@ -242,6 +266,16 @@ The following enumeration types are used
\vspace{1cm}
\begin{longtable}{|ll|}
\hline
+{\tt enum vbd\_type} & \\
+\hline
+\hspace{0.5cm}{\tt CD} & VBD will appear to guest as CD \\
+\hspace{0.5cm}{\tt Disk} & VBD will appear to guest as disk \\
+\hline
+\end{longtable}
+
+\vspace{1cm}
+\begin{longtable}{|ll|}
+\hline
{\tt enum driver\_type} & \\
\hline
\hspace{0.5cm}{\tt ioemu} & use hardware emulation \\
@@ -261,6 +295,7 @@ The following enumeration types are used
\hline
Quals & Field & Type & Description \\
\hline
+$\mathit{RO}_\mathit{run}$ & {\tt uuid} & string & unique identifier/object
reference \\
$\mathit{RO}_\mathit{ins}$ & {\tt this\_host} & host ref & Currently
connected host \\
$\mathit{RO}_\mathit{ins}$ & {\tt this\_user} & user ref & Currently
connected user \\
\hline
@@ -321,10 +356,42 @@ void
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
+\subsubsection{RPC name:~get\_uuid}
+
+{\bf Overview:}
+Get the uuid field of the given session.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} string get_uuid (session_id s, session ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt session ref } & self & reference to the object \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+string
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
\subsubsection{RPC name:~get\_this\_host}
{\bf Overview:}
-get accessor message derived from field this\_host of object session
+Get the this\_host field of the given session.
\noindent {\bf Signature:}
\begin{verbatim} (host ref) get_this_host (session_id s, session ref
self)\end{verbatim}
@@ -337,7 +404,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt session ref } & self & object instance \\ \hline
+{\tt session ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -356,7 +423,7 @@ value of the field
\subsubsection{RPC name:~get\_this\_user}
{\bf Overview:}
-get accessor message derived from field this\_user of object session
+Get the this\_user field of the given session.
\noindent {\bf Signature:}
\begin{verbatim} (user ref) get_this_user (session_id s, session ref
self)\end{verbatim}
@@ -369,7 +436,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt session ref } & self & object instance \\ \hline
+{\tt session ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -388,7 +455,7 @@ value of the field
\subsubsection{RPC name:~create}
{\bf Overview:}
-constructor for class session
+Create a new session instance, and return its handle.
\noindent {\bf Signature:}
\begin{verbatim} (session ref) create (session_id s, session record
args)\end{verbatim}
@@ -420,7 +487,7 @@ reference to the newly created object
\subsubsection{RPC name:~destroy}
{\bf Overview:}
-destructor for class session
+Destroy the specified session instance.
\noindent {\bf Signature:}
\begin{verbatim} void destroy (session_id s, session ref self)\end{verbatim}
@@ -433,7 +500,7 @@ destructor for class session
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt session ref } & self & object instance \\ \hline
+{\tt session ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -452,7 +519,7 @@ void
\subsubsection{RPC name:~get\_by\_uuid}
{\bf Overview:}
-returns the session instance with a particular uuid
+Get a reference to the session instance with the specified UUID.
\noindent {\bf Signature:}
\begin{verbatim} (session ref) get_by_uuid (session_id s, string
uuid)\end{verbatim}
@@ -484,7 +551,7 @@ reference to the object
\subsubsection{RPC name:~get\_record}
{\bf Overview:}
-returns a record containing the state of an instance of class session
+Get a record containing the current state of the given session.
\noindent {\bf Signature:}
\begin{verbatim} (session record) get_record (session_id s, session ref
self)\end{verbatim}
@@ -521,89 +588,321 @@ all fields from the object
\begin{longtable}{|lllp{0.38\textwidth}|}
\hline
\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf task} \\
-\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em A
longrunning asynchronous task}} \\
+\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em A
long-running asynchronous task}} \\
\hline
Quals & Field & Type & Description \\
\hline
$\mathit{RO}_\mathit{run}$ & {\tt uuid} & string & unique identifier/object
reference \\
$\mathit{RW}$ & {\tt name/label} & string & a human-readable name \\
$\mathit{RW}$ & {\tt name/description} & string & a notes field containg
human-readable description \\
+$\mathit{RO}_\mathit{run}$ & {\tt status} & task\_status\_type & current
status of the task \\
+$\mathit{RO}_\mathit{run}$ & {\tt progress} & int & if the task is still
pending, this field contains the estimated percentage complete (0-100). If task
has completed (successfully or unsuccessfully) this should be 100. \\
+$\mathit{RO}_\mathit{run}$ & {\tt eta} & datetime & if the task is still
pending, this field contains the estimated completion time. If the task has
finished (successfully or not) it contains the time the task finished. \\
+$\mathit{RO}_\mathit{run}$ & {\tt type} & string & if the task has completed
successfully, this field contains the type of the encoded result (i.e. name of
the class whose reference is in the result field). Undefined otherwise. \\
+$\mathit{RO}_\mathit{run}$ & {\tt result} & string & if the task has
completed successfully, this field contains the result value (either Void or an
object reference). Undefined otherwise. \\
+$\mathit{RO}_\mathit{run}$ & {\tt error\_code} & int & if the task has
failed, this field contains the error code. Undefined otherwise. \\
+$\mathit{RO}_\mathit{run}$ & {\tt error\_info} & string Set & if the task has
failed, this field contains the set of associated error strings. Undefined
otherwise. \\
\hline
\end{longtable}
\subsection{Additional RPCs associated with class: task}
+\subsubsection{RPC name:~get\_all}
+
+{\bf Overview:}
+Return a list of all the tasks known to the system
+
+ \noindent {\bf Signature:}
+\begin{verbatim} ((task ref) Set) get_all (session_id s)\end{verbatim}
+
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+(task ref) Set
+}
+
+
+references to all objects
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_uuid}
+
+{\bf Overview:}
+Get the uuid field of the given task.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} string get_uuid (session_id s, task ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt task ref } & self & reference to the object \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+string
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_name\_label}
+
+{\bf Overview:}
+Get the name/label field of the given task.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} string get_name_label (session_id s, task ref
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt task ref } & self & reference to the object \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+string
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~set\_name\_label}
+
+{\bf Overview:}
+Set the name/label field of the given task.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} void set_name_label (session_id s, task ref self, string
value)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt task ref } & self & reference to the object \\ \hline
+
+{\tt string } & value & New value to set \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_name\_description}
+
+{\bf Overview:}
+Get the name/description field of the given task.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} string get_name_description (session_id s, task ref
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt task ref } & self & reference to the object \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+string
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~set\_name\_description}
+
+{\bf Overview:}
+Set the name/description field of the given task.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} void set_name_description (session_id s, task ref self,
string value)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt task ref } & self & reference to the object \\ \hline
+
+{\tt string } & value & New value to set \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
\subsubsection{RPC name:~get\_status}
{\bf Overview:}
-Poll a running asynchronous RPC invocation and query its status
-
- \noindent {\bf Signature:}
-\begin{verbatim} (uuid ref) get_status (session_id s, task ref
task)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
-
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt task ref } & task & The ID of the RPC call to poll \\ \hline
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:}
-{\tt
-uuid ref
-}
-
-
-String describing status of specified asynchronous RPC invocation, including
estimated completion time
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~get\_all\_tasks}
-
-{\bf Overview:}
-List all asynchronous RPC calls currently executing
-
- \noindent {\bf Signature:}
-\begin{verbatim} ((task ref) Set) get_all_tasks (session_id s)\end{verbatim}
-
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:}
-{\tt
-(task ref) Set
-}
-
-
-A list of tasks currently executing. Note that
-tasks are associated with users rather than sessions. Thus, if you logout and
-login again with a different session but the same user, this function will
still
-return the user's running tasks.
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~get\_uuid}
-
-{\bf Overview:}
-get accessor message derived from field uuid of object task
-
- \noindent {\bf Signature:}
-\begin{verbatim} string get_uuid (session_id s, task ref self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
-
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt task ref } & self & object instance \\ \hline
+Get the status field of the given task.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} (task_status_type) get_status (session_id s, task ref
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt task ref } & self & reference to the object \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+task\_status\_type
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_progress}
+
+{\bf Overview:}
+Get the progress field of the given task.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} int get_progress (session_id s, task ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt task ref } & self & reference to the object \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+int
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_eta}
+
+{\bf Overview:}
+Get the eta field of the given task.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} datetime get_eta (session_id s, task ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt task ref } & self & reference to the object \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+datetime
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_type}
+
+{\bf Overview:}
+Get the type field of the given task.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} string get_type (session_id s, task ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt task ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -619,23 +918,23 @@ value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
-\subsubsection{RPC name:~get\_name\_label}
-
-{\bf Overview:}
-get accessor message derived from field name/label of object task
-
- \noindent {\bf Signature:}
-\begin{verbatim} string get_name_label (session_id s, task ref
self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
-
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt task ref } & self & object instance \\ \hline
+\subsubsection{RPC name:~get\_result}
+
+{\bf Overview:}
+Get the result field of the given task.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} string get_result (session_id s, task ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt task ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -651,25 +950,119 @@ value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
-\subsubsection{RPC name:~set\_name\_label}
-
-{\bf Overview:}
-set accessor message derived from field name/label of object task
-
- \noindent {\bf Signature:}
-\begin{verbatim} void set_name_label (session_id s, task ref self, string
value)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
-
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt task ref } & self & object instance \\ \hline
-
-{\tt string } & value & New value to set \\ \hline
+\subsubsection{RPC name:~get\_error\_code}
+
+{\bf Overview:}
+Get the error\_code field of the given task.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} int get_error_code (session_id s, task ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt task ref } & self & reference to the object \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+int
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_error\_info}
+
+{\bf Overview:}
+Get the error\_info field of the given task.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} (string Set) get_error_info (session_id s, task ref
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt task ref } & self & reference to the object \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+string Set
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~create}
+
+{\bf Overview:}
+Create a new task instance, and return its handle.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} (task ref) create (session_id s, task record
args)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt task record } & args & All constructor arguments \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+task ref
+}
+
+
+reference to the newly created object
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~destroy}
+
+{\bf Overview:}
+Destroy the specified task instance.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} void destroy (session_id s, task ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt task ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -685,89 +1078,23 @@ void
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
-\subsubsection{RPC name:~get\_name\_description}
-
-{\bf Overview:}
-get accessor message derived from field name/description of object task
-
- \noindent {\bf Signature:}
-\begin{verbatim} string get_name_description (session_id s, task ref
self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
-
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt task ref } & self & object instance \\ \hline
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:}
-{\tt
-string
-}
-
-
-value of the field
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~set\_name\_description}
-
-{\bf Overview:}
-set accessor message derived from field name/description of object task
-
- \noindent {\bf Signature:}
-\begin{verbatim} void set_name_description (session_id s, task ref self,
string value)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
-
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt task ref } & self & object instance \\ \hline
-
-{\tt string } & value & New value to set \\ \hline
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:}
-{\tt
-void
-}
-
-
-
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~create}
-
-{\bf Overview:}
-constructor for class task
-
- \noindent {\bf Signature:}
-\begin{verbatim} (task ref) create (session_id s, task record
args)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
-
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt task record } & args & All constructor arguments \\ \hline
+\subsubsection{RPC name:~get\_by\_uuid}
+
+{\bf Overview:}
+Get a reference to the task instance with the specified UUID.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} (task ref) get_by_uuid (session_id s, string
uuid)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt string } & uuid & UUID of object to return \\ \hline
\end{tabular}
@@ -779,70 +1106,6 @@ task ref
}
-reference to the newly created object
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~destroy}
-
-{\bf Overview:}
-destructor for class task
-
- \noindent {\bf Signature:}
-\begin{verbatim} void destroy (session_id s, task ref self)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
-
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt task ref } & self & object instance \\ \hline
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:}
-{\tt
-void
-}
-
-
-
-\vspace{0.3cm}
-\vspace{0.3cm}
-\vspace{0.3cm}
-\subsubsection{RPC name:~get\_by\_uuid}
-
-{\bf Overview:}
-returns the task instance with a particular uuid
-
- \noindent {\bf Signature:}
-\begin{verbatim} (task ref) get_by_uuid (session_id s, string
uuid)\end{verbatim}
-
-
-\noindent{\bf Arguments:}
-
-
-\vspace{0.3cm}
-\begin{tabular}{|c|c|p{7cm}|}
- \hline
-{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt string } & uuid & UUID of object to return \\ \hline
-
-\end{tabular}
-
-\vspace{0.3cm}
-
- \noindent {\bf Return Type:}
-{\tt
-task ref
-}
-
-
reference to the object
\vspace{0.3cm}
\vspace{0.3cm}
@@ -850,7 +1113,7 @@ reference to the object
\subsubsection{RPC name:~get\_record}
{\bf Overview:}
-returns a record containing the state of an instance of class task
+Get a record containing the current state of the given task.
\noindent {\bf Signature:}
\begin{verbatim} (task record) get_record (session_id s, task ref
self)\end{verbatim}
@@ -882,7 +1145,7 @@ all fields from the object
\subsubsection{RPC name:~get\_by\_name\_label}
{\bf Overview:}
-returns the task instance with a particular name label
+Get all the task instances with the given label.
\noindent {\bf Signature:}
\begin{verbatim} ((task ref) Set) get_by_name_label (session_id s, string
label)\end{verbatim}
@@ -929,15 +1192,16 @@ Quals & Field & Type & Description \\
$\mathit{RW}$ & {\tt name/description} & string & a notes field containg
human-readable description \\
$\mathit{RW}$ & {\tt user\_version} & int & a user version number for this
machine \\
$\mathit{RW}$ & {\tt is\_a\_template} & bool & true if this is a template.
Template VMs can never be started, they are used only for cloning other VMs \\
+$\mathit{RW}$ & {\tt auto\_power\_on} & bool & true if this VM should be
started automatically after host boot \\
$\mathit{RO}_\mathit{run}$ & {\tt resident\_on} & host ref & the host the VM
is currently resident on \\
-$\mathit{RO}_\mathit{ins}$ & {\tt memory/static\_max} & int & Statically-set
(i.e. absolute) maximum \\
-$\mathit{RW}$ & {\tt memory/dynamic\_max} & int & Dynamic maximum \\
-$\mathit{RO}_\mathit{run}$ & {\tt memory/actual} & int & Guest's actual usage
\\
-$\mathit{RW}$ & {\tt memory/dynamic\_min} & int & Dynamic minimum \\
-$\mathit{RO}_\mathit{ins}$ & {\tt memory/static\_min} & int & Statically-set
(i.e. absolute) mininum \\
+$\mathit{RO}_\mathit{ins}$ & {\tt memory/static\_max} & int & Statically-set
(i.e. absolute) maximum (bytes) \\
+$\mathit{RW}$ & {\tt memory/dynamic\_max} & int & Dynamic maximum (bytes) \\
+$\mathit{RO}_\mathit{run}$ & {\tt memory/actual} & int & Guest's actual usage
(bytes) \\
+$\mathit{RW}$ & {\tt memory/dynamic\_min} & int & Dynamic minimum (bytes) \\
+$\mathit{RO}_\mathit{ins}$ & {\tt memory/static\_min} & int & Statically-set
(i.e. absolute) mininum (bytes) \\
$\mathit{RW}$ & {\tt VCPUs/policy} & string & the name of the VCPU scheduling
policy to be applied \\
$\mathit{RW}$ & {\tt VCPUs/params} & string & string-encoded parameters
passed to selected VCPU policy \\
-$\mathit{RO}_\mathit{run}$ & {\tt VCPUs/number} & int & Current number of
VCPUs \\
+$\mathit{RW}$ & {\tt VCPUs/number} & int & Current number of VCPUs \\
$\mathit{RO}_\mathit{run}$ & {\tt VCPUs/utilisation} & (int $\rightarrow$
float) Map & Utilisation for all of guest's current VCPUs \\
$\mathit{RO}_\mathit{ins}$ & {\tt VCPUs/features/required} & (cpu\_feature)
Set & CPU features the guest demands the host supports \\
$\mathit{RO}_\mathit{ins}$ & {\tt VCPUs/features/can\_use} & (cpu\_feature)
Set & CPU features the guest can use if available \\
@@ -947,6 +1211,7 @@ Quals & Field & Type & Description \\
$\mathit{RW}$ & {\tt actions/after\_reboot} & on\_normal\_exit & action to
take after the guest has rebooted itself \\
$\mathit{RW}$ & {\tt actions/after\_suspend} & on\_normal\_exit & action to
take after the guest has suspended itself \\
$\mathit{RW}$ & {\tt actions/after\_crash} & on\_crash\_behaviour & action to
take if the guest crashes \\
+$\mathit{RO}_\mathit{run}$ & {\tt consoles} & (console ref) Set & virtual
console devices \\
$\mathit{RO}_\mathit{run}$ & {\tt VIFs} & (VIF ref) Set & virtual network
interfaces \\
$\mathit{RO}_\mathit{run}$ & {\tt VBDs} & (VBD ref) Set & virtual block
devices \\
$\mathit{RO}_\mathit{run}$ & {\tt VTPMs} & (VTPM ref) Set & virtual TPMs \\
@@ -1322,7 +1587,7 @@ A list of all the IDs of all the VMs
\subsubsection{RPC name:~get\_uuid}
{\bf Overview:}
-get accessor message derived from field uuid of object VM
+Get the uuid field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} string get_uuid (session_id s, VM ref self)\end{verbatim}
@@ -1335,7 +1600,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -1354,7 +1619,7 @@ value of the field
\subsubsection{RPC name:~get\_power\_state}
{\bf Overview:}
-get accessor message derived from field power\_state of object VM
+Get the power\_state field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} (vm_power_state) get_power_state (session_id s, VM ref
self)\end{verbatim}
@@ -1367,7 +1632,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -1386,7 +1651,7 @@ value of the field
\subsubsection{RPC name:~get\_name\_label}
{\bf Overview:}
-get accessor message derived from field name/label of object VM
+Get the name/label field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} string get_name_label (session_id s, VM ref
self)\end{verbatim}
@@ -1399,7 +1664,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -1418,7 +1683,7 @@ value of the field
\subsubsection{RPC name:~set\_name\_label}
{\bf Overview:}
-set accessor message derived from field name/label of object VM
+Set the name/label field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} void set_name_label (session_id s, VM ref self, string
value)\end{verbatim}
@@ -1431,7 +1696,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
{\tt string } & value & New value to set \\ \hline
@@ -1452,7 +1717,7 @@ void
\subsubsection{RPC name:~get\_name\_description}
{\bf Overview:}
-get accessor message derived from field name/description of object VM
+Get the name/description field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} string get_name_description (session_id s, VM ref
self)\end{verbatim}
@@ -1465,7 +1730,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -1484,7 +1749,7 @@ value of the field
\subsubsection{RPC name:~set\_name\_description}
{\bf Overview:}
-set accessor message derived from field name/description of object VM
+Set the name/description field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} void set_name_description (session_id s, VM ref self, string
value)\end{verbatim}
@@ -1497,7 +1762,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
{\tt string } & value & New value to set \\ \hline
@@ -1518,7 +1783,7 @@ void
\subsubsection{RPC name:~get\_user\_version}
{\bf Overview:}
-get accessor message derived from field user\_version of object VM
+Get the user\_version field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} int get_user_version (session_id s, VM ref self)\end{verbatim}
@@ -1531,7 +1796,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -1550,7 +1815,7 @@ value of the field
\subsubsection{RPC name:~set\_user\_version}
{\bf Overview:}
-set accessor message derived from field user\_version of object VM
+Set the user\_version field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} void set_user_version (session_id s, VM ref self, int
value)\end{verbatim}
@@ -1563,7 +1828,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
{\tt int } & value & New value to set \\ \hline
@@ -1584,7 +1849,7 @@ void
\subsubsection{RPC name:~get\_is\_a\_template}
{\bf Overview:}
-get accessor message derived from field is\_a\_template of object VM
+Get the is\_a\_template field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} bool get_is_a_template (session_id s, VM ref
self)\end{verbatim}
@@ -1597,7 +1862,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -1616,7 +1881,7 @@ value of the field
\subsubsection{RPC name:~set\_is\_a\_template}
{\bf Overview:}
-set accessor message derived from field is\_a\_template of object VM
+Set the is\_a\_template field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} void set_is_a_template (session_id s, VM ref self, bool
value)\end{verbatim}
@@ -1629,7 +1894,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
{\tt bool } & value & New value to set \\ \hline
@@ -1647,10 +1912,76 @@ void
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
+\subsubsection{RPC name:~get\_auto\_power\_on}
+
+{\bf Overview:}
+Get the auto\_power\_on field of the given VM.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} bool get_auto_power_on (session_id s, VM ref
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+bool
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~set\_auto\_power\_on}
+
+{\bf Overview:}
+Set the auto\_power\_on field of the given VM.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} void set_auto_power_on (session_id s, VM ref self, bool
value)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
+
+{\tt bool } & value & New value to set \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
\subsubsection{RPC name:~get\_resident\_on}
{\bf Overview:}
-get accessor message derived from field resident\_on of object VM
+Get the resident\_on field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} (host ref) get_resident_on (session_id s, VM ref
self)\end{verbatim}
@@ -1663,7 +1994,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -1682,7 +2013,7 @@ value of the field
\subsubsection{RPC name:~get\_memory\_static\_max}
{\bf Overview:}
-get accessor message derived from field memory/static\_max of object VM
+Get the memory/static\_max field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} int get_memory_static_max (session_id s, VM ref
self)\end{verbatim}
@@ -1695,7 +2026,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -1714,7 +2045,7 @@ value of the field
\subsubsection{RPC name:~get\_memory\_dynamic\_max}
{\bf Overview:}
-get accessor message derived from field memory/dynamic\_max of object VM
+Get the memory/dynamic\_max field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} int get_memory_dynamic_max (session_id s, VM ref
self)\end{verbatim}
@@ -1727,7 +2058,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -1746,7 +2077,7 @@ value of the field
\subsubsection{RPC name:~set\_memory\_dynamic\_max}
{\bf Overview:}
-set accessor message derived from field memory/dynamic\_max of object VM
+Set the memory/dynamic\_max field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} void set_memory_dynamic_max (session_id s, VM ref self, int
value)\end{verbatim}
@@ -1759,7 +2090,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
{\tt int } & value & New value to set \\ \hline
@@ -1780,7 +2111,7 @@ void
\subsubsection{RPC name:~get\_memory\_actual}
{\bf Overview:}
-get accessor message derived from field memory/actual of object VM
+Get the memory/actual field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} int get_memory_actual (session_id s, VM ref
self)\end{verbatim}
@@ -1793,7 +2124,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -1812,7 +2143,7 @@ value of the field
\subsubsection{RPC name:~get\_memory\_dynamic\_min}
{\bf Overview:}
-get accessor message derived from field memory/dynamic\_min of object VM
+Get the memory/dynamic\_min field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} int get_memory_dynamic_min (session_id s, VM ref
self)\end{verbatim}
@@ -1825,7 +2156,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -1844,7 +2175,7 @@ value of the field
\subsubsection{RPC name:~set\_memory\_dynamic\_min}
{\bf Overview:}
-set accessor message derived from field memory/dynamic\_min of object VM
+Set the memory/dynamic\_min field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} void set_memory_dynamic_min (session_id s, VM ref self, int
value)\end{verbatim}
@@ -1857,7 +2188,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
{\tt int } & value & New value to set \\ \hline
@@ -1878,7 +2209,7 @@ void
\subsubsection{RPC name:~get\_memory\_static\_min}
{\bf Overview:}
-get accessor message derived from field memory/static\_min of object VM
+Get the memory/static\_min field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} int get_memory_static_min (session_id s, VM ref
self)\end{verbatim}
@@ -1891,7 +2222,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -1910,7 +2241,7 @@ value of the field
\subsubsection{RPC name:~get\_VCPUs\_policy}
{\bf Overview:}
-get accessor message derived from field VCPUs/policy of object VM
+Get the VCPUs/policy field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} string get_VCPUs_policy (session_id s, VM ref
self)\end{verbatim}
@@ -1923,7 +2254,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -1942,7 +2273,7 @@ value of the field
\subsubsection{RPC name:~set\_VCPUs\_policy}
{\bf Overview:}
-set accessor message derived from field VCPUs/policy of object VM
+Set the VCPUs/policy field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} void set_VCPUs_policy (session_id s, VM ref self, string
value)\end{verbatim}
@@ -1955,7 +2286,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
{\tt string } & value & New value to set \\ \hline
@@ -1976,7 +2307,7 @@ void
\subsubsection{RPC name:~get\_VCPUs\_params}
{\bf Overview:}
-get accessor message derived from field VCPUs/params of object VM
+Get the VCPUs/params field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} string get_VCPUs_params (session_id s, VM ref
self)\end{verbatim}
@@ -1989,7 +2320,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -2008,7 +2339,7 @@ value of the field
\subsubsection{RPC name:~set\_VCPUs\_params}
{\bf Overview:}
-set accessor message derived from field VCPUs/params of object VM
+Set the VCPUs/params field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} void set_VCPUs_params (session_id s, VM ref self, string
value)\end{verbatim}
@@ -2021,7 +2352,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
{\tt string } & value & New value to set \\ \hline
@@ -2042,7 +2373,7 @@ void
\subsubsection{RPC name:~get\_VCPUs\_number}
{\bf Overview:}
-get accessor message derived from field VCPUs/number of object VM
+Get the VCPUs/number field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} int get_VCPUs_number (session_id s, VM ref self)\end{verbatim}
@@ -2055,7 +2386,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -2071,10 +2402,44 @@ value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
+\subsubsection{RPC name:~set\_VCPUs\_number}
+
+{\bf Overview:}
+Set the VCPUs/number field of the given VM.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} void set_VCPUs_number (session_id s, VM ref self, int
value)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
+
+{\tt int } & value & New value to set \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
\subsubsection{RPC name:~get\_VCPUs\_utilisation}
{\bf Overview:}
-get accessor message derived from field VCPUs/utilisation of object VM
+Get the VCPUs/utilisation field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} ((int -> float) Map) get_VCPUs_utilisation (session_id s, VM
ref self)\end{verbatim}
@@ -2087,7 +2452,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -2106,7 +2471,7 @@ value of the field
\subsubsection{RPC name:~get\_VCPUs\_features\_required}
{\bf Overview:}
-get accessor message derived from field VCPUs/features/required of object VM
+Get the VCPUs/features/required field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} ((cpu_feature) Set) get_VCPUs_features_required (session_id
s, VM ref self)\end{verbatim}
@@ -2119,7 +2484,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -2138,7 +2503,7 @@ value of the field
\subsubsection{RPC name:~get\_VCPUs\_features\_can\_use}
{\bf Overview:}
-get accessor message derived from field VCPUs/features/can\_use of object VM
+Get the VCPUs/features/can\_use field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} ((cpu_feature) Set) get_VCPUs_features_can_use (session_id s,
VM ref self)\end{verbatim}
@@ -2151,7 +2516,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -2170,7 +2535,7 @@ value of the field
\subsubsection{RPC name:~get\_VCPUs\_features\_force\_on}
{\bf Overview:}
-get accessor message derived from field VCPUs/features/force\_on of object VM
+Get the VCPUs/features/force\_on field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} ((cpu_feature) Set) get_VCPUs_features_force_on (session_id
s, VM ref self)\end{verbatim}
@@ -2183,7 +2548,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -2199,6 +2564,40 @@ value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
+\subsubsection{RPC name:~set\_VCPUs\_features\_force\_on}
+
+{\bf Overview:}
+Set the VCPUs/features/force\_on field of the given VM.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} void set_VCPUs_features_force_on (session_id s, VM ref self,
(cpu_feature) Set value)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
+
+{\tt (cpu\_feature) Set } & value & New value to set \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
\subsubsection{RPC name:~add\_VCPUs\_features\_force\_on}
{\bf Overview:}
@@ -2215,7 +2614,7 @@ set add message derived from field VCPUs
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
{\tt cpu\_feature } & value & New value to add \\ \hline
@@ -2249,7 +2648,7 @@ set remove message derived from field VC
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
{\tt cpu\_feature } & value & Value to remove \\ \hline
@@ -2270,7 +2669,7 @@ void
\subsubsection{RPC name:~get\_VCPUs\_features\_force\_off}
{\bf Overview:}
-get accessor message derived from field VCPUs/features/force\_off of object VM
+Get the VCPUs/features/force\_off field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} ((cpu_feature) Set) get_VCPUs_features_force_off (session_id
s, VM ref self)\end{verbatim}
@@ -2283,7 +2682,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -2299,6 +2698,40 @@ value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
+\subsubsection{RPC name:~set\_VCPUs\_features\_force\_off}
+
+{\bf Overview:}
+Set the VCPUs/features/force\_off field of the given VM.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} void set_VCPUs_features_force_off (session_id s, VM ref self,
(cpu_feature) Set value)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
+
+{\tt (cpu\_feature) Set } & value & New value to set \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
\subsubsection{RPC name:~add\_VCPUs\_features\_force\_off}
{\bf Overview:}
@@ -2315,7 +2748,7 @@ set add message derived from field VCPUs
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
{\tt cpu\_feature } & value & New value to add \\ \hline
@@ -2349,7 +2782,7 @@ set remove message derived from field VC
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
{\tt cpu\_feature } & value & Value to remove \\ \hline
@@ -2370,7 +2803,7 @@ void
\subsubsection{RPC name:~get\_actions\_after\_shutdown}
{\bf Overview:}
-get accessor message derived from field actions/after\_shutdown of object VM
+Get the actions/after\_shutdown field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} (on_normal_exit) get_actions_after_shutdown (session_id s, VM
ref self)\end{verbatim}
@@ -2383,7 +2816,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -2402,7 +2835,7 @@ value of the field
\subsubsection{RPC name:~set\_actions\_after\_shutdown}
{\bf Overview:}
-set accessor message derived from field actions/after\_shutdown of object VM
+Set the actions/after\_shutdown field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} void set_actions_after_shutdown (session_id s, VM ref self,
on_normal_exit value)\end{verbatim}
@@ -2415,7 +2848,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
{\tt on\_normal\_exit } & value & New value to set \\ \hline
@@ -2436,7 +2869,7 @@ void
\subsubsection{RPC name:~get\_actions\_after\_reboot}
{\bf Overview:}
-get accessor message derived from field actions/after\_reboot of object VM
+Get the actions/after\_reboot field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} (on_normal_exit) get_actions_after_reboot (session_id s, VM
ref self)\end{verbatim}
@@ -2449,7 +2882,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -2468,7 +2901,7 @@ value of the field
\subsubsection{RPC name:~set\_actions\_after\_reboot}
{\bf Overview:}
-set accessor message derived from field actions/after\_reboot of object VM
+Set the actions/after\_reboot field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} void set_actions_after_reboot (session_id s, VM ref self,
on_normal_exit value)\end{verbatim}
@@ -2481,7 +2914,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
{\tt on\_normal\_exit } & value & New value to set \\ \hline
@@ -2502,7 +2935,7 @@ void
\subsubsection{RPC name:~get\_actions\_after\_suspend}
{\bf Overview:}
-get accessor message derived from field actions/after\_suspend of object VM
+Get the actions/after\_suspend field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} (on_normal_exit) get_actions_after_suspend (session_id s, VM
ref self)\end{verbatim}
@@ -2515,7 +2948,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -2534,7 +2967,7 @@ value of the field
\subsubsection{RPC name:~set\_actions\_after\_suspend}
{\bf Overview:}
-set accessor message derived from field actions/after\_suspend of object VM
+Set the actions/after\_suspend field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} void set_actions_after_suspend (session_id s, VM ref self,
on_normal_exit value)\end{verbatim}
@@ -2547,7 +2980,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
{\tt on\_normal\_exit } & value & New value to set \\ \hline
@@ -2568,7 +3001,7 @@ void
\subsubsection{RPC name:~get\_actions\_after\_crash}
{\bf Overview:}
-get accessor message derived from field actions/after\_crash of object VM
+Get the actions/after\_crash field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} (on_crash_behaviour) get_actions_after_crash (session_id s,
VM ref self)\end{verbatim}
@@ -2581,7 +3014,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -2600,7 +3033,7 @@ value of the field
\subsubsection{RPC name:~set\_actions\_after\_crash}
{\bf Overview:}
-set accessor message derived from field actions/after\_crash of object VM
+Set the actions/after\_crash field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} void set_actions_after_crash (session_id s, VM ref self,
on_crash_behaviour value)\end{verbatim}
@@ -2613,7 +3046,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
{\tt on\_crash\_behaviour } & value & New value to set \\ \hline
@@ -2631,10 +3064,42 @@ void
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
+\subsubsection{RPC name:~get\_consoles}
+
+{\bf Overview:}
+Get the consoles field of the given VM.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} ((console ref) Set) get_consoles (session_id s, VM ref
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+(console ref) Set
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
\subsubsection{RPC name:~get\_VIFs}
{\bf Overview:}
-get accessor message derived from field VIFs of object VM
+Get the VIFs field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} ((VIF ref) Set) get_VIFs (session_id s, VM ref
self)\end{verbatim}
@@ -2647,7 +3112,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -2666,7 +3131,7 @@ value of the field
\subsubsection{RPC name:~get\_VBDs}
{\bf Overview:}
-get accessor message derived from field VBDs of object VM
+Get the VBDs field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} ((VBD ref) Set) get_VBDs (session_id s, VM ref
self)\end{verbatim}
@@ -2679,7 +3144,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -2698,7 +3163,7 @@ value of the field
\subsubsection{RPC name:~get\_VTPMs}
{\bf Overview:}
-get accessor message derived from field VTPMs of object VM
+Get the VTPMs field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} ((VTPM ref) Set) get_VTPMs (session_id s, VM ref
self)\end{verbatim}
@@ -2711,7 +3176,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -2730,7 +3195,7 @@ value of the field
\subsubsection{RPC name:~get\_bios\_boot}
{\bf Overview:}
-get accessor message derived from field bios/boot of object VM
+Get the bios/boot field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} string get_bios_boot (session_id s, VM ref self)\end{verbatim}
@@ -2743,7 +3208,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -2762,7 +3227,7 @@ value of the field
\subsubsection{RPC name:~set\_bios\_boot}
{\bf Overview:}
-set accessor message derived from field bios/boot of object VM
+Set the bios/boot field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} void set_bios_boot (session_id s, VM ref self, string
value)\end{verbatim}
@@ -2775,7 +3240,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
{\tt string } & value & New value to set \\ \hline
@@ -2796,7 +3261,7 @@ void
\subsubsection{RPC name:~get\_platform\_std\_VGA}
{\bf Overview:}
-get accessor message derived from field platform/std\_VGA of object VM
+Get the platform/std\_VGA field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} bool get_platform_std_VGA (session_id s, VM ref
self)\end{verbatim}
@@ -2809,7 +3274,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -2828,7 +3293,7 @@ value of the field
\subsubsection{RPC name:~set\_platform\_std\_VGA}
{\bf Overview:}
-set accessor message derived from field platform/std\_VGA of object VM
+Set the platform/std\_VGA field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} void set_platform_std_VGA (session_id s, VM ref self, bool
value)\end{verbatim}
@@ -2841,7 +3306,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
{\tt bool } & value & New value to set \\ \hline
@@ -2862,7 +3327,7 @@ void
\subsubsection{RPC name:~get\_platform\_serial}
{\bf Overview:}
-get accessor message derived from field platform/serial of object VM
+Get the platform/serial field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} string get_platform_serial (session_id s, VM ref
self)\end{verbatim}
@@ -2875,7 +3340,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -2894,7 +3359,7 @@ value of the field
\subsubsection{RPC name:~set\_platform\_serial}
{\bf Overview:}
-set accessor message derived from field platform/serial of object VM
+Set the platform/serial field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} void set_platform_serial (session_id s, VM ref self, string
value)\end{verbatim}
@@ -2907,7 +3372,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
{\tt string } & value & New value to set \\ \hline
@@ -2928,7 +3393,7 @@ void
\subsubsection{RPC name:~get\_platform\_localtime}
{\bf Overview:}
-get accessor message derived from field platform/localtime of object VM
+Get the platform/localtime field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} bool get_platform_localtime (session_id s, VM ref
self)\end{verbatim}
@@ -2941,7 +3406,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -2960,7 +3425,7 @@ value of the field
\subsubsection{RPC name:~set\_platform\_localtime}
{\bf Overview:}
-set accessor message derived from field platform/localtime of object VM
+Set the platform/localtime field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} void set_platform_localtime (session_id s, VM ref self, bool
value)\end{verbatim}
@@ -2973,7 +3438,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
{\tt bool } & value & New value to set \\ \hline
@@ -2994,7 +3459,7 @@ void
\subsubsection{RPC name:~get\_platform\_clock\_offset}
{\bf Overview:}
-get accessor message derived from field platform/clock\_offset of object VM
+Get the platform/clock\_offset field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} bool get_platform_clock_offset (session_id s, VM ref
self)\end{verbatim}
@@ -3007,7 +3472,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -3026,7 +3491,7 @@ value of the field
\subsubsection{RPC name:~set\_platform\_clock\_offset}
{\bf Overview:}
-set accessor message derived from field platform/clock\_offset of object VM
+Set the platform/clock\_offset field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} void set_platform_clock_offset (session_id s, VM ref self,
bool value)\end{verbatim}
@@ -3039,7 +3504,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
{\tt bool } & value & New value to set \\ \hline
@@ -3060,7 +3525,7 @@ void
\subsubsection{RPC name:~get\_platform\_enable\_audio}
{\bf Overview:}
-get accessor message derived from field platform/enable\_audio of object VM
+Get the platform/enable\_audio field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} bool get_platform_enable_audio (session_id s, VM ref
self)\end{verbatim}
@@ -3073,7 +3538,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -3092,7 +3557,7 @@ value of the field
\subsubsection{RPC name:~set\_platform\_enable\_audio}
{\bf Overview:}
-set accessor message derived from field platform/enable\_audio of object VM
+Set the platform/enable\_audio field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} void set_platform_enable_audio (session_id s, VM ref self,
bool value)\end{verbatim}
@@ -3105,7 +3570,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
{\tt bool } & value & New value to set \\ \hline
@@ -3126,7 +3591,7 @@ void
\subsubsection{RPC name:~get\_builder}
{\bf Overview:}
-get accessor message derived from field builder of object VM
+Get the builder field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} string get_builder (session_id s, VM ref self)\end{verbatim}
@@ -3139,7 +3604,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -3158,7 +3623,7 @@ value of the field
\subsubsection{RPC name:~set\_builder}
{\bf Overview:}
-set accessor message derived from field builder of object VM
+Set the builder field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} void set_builder (session_id s, VM ref self, string
value)\end{verbatim}
@@ -3171,7 +3636,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
{\tt string } & value & New value to set \\ \hline
@@ -3192,7 +3657,7 @@ void
\subsubsection{RPC name:~get\_boot\_method}
{\bf Overview:}
-get accessor message derived from field boot\_method of object VM
+Get the boot\_method field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} (boot_type) get_boot_method (session_id s, VM ref
self)\end{verbatim}
@@ -3205,7 +3670,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -3224,7 +3689,7 @@ value of the field
\subsubsection{RPC name:~set\_boot\_method}
{\bf Overview:}
-set accessor message derived from field boot\_method of object VM
+Set the boot\_method field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} void set_boot_method (session_id s, VM ref self, boot_type
value)\end{verbatim}
@@ -3237,7 +3702,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
{\tt boot\_type } & value & New value to set \\ \hline
@@ -3258,7 +3723,7 @@ void
\subsubsection{RPC name:~get\_kernel\_kernel}
{\bf Overview:}
-get accessor message derived from field kernel/kernel of object VM
+Get the kernel/kernel field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} string get_kernel_kernel (session_id s, VM ref
self)\end{verbatim}
@@ -3271,7 +3736,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -3290,7 +3755,7 @@ value of the field
\subsubsection{RPC name:~set\_kernel\_kernel}
{\bf Overview:}
-set accessor message derived from field kernel/kernel of object VM
+Set the kernel/kernel field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} void set_kernel_kernel (session_id s, VM ref self, string
value)\end{verbatim}
@@ -3303,7 +3768,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
{\tt string } & value & New value to set \\ \hline
@@ -3324,7 +3789,7 @@ void
\subsubsection{RPC name:~get\_kernel\_initrd}
{\bf Overview:}
-get accessor message derived from field kernel/initrd of object VM
+Get the kernel/initrd field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} string get_kernel_initrd (session_id s, VM ref
self)\end{verbatim}
@@ -3337,7 +3802,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -3356,7 +3821,7 @@ value of the field
\subsubsection{RPC name:~set\_kernel\_initrd}
{\bf Overview:}
-set accessor message derived from field kernel/initrd of object VM
+Set the kernel/initrd field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} void set_kernel_initrd (session_id s, VM ref self, string
value)\end{verbatim}
@@ -3369,7 +3834,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
{\tt string } & value & New value to set \\ \hline
@@ -3390,7 +3855,7 @@ void
\subsubsection{RPC name:~get\_kernel\_args}
{\bf Overview:}
-get accessor message derived from field kernel/args of object VM
+Get the kernel/args field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} string get_kernel_args (session_id s, VM ref
self)\end{verbatim}
@@ -3403,7 +3868,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -3422,7 +3887,7 @@ value of the field
\subsubsection{RPC name:~set\_kernel\_args}
{\bf Overview:}
-set accessor message derived from field kernel/args of object VM
+Set the kernel/args field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} void set_kernel_args (session_id s, VM ref self, string
value)\end{verbatim}
@@ -3435,7 +3900,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
{\tt string } & value & New value to set \\ \hline
@@ -3456,7 +3921,7 @@ void
\subsubsection{RPC name:~get\_grub\_cmdline}
{\bf Overview:}
-get accessor message derived from field grub/cmdline of object VM
+Get the grub/cmdline field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} string get_grub_cmdline (session_id s, VM ref
self)\end{verbatim}
@@ -3469,7 +3934,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -3488,7 +3953,7 @@ value of the field
\subsubsection{RPC name:~set\_grub\_cmdline}
{\bf Overview:}
-set accessor message derived from field grub/cmdline of object VM
+Set the grub/cmdline field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} void set_grub_cmdline (session_id s, VM ref self, string
value)\end{verbatim}
@@ -3501,7 +3966,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
{\tt string } & value & New value to set \\ \hline
@@ -3522,7 +3987,7 @@ void
\subsubsection{RPC name:~get\_PCI\_bus}
{\bf Overview:}
-get accessor message derived from field PCI\_bus of object VM
+Get the PCI\_bus field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} string get_PCI_bus (session_id s, VM ref self)\end{verbatim}
@@ -3535,7 +4000,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -3554,7 +4019,7 @@ value of the field
\subsubsection{RPC name:~get\_tools\_version}
{\bf Overview:}
-get accessor message derived from field tools\_version of object VM
+Get the tools\_version field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} ((string -> string) Map) get_tools_version (session_id s, VM
ref self)\end{verbatim}
@@ -3567,7 +4032,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -3586,7 +4051,7 @@ value of the field
\subsubsection{RPC name:~get\_otherConfig}
{\bf Overview:}
-get accessor message derived from field otherConfig of object VM
+Get the otherConfig field of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} ((string -> string) Map) get_otherConfig (session_id s, VM
ref self)\end{verbatim}
@@ -3599,7 +4064,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -3615,6 +4080,40 @@ value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
+\subsubsection{RPC name:~set\_otherConfig}
+
+{\bf Overview:}
+Set the otherConfig field of the given VM.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} void set_otherConfig (session_id s, VM ref self, (string ->
string) Map value)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
+
+{\tt (string $\rightarrow$ string) Map } & value & New value to set \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
\subsubsection{RPC name:~add\_to\_otherConfig}
{\bf Overview:}
@@ -3631,7 +4130,7 @@ map add message derived from field other
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
{\tt string } & key & Key to add \\ \hline
@@ -3667,7 +4166,7 @@ map remove message derived from field ot
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
{\tt string } & key & Key to remove \\ \hline
@@ -3688,7 +4187,7 @@ void
\subsubsection{RPC name:~create}
{\bf Overview:}
-constructor for class VM
+Create a new VM instance, and return its handle.
\noindent {\bf Signature:}
\begin{verbatim} (VM ref) create (session_id s, VM record args)\end{verbatim}
@@ -3720,7 +4219,7 @@ reference to the newly created object
\subsubsection{RPC name:~destroy}
{\bf Overview:}
-destructor for class VM
+Destroy the specified VM. The VM is completely removed from the system. This
function can only be called when the VM is in the Halted State.
\noindent {\bf Signature:}
\begin{verbatim} void destroy (session_id s, VM ref self)\end{verbatim}
@@ -3733,7 +4232,7 @@ destructor for class VM
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VM ref } & self & object instance \\ \hline
+{\tt VM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -3752,7 +4251,7 @@ void
\subsubsection{RPC name:~get\_by\_uuid}
{\bf Overview:}
-returns the VM instance with a particular uuid
+Get a reference to the VM instance with the specified UUID.
\noindent {\bf Signature:}
\begin{verbatim} (VM ref) get_by_uuid (session_id s, string uuid)\end{verbatim}
@@ -3784,7 +4283,7 @@ reference to the object
\subsubsection{RPC name:~get\_record}
{\bf Overview:}
-returns a record containing the state of an instance of class VM
+Get a record containing the current state of the given VM.
\noindent {\bf Signature:}
\begin{verbatim} (VM record) get_record (session_id s, VM ref
self)\end{verbatim}
@@ -3816,7 +4315,7 @@ all fields from the object
\subsubsection{RPC name:~get\_by\_name\_label}
{\bf Overview:}
-returns the VM instance with a particular name label
+Get all the VM instances with the given label.
\noindent {\bf Signature:}
\begin{verbatim} ((VM ref) Set) get_by_name_label (session_id s, string
label)\end{verbatim}
@@ -4019,7 +4518,7 @@ A list of all the IDs of all the hosts
\subsubsection{RPC name:~get\_uuid}
{\bf Overview:}
-get accessor message derived from field uuid of object host
+Get the uuid field of the given host.
\noindent {\bf Signature:}
\begin{verbatim} string get_uuid (session_id s, host ref self)\end{verbatim}
@@ -4032,7 +4531,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt host ref } & self & object instance \\ \hline
+{\tt host ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -4051,7 +4550,7 @@ value of the field
\subsubsection{RPC name:~get\_name\_label}
{\bf Overview:}
-get accessor message derived from field name/label of object host
+Get the name/label field of the given host.
\noindent {\bf Signature:}
\begin{verbatim} string get_name_label (session_id s, host ref
self)\end{verbatim}
@@ -4064,7 +4563,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt host ref } & self & object instance \\ \hline
+{\tt host ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -4083,7 +4582,7 @@ value of the field
\subsubsection{RPC name:~set\_name\_label}
{\bf Overview:}
-set accessor message derived from field name/label of object host
+Set the name/label field of the given host.
\noindent {\bf Signature:}
\begin{verbatim} void set_name_label (session_id s, host ref self, string
value)\end{verbatim}
@@ -4096,7 +4595,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt host ref } & self & object instance \\ \hline
+{\tt host ref } & self & reference to the object \\ \hline
{\tt string } & value & New value to set \\ \hline
@@ -4117,7 +4616,7 @@ void
\subsubsection{RPC name:~get\_name\_description}
{\bf Overview:}
-get accessor message derived from field name/description of object host
+Get the name/description field of the given host.
\noindent {\bf Signature:}
\begin{verbatim} string get_name_description (session_id s, host ref
self)\end{verbatim}
@@ -4130,7 +4629,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt host ref } & self & object instance \\ \hline
+{\tt host ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -4149,7 +4648,7 @@ value of the field
\subsubsection{RPC name:~set\_name\_description}
{\bf Overview:}
-set accessor message derived from field name/description of object host
+Set the name/description field of the given host.
\noindent {\bf Signature:}
\begin{verbatim} void set_name_description (session_id s, host ref self,
string value)\end{verbatim}
@@ -4162,7 +4661,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt host ref } & self & object instance \\ \hline
+{\tt host ref } & self & reference to the object \\ \hline
{\tt string } & value & New value to set \\ \hline
@@ -4183,7 +4682,7 @@ void
\subsubsection{RPC name:~get\_software\_version}
{\bf Overview:}
-get accessor message derived from field software\_version of object host
+Get the software\_version field of the given host.
\noindent {\bf Signature:}
\begin{verbatim} ((string -> string) Map) get_software_version (session_id s,
host ref self)\end{verbatim}
@@ -4196,7 +4695,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt host ref } & self & object instance \\ \hline
+{\tt host ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -4215,7 +4714,7 @@ value of the field
\subsubsection{RPC name:~get\_resident\_VMs}
{\bf Overview:}
-get accessor message derived from field resident\_VMs of object host
+Get the resident\_VMs field of the given host.
\noindent {\bf Signature:}
\begin{verbatim} ((VM ref) Set) get_resident_VMs (session_id s, host ref
self)\end{verbatim}
@@ -4228,7 +4727,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt host ref } & self & object instance \\ \hline
+{\tt host ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -4247,7 +4746,7 @@ value of the field
\subsubsection{RPC name:~get\_PIFs}
{\bf Overview:}
-get accessor message derived from field PIFs of object host
+Get the PIFs field of the given host.
\noindent {\bf Signature:}
\begin{verbatim} ((PIF ref) Set) get_PIFs (session_id s, host ref
self)\end{verbatim}
@@ -4260,7 +4759,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt host ref } & self & object instance \\ \hline
+{\tt host ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -4279,7 +4778,7 @@ value of the field
\subsubsection{RPC name:~get\_host\_CPUs}
{\bf Overview:}
-get accessor message derived from field host\_CPUs of object host
+Get the host\_CPUs field of the given host.
\noindent {\bf Signature:}
\begin{verbatim} ((host_cpu ref) Set) get_host_CPUs (session_id s, host ref
self)\end{verbatim}
@@ -4292,7 +4791,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt host ref } & self & object instance \\ \hline
+{\tt host ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -4311,7 +4810,7 @@ value of the field
\subsubsection{RPC name:~create}
{\bf Overview:}
-constructor for class host
+Create a new host instance, and return its handle.
\noindent {\bf Signature:}
\begin{verbatim} (host ref) create (session_id s, host record
args)\end{verbatim}
@@ -4343,7 +4842,7 @@ reference to the newly created object
\subsubsection{RPC name:~destroy}
{\bf Overview:}
-destructor for class host
+Destroy the specified host instance.
\noindent {\bf Signature:}
\begin{verbatim} void destroy (session_id s, host ref self)\end{verbatim}
@@ -4356,7 +4855,7 @@ destructor for class host
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt host ref } & self & object instance \\ \hline
+{\tt host ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -4375,7 +4874,7 @@ void
\subsubsection{RPC name:~get\_by\_uuid}
{\bf Overview:}
-returns the host instance with a particular uuid
+Get a reference to the host instance with the specified UUID.
\noindent {\bf Signature:}
\begin{verbatim} (host ref) get_by_uuid (session_id s, string
uuid)\end{verbatim}
@@ -4407,7 +4906,7 @@ reference to the object
\subsubsection{RPC name:~get\_record}
{\bf Overview:}
-returns a record containing the state of an instance of class host
+Get a record containing the current state of the given host.
\noindent {\bf Signature:}
\begin{verbatim} (host record) get_record (session_id s, host ref
self)\end{verbatim}
@@ -4439,7 +4938,7 @@ all fields from the object
\subsubsection{RPC name:~get\_by\_name\_label}
{\bf Overview:}
-returns the host instance with a particular name label
+Get all the host instances with the given label.
\noindent {\bf Signature:}
\begin{verbatim} ((host ref) Set) get_by_name_label (session_id s, string
label)\end{verbatim}
@@ -4494,7 +4993,7 @@ Quals & Field & Type & Description \\
\subsubsection{RPC name:~get\_uuid}
{\bf Overview:}
-get accessor message derived from field uuid of object host\_cpu
+Get the uuid field of the given host\_cpu.
\noindent {\bf Signature:}
\begin{verbatim} string get_uuid (session_id s, host_cpu ref
self)\end{verbatim}
@@ -4507,7 +5006,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt host\_cpu ref } & self & object instance \\ \hline
+{\tt host\_cpu ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -4526,7 +5025,7 @@ value of the field
\subsubsection{RPC name:~get\_host}
{\bf Overview:}
-get accessor message derived from field host of object host\_cpu
+Get the host field of the given host\_cpu.
\noindent {\bf Signature:}
\begin{verbatim} (host ref) get_host (session_id s, host_cpu ref
self)\end{verbatim}
@@ -4539,7 +5038,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt host\_cpu ref } & self & object instance \\ \hline
+{\tt host\_cpu ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -4558,7 +5057,7 @@ value of the field
\subsubsection{RPC name:~get\_number}
{\bf Overview:}
-get accessor message derived from field number of object host\_cpu
+Get the number field of the given host\_cpu.
\noindent {\bf Signature:}
\begin{verbatim} int get_number (session_id s, host_cpu ref self)\end{verbatim}
@@ -4571,7 +5070,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt host\_cpu ref } & self & object instance \\ \hline
+{\tt host\_cpu ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -4590,7 +5089,7 @@ value of the field
\subsubsection{RPC name:~get\_vendor}
{\bf Overview:}
-get accessor message derived from field vendor of object host\_cpu
+Get the vendor field of the given host\_cpu.
\noindent {\bf Signature:}
\begin{verbatim} string get_vendor (session_id s, host_cpu ref
self)\end{verbatim}
@@ -4603,7 +5102,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt host\_cpu ref } & self & object instance \\ \hline
+{\tt host\_cpu ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -4622,7 +5121,7 @@ value of the field
\subsubsection{RPC name:~get\_speed}
{\bf Overview:}
-get accessor message derived from field speed of object host\_cpu
+Get the speed field of the given host\_cpu.
\noindent {\bf Signature:}
\begin{verbatim} int get_speed (session_id s, host_cpu ref self)\end{verbatim}
@@ -4635,7 +5134,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt host\_cpu ref } & self & object instance \\ \hline
+{\tt host\_cpu ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -4654,7 +5153,7 @@ value of the field
\subsubsection{RPC name:~get\_modelname}
{\bf Overview:}
-get accessor message derived from field modelname of object host\_cpu
+Get the modelname field of the given host\_cpu.
\noindent {\bf Signature:}
\begin{verbatim} string get_modelname (session_id s, host_cpu ref
self)\end{verbatim}
@@ -4667,7 +5166,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt host\_cpu ref } & self & object instance \\ \hline
+{\tt host\_cpu ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -4686,7 +5185,7 @@ value of the field
\subsubsection{RPC name:~get\_features}
{\bf Overview:}
-get accessor message derived from field features of object host\_cpu
+Get the features field of the given host\_cpu.
\noindent {\bf Signature:}
\begin{verbatim} ((cpu_feature) Set) get_features (session_id s, host_cpu ref
self)\end{verbatim}
@@ -4699,7 +5198,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt host\_cpu ref } & self & object instance \\ \hline
+{\tt host\_cpu ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -4718,7 +5217,7 @@ value of the field
\subsubsection{RPC name:~get\_utilisation}
{\bf Overview:}
-get accessor message derived from field utilisation of object host\_cpu
+Get the utilisation field of the given host\_cpu.
\noindent {\bf Signature:}
\begin{verbatim} float get_utilisation (session_id s, host_cpu ref
self)\end{verbatim}
@@ -4731,7 +5230,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt host\_cpu ref } & self & object instance \\ \hline
+{\tt host\_cpu ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -4750,7 +5249,7 @@ value of the field
\subsubsection{RPC name:~create}
{\bf Overview:}
-constructor for class host\_cpu
+Create a new host\_cpu instance, and return its handle.
\noindent {\bf Signature:}
\begin{verbatim} (host_cpu ref) create (session_id s, host_cpu record
args)\end{verbatim}
@@ -4782,7 +5281,7 @@ reference to the newly created object
\subsubsection{RPC name:~destroy}
{\bf Overview:}
-destructor for class host\_cpu
+Destroy the specified host\_cpu instance.
\noindent {\bf Signature:}
\begin{verbatim} void destroy (session_id s, host_cpu ref self)\end{verbatim}
@@ -4795,7 +5294,7 @@ destructor for class host\_cpu
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt host\_cpu ref } & self & object instance \\ \hline
+{\tt host\_cpu ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -4814,7 +5313,7 @@ void
\subsubsection{RPC name:~get\_by\_uuid}
{\bf Overview:}
-returns the host\_cpu instance with a particular uuid
+Get a reference to the host\_cpu instance with the specified UUID.
\noindent {\bf Signature:}
\begin{verbatim} (host_cpu ref) get_by_uuid (session_id s, string
uuid)\end{verbatim}
@@ -4846,7 +5345,7 @@ reference to the object
\subsubsection{RPC name:~get\_record}
{\bf Overview:}
-returns a record containing the state of an instance of class host\_cpu
+Get a record containing the current state of the given host\_cpu.
\noindent {\bf Signature:}
\begin{verbatim} (host_cpu record) get_record (session_id s, host_cpu ref
self)\end{verbatim}
@@ -4921,7 +5420,7 @@ A list of all the IDs of all the network
\subsubsection{RPC name:~get\_uuid}
{\bf Overview:}
-get accessor message derived from field uuid of object network
+Get the uuid field of the given network.
\noindent {\bf Signature:}
\begin{verbatim} string get_uuid (session_id s, network ref self)\end{verbatim}
@@ -4934,7 +5433,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt network ref } & self & object instance \\ \hline
+{\tt network ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -4953,7 +5452,7 @@ value of the field
\subsubsection{RPC name:~get\_name\_label}
{\bf Overview:}
-get accessor message derived from field name/label of object network
+Get the name/label field of the given network.
\noindent {\bf Signature:}
\begin{verbatim} string get_name_label (session_id s, network ref
self)\end{verbatim}
@@ -4966,7 +5465,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt network ref } & self & object instance \\ \hline
+{\tt network ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -4985,7 +5484,7 @@ value of the field
\subsubsection{RPC name:~set\_name\_label}
{\bf Overview:}
-set accessor message derived from field name/label of object network
+Set the name/label field of the given network.
\noindent {\bf Signature:}
\begin{verbatim} void set_name_label (session_id s, network ref self, string
value)\end{verbatim}
@@ -4998,7 +5497,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt network ref } & self & object instance \\ \hline
+{\tt network ref } & self & reference to the object \\ \hline
{\tt string } & value & New value to set \\ \hline
@@ -5019,7 +5518,7 @@ void
\subsubsection{RPC name:~get\_name\_description}
{\bf Overview:}
-get accessor message derived from field name/description of object network
+Get the name/description field of the given network.
\noindent {\bf Signature:}
\begin{verbatim} string get_name_description (session_id s, network ref
self)\end{verbatim}
@@ -5032,7 +5531,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt network ref } & self & object instance \\ \hline
+{\tt network ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -5051,7 +5550,7 @@ value of the field
\subsubsection{RPC name:~set\_name\_description}
{\bf Overview:}
-set accessor message derived from field name/description of object network
+Set the name/description field of the given network.
\noindent {\bf Signature:}
\begin{verbatim} void set_name_description (session_id s, network ref self,
string value)\end{verbatim}
@@ -5064,7 +5563,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt network ref } & self & object instance \\ \hline
+{\tt network ref } & self & reference to the object \\ \hline
{\tt string } & value & New value to set \\ \hline
@@ -5085,7 +5584,7 @@ void
\subsubsection{RPC name:~get\_VIFs}
{\bf Overview:}
-get accessor message derived from field VIFs of object network
+Get the VIFs field of the given network.
\noindent {\bf Signature:}
\begin{verbatim} ((VIF ref) Set) get_VIFs (session_id s, network ref
self)\end{verbatim}
@@ -5098,7 +5597,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt network ref } & self & object instance \\ \hline
+{\tt network ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -5117,7 +5616,7 @@ value of the field
\subsubsection{RPC name:~get\_PIFs}
{\bf Overview:}
-get accessor message derived from field PIFs of object network
+Get the PIFs field of the given network.
\noindent {\bf Signature:}
\begin{verbatim} ((PIF ref) Set) get_PIFs (session_id s, network ref
self)\end{verbatim}
@@ -5130,7 +5629,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt network ref } & self & object instance \\ \hline
+{\tt network ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -5149,7 +5648,7 @@ value of the field
\subsubsection{RPC name:~get\_default\_gateway}
{\bf Overview:}
-get accessor message derived from field default\_gateway of object network
+Get the default\_gateway field of the given network.
\noindent {\bf Signature:}
\begin{verbatim} string get_default_gateway (session_id s, network ref
self)\end{verbatim}
@@ -5162,7 +5661,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt network ref } & self & object instance \\ \hline
+{\tt network ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -5181,7 +5680,7 @@ value of the field
\subsubsection{RPC name:~set\_default\_gateway}
{\bf Overview:}
-set accessor message derived from field default\_gateway of object network
+Set the default\_gateway field of the given network.
\noindent {\bf Signature:}
\begin{verbatim} void set_default_gateway (session_id s, network ref self,
string value)\end{verbatim}
@@ -5194,7 +5693,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt network ref } & self & object instance \\ \hline
+{\tt network ref } & self & reference to the object \\ \hline
{\tt string } & value & New value to set \\ \hline
@@ -5215,7 +5714,7 @@ void
\subsubsection{RPC name:~get\_default\_netmask}
{\bf Overview:}
-get accessor message derived from field default\_netmask of object network
+Get the default\_netmask field of the given network.
\noindent {\bf Signature:}
\begin{verbatim} string get_default_netmask (session_id s, network ref
self)\end{verbatim}
@@ -5228,7 +5727,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt network ref } & self & object instance \\ \hline
+{\tt network ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -5247,7 +5746,7 @@ value of the field
\subsubsection{RPC name:~set\_default\_netmask}
{\bf Overview:}
-set accessor message derived from field default\_netmask of object network
+Set the default\_netmask field of the given network.
\noindent {\bf Signature:}
\begin{verbatim} void set_default_netmask (session_id s, network ref self,
string value)\end{verbatim}
@@ -5260,7 +5759,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt network ref } & self & object instance \\ \hline
+{\tt network ref } & self & reference to the object \\ \hline
{\tt string } & value & New value to set \\ \hline
@@ -5281,7 +5780,7 @@ void
\subsubsection{RPC name:~create}
{\bf Overview:}
-constructor for class network
+Create a new network instance, and return its handle.
\noindent {\bf Signature:}
\begin{verbatim} (network ref) create (session_id s, network record
args)\end{verbatim}
@@ -5313,7 +5812,7 @@ reference to the newly created object
\subsubsection{RPC name:~destroy}
{\bf Overview:}
-destructor for class network
+Destroy the specified network instance.
\noindent {\bf Signature:}
\begin{verbatim} void destroy (session_id s, network ref self)\end{verbatim}
@@ -5326,7 +5825,7 @@ destructor for class network
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt network ref } & self & object instance \\ \hline
+{\tt network ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -5345,7 +5844,7 @@ void
\subsubsection{RPC name:~get\_by\_uuid}
{\bf Overview:}
-returns the network instance with a particular uuid
+Get a reference to the network instance with the specified UUID.
\noindent {\bf Signature:}
\begin{verbatim} (network ref) get_by_uuid (session_id s, string
uuid)\end{verbatim}
@@ -5377,7 +5876,7 @@ reference to the object
\subsubsection{RPC name:~get\_record}
{\bf Overview:}
-returns a record containing the state of an instance of class network
+Get a record containing the current state of the given network.
\noindent {\bf Signature:}
\begin{verbatim} (network record) get_record (session_id s, network ref
self)\end{verbatim}
@@ -5409,7 +5908,7 @@ all fields from the object
\subsubsection{RPC name:~get\_by\_name\_label}
{\bf Overview:}
-returns the network instance with a particular name label
+Get all the network instances with the given label.
\noindent {\bf Signature:}
\begin{verbatim} ((network ref) Set) get_by_name_label (session_id s, string
label)\end{verbatim}
@@ -5466,7 +5965,7 @@ Quals & Field & Type & Description \\
\subsubsection{RPC name:~get\_uuid}
{\bf Overview:}
-get accessor message derived from field uuid of object VIF
+Get the uuid field of the given VIF.
\noindent {\bf Signature:}
\begin{verbatim} string get_uuid (session_id s, VIF ref self)\end{verbatim}
@@ -5479,7 +5978,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VIF ref } & self & object instance \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -5498,7 +5997,7 @@ value of the field
\subsubsection{RPC name:~get\_name}
{\bf Overview:}
-get accessor message derived from field name of object VIF
+Get the name field of the given VIF.
\noindent {\bf Signature:}
\begin{verbatim} string get_name (session_id s, VIF ref self)\end{verbatim}
@@ -5511,7 +6010,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VIF ref } & self & object instance \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -5530,7 +6029,7 @@ value of the field
\subsubsection{RPC name:~set\_name}
{\bf Overview:}
-set accessor message derived from field name of object VIF
+Set the name field of the given VIF.
\noindent {\bf Signature:}
\begin{verbatim} void set_name (session_id s, VIF ref self, string
value)\end{verbatim}
@@ -5543,7 +6042,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VIF ref } & self & object instance \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline
{\tt string } & value & New value to set \\ \hline
@@ -5564,7 +6063,7 @@ void
\subsubsection{RPC name:~get\_type}
{\bf Overview:}
-get accessor message derived from field type of object VIF
+Get the type field of the given VIF.
\noindent {\bf Signature:}
\begin{verbatim} (driver_type) get_type (session_id s, VIF ref
self)\end{verbatim}
@@ -5577,7 +6076,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VIF ref } & self & object instance \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -5596,7 +6095,7 @@ value of the field
\subsubsection{RPC name:~set\_type}
{\bf Overview:}
-set accessor message derived from field type of object VIF
+Set the type field of the given VIF.
\noindent {\bf Signature:}
\begin{verbatim} void set_type (session_id s, VIF ref self, driver_type
value)\end{verbatim}
@@ -5609,7 +6108,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VIF ref } & self & object instance \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline
{\tt driver\_type } & value & New value to set \\ \hline
@@ -5630,7 +6129,7 @@ void
\subsubsection{RPC name:~get\_device}
{\bf Overview:}
-get accessor message derived from field device of object VIF
+Get the device field of the given VIF.
\noindent {\bf Signature:}
\begin{verbatim} string get_device (session_id s, VIF ref self)\end{verbatim}
@@ -5643,7 +6142,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VIF ref } & self & object instance \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -5662,7 +6161,7 @@ value of the field
\subsubsection{RPC name:~set\_device}
{\bf Overview:}
-set accessor message derived from field device of object VIF
+Set the device field of the given VIF.
\noindent {\bf Signature:}
\begin{verbatim} void set_device (session_id s, VIF ref self, string
value)\end{verbatim}
@@ -5675,7 +6174,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VIF ref } & self & object instance \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline
{\tt string } & value & New value to set \\ \hline
@@ -5696,7 +6195,7 @@ void
\subsubsection{RPC name:~get\_network}
{\bf Overview:}
-get accessor message derived from field network of object VIF
+Get the network field of the given VIF.
\noindent {\bf Signature:}
\begin{verbatim} (network ref) get_network (session_id s, VIF ref
self)\end{verbatim}
@@ -5709,7 +6208,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VIF ref } & self & object instance \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -5728,7 +6227,7 @@ value of the field
\subsubsection{RPC name:~set\_network}
{\bf Overview:}
-set accessor message derived from field network of object VIF
+Set the network field of the given VIF.
\noindent {\bf Signature:}
\begin{verbatim} void set_network (session_id s, VIF ref self, network ref
value)\end{verbatim}
@@ -5741,7 +6240,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VIF ref } & self & object instance \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline
{\tt network ref } & value & New value to set \\ \hline
@@ -5762,7 +6261,7 @@ void
\subsubsection{RPC name:~get\_VM}
{\bf Overview:}
-get accessor message derived from field VM of object VIF
+Get the VM field of the given VIF.
\noindent {\bf Signature:}
\begin{verbatim} (VM ref) get_VM (session_id s, VIF ref self)\end{verbatim}
@@ -5775,7 +6274,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VIF ref } & self & object instance \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -5794,7 +6293,7 @@ value of the field
\subsubsection{RPC name:~set\_VM}
{\bf Overview:}
-set accessor message derived from field VM of object VIF
+Set the VM field of the given VIF.
\noindent {\bf Signature:}
\begin{verbatim} void set_VM (session_id s, VIF ref self, VM ref
value)\end{verbatim}
@@ -5807,7 +6306,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VIF ref } & self & object instance \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline
{\tt VM ref } & value & New value to set \\ \hline
@@ -5828,7 +6327,7 @@ void
\subsubsection{RPC name:~get\_MAC}
{\bf Overview:}
-get accessor message derived from field MAC of object VIF
+Get the MAC field of the given VIF.
\noindent {\bf Signature:}
\begin{verbatim} string get_MAC (session_id s, VIF ref self)\end{verbatim}
@@ -5841,7 +6340,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VIF ref } & self & object instance \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -5860,7 +6359,7 @@ value of the field
\subsubsection{RPC name:~set\_MAC}
{\bf Overview:}
-set accessor message derived from field MAC of object VIF
+Set the MAC field of the given VIF.
\noindent {\bf Signature:}
\begin{verbatim} void set_MAC (session_id s, VIF ref self, string
value)\end{verbatim}
@@ -5873,7 +6372,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VIF ref } & self & object instance \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline
{\tt string } & value & New value to set \\ \hline
@@ -5894,7 +6393,7 @@ void
\subsubsection{RPC name:~get\_MTU}
{\bf Overview:}
-get accessor message derived from field MTU of object VIF
+Get the MTU field of the given VIF.
\noindent {\bf Signature:}
\begin{verbatim} int get_MTU (session_id s, VIF ref self)\end{verbatim}
@@ -5907,7 +6406,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VIF ref } & self & object instance \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -5926,7 +6425,7 @@ value of the field
\subsubsection{RPC name:~set\_MTU}
{\bf Overview:}
-set accessor message derived from field MTU of object VIF
+Set the MTU field of the given VIF.
\noindent {\bf Signature:}
\begin{verbatim} void set_MTU (session_id s, VIF ref self, int
value)\end{verbatim}
@@ -5939,7 +6438,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VIF ref } & self & object instance \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline
{\tt int } & value & New value to set \\ \hline
@@ -5960,7 +6459,7 @@ void
\subsubsection{RPC name:~get\_io\_read\_kbs}
{\bf Overview:}
-get accessor message derived from field io/read\_kbs of object VIF
+Get the io/read\_kbs field of the given VIF.
\noindent {\bf Signature:}
\begin{verbatim} float get_io_read_kbs (session_id s, VIF ref
self)\end{verbatim}
@@ -5973,7 +6472,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VIF ref } & self & object instance \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -5992,7 +6491,7 @@ value of the field
\subsubsection{RPC name:~get\_io\_write\_kbs}
{\bf Overview:}
-get accessor message derived from field io/write\_kbs of object VIF
+Get the io/write\_kbs field of the given VIF.
\noindent {\bf Signature:}
\begin{verbatim} float get_io_write_kbs (session_id s, VIF ref
self)\end{verbatim}
@@ -6005,7 +6504,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VIF ref } & self & object instance \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -6024,7 +6523,7 @@ value of the field
\subsubsection{RPC name:~create}
{\bf Overview:}
-constructor for class VIF
+Create a new VIF instance, and return its handle.
\noindent {\bf Signature:}
\begin{verbatim} (VIF ref) create (session_id s, VIF record args)\end{verbatim}
@@ -6056,7 +6555,7 @@ reference to the newly created object
\subsubsection{RPC name:~destroy}
{\bf Overview:}
-destructor for class VIF
+Destroy the specified VIF instance.
\noindent {\bf Signature:}
\begin{verbatim} void destroy (session_id s, VIF ref self)\end{verbatim}
@@ -6069,7 +6568,7 @@ destructor for class VIF
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VIF ref } & self & object instance \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -6088,7 +6587,7 @@ void
\subsubsection{RPC name:~get\_by\_uuid}
{\bf Overview:}
-returns the VIF instance with a particular uuid
+Get a reference to the VIF instance with the specified UUID.
\noindent {\bf Signature:}
\begin{verbatim} (VIF ref) get_by_uuid (session_id s, string
uuid)\end{verbatim}
@@ -6120,7 +6619,7 @@ reference to the object
\subsubsection{RPC name:~get\_record}
{\bf Overview:}
-returns a record containing the state of an instance of class VIF
+Get a record containing the current state of the given VIF.
\noindent {\bf Signature:}
\begin{verbatim} (VIF record) get_record (session_id s, VIF ref
self)\end{verbatim}
@@ -6176,7 +6675,7 @@ Quals & Field & Type & Description \\
\subsubsection{RPC name:~get\_uuid}
{\bf Overview:}
-get accessor message derived from field uuid of object PIF
+Get the uuid field of the given PIF.
\noindent {\bf Signature:}
\begin{verbatim} string get_uuid (session_id s, PIF ref self)\end{verbatim}
@@ -6189,7 +6688,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt PIF ref } & self & object instance \\ \hline
+{\tt PIF ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -6208,7 +6707,7 @@ value of the field
\subsubsection{RPC name:~get\_name}
{\bf Overview:}
-get accessor message derived from field name of object PIF
+Get the name field of the given PIF.
\noindent {\bf Signature:}
\begin{verbatim} string get_name (session_id s, PIF ref self)\end{verbatim}
@@ -6221,7 +6720,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt PIF ref } & self & object instance \\ \hline
+{\tt PIF ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -6240,7 +6739,7 @@ value of the field
\subsubsection{RPC name:~set\_name}
{\bf Overview:}
-set accessor message derived from field name of object PIF
+Set the name field of the given PIF.
\noindent {\bf Signature:}
\begin{verbatim} void set_name (session_id s, PIF ref self, string
value)\end{verbatim}
@@ -6253,7 +6752,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt PIF ref } & self & object instance \\ \hline
+{\tt PIF ref } & self & reference to the object \\ \hline
{\tt string } & value & New value to set \\ \hline
@@ -6274,7 +6773,7 @@ void
\subsubsection{RPC name:~get\_network}
{\bf Overview:}
-get accessor message derived from field network of object PIF
+Get the network field of the given PIF.
\noindent {\bf Signature:}
\begin{verbatim} (network ref) get_network (session_id s, PIF ref
self)\end{verbatim}
@@ -6287,7 +6786,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt PIF ref } & self & object instance \\ \hline
+{\tt PIF ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -6306,7 +6805,7 @@ value of the field
\subsubsection{RPC name:~set\_network}
{\bf Overview:}
-set accessor message derived from field network of object PIF
+Set the network field of the given PIF.
\noindent {\bf Signature:}
\begin{verbatim} void set_network (session_id s, PIF ref self, network ref
value)\end{verbatim}
@@ -6319,7 +6818,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt PIF ref } & self & object instance \\ \hline
+{\tt PIF ref } & self & reference to the object \\ \hline
{\tt network ref } & value & New value to set \\ \hline
@@ -6340,7 +6839,7 @@ void
\subsubsection{RPC name:~get\_host}
{\bf Overview:}
-get accessor message derived from field host of object PIF
+Get the host field of the given PIF.
\noindent {\bf Signature:}
\begin{verbatim} (host ref) get_host (session_id s, PIF ref self)\end{verbatim}
@@ -6353,7 +6852,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt PIF ref } & self & object instance \\ \hline
+{\tt PIF ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -6372,7 +6871,7 @@ value of the field
\subsubsection{RPC name:~set\_host}
{\bf Overview:}
-set accessor message derived from field host of object PIF
+Set the host field of the given PIF.
\noindent {\bf Signature:}
\begin{verbatim} void set_host (session_id s, PIF ref self, host ref
value)\end{verbatim}
@@ -6385,7 +6884,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt PIF ref } & self & object instance \\ \hline
+{\tt PIF ref } & self & reference to the object \\ \hline
{\tt host ref } & value & New value to set \\ \hline
@@ -6406,7 +6905,7 @@ void
\subsubsection{RPC name:~get\_MAC}
{\bf Overview:}
-get accessor message derived from field MAC of object PIF
+Get the MAC field of the given PIF.
\noindent {\bf Signature:}
\begin{verbatim} string get_MAC (session_id s, PIF ref self)\end{verbatim}
@@ -6419,7 +6918,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt PIF ref } & self & object instance \\ \hline
+{\tt PIF ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -6438,7 +6937,7 @@ value of the field
\subsubsection{RPC name:~set\_MAC}
{\bf Overview:}
-set accessor message derived from field MAC of object PIF
+Set the MAC field of the given PIF.
\noindent {\bf Signature:}
\begin{verbatim} void set_MAC (session_id s, PIF ref self, string
value)\end{verbatim}
@@ -6451,7 +6950,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt PIF ref } & self & object instance \\ \hline
+{\tt PIF ref } & self & reference to the object \\ \hline
{\tt string } & value & New value to set \\ \hline
@@ -6472,7 +6971,7 @@ void
\subsubsection{RPC name:~get\_MTU}
{\bf Overview:}
-get accessor message derived from field MTU of object PIF
+Get the MTU field of the given PIF.
\noindent {\bf Signature:}
\begin{verbatim} int get_MTU (session_id s, PIF ref self)\end{verbatim}
@@ -6485,7 +6984,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt PIF ref } & self & object instance \\ \hline
+{\tt PIF ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -6504,7 +7003,7 @@ value of the field
\subsubsection{RPC name:~set\_MTU}
{\bf Overview:}
-set accessor message derived from field MTU of object PIF
+Set the MTU field of the given PIF.
\noindent {\bf Signature:}
\begin{verbatim} void set_MTU (session_id s, PIF ref self, int
value)\end{verbatim}
@@ -6517,7 +7016,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt PIF ref } & self & object instance \\ \hline
+{\tt PIF ref } & self & reference to the object \\ \hline
{\tt int } & value & New value to set \\ \hline
@@ -6538,7 +7037,7 @@ void
\subsubsection{RPC name:~get\_VLAN}
{\bf Overview:}
-get accessor message derived from field VLAN of object PIF
+Get the VLAN field of the given PIF.
\noindent {\bf Signature:}
\begin{verbatim} string get_VLAN (session_id s, PIF ref self)\end{verbatim}
@@ -6551,7 +7050,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt PIF ref } & self & object instance \\ \hline
+{\tt PIF ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -6570,7 +7069,7 @@ value of the field
\subsubsection{RPC name:~set\_VLAN}
{\bf Overview:}
-set accessor message derived from field VLAN of object PIF
+Set the VLAN field of the given PIF.
\noindent {\bf Signature:}
\begin{verbatim} void set_VLAN (session_id s, PIF ref self, string
value)\end{verbatim}
@@ -6583,7 +7082,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt PIF ref } & self & object instance \\ \hline
+{\tt PIF ref } & self & reference to the object \\ \hline
{\tt string } & value & New value to set \\ \hline
@@ -6604,7 +7103,7 @@ void
\subsubsection{RPC name:~get\_io\_read\_kbs}
{\bf Overview:}
-get accessor message derived from field io/read\_kbs of object PIF
+Get the io/read\_kbs field of the given PIF.
\noindent {\bf Signature:}
\begin{verbatim} float get_io_read_kbs (session_id s, PIF ref
self)\end{verbatim}
@@ -6617,7 +7116,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt PIF ref } & self & object instance \\ \hline
+{\tt PIF ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -6636,7 +7135,7 @@ value of the field
\subsubsection{RPC name:~get\_io\_write\_kbs}
{\bf Overview:}
-get accessor message derived from field io/write\_kbs of object PIF
+Get the io/write\_kbs field of the given PIF.
\noindent {\bf Signature:}
\begin{verbatim} float get_io_write_kbs (session_id s, PIF ref
self)\end{verbatim}
@@ -6649,7 +7148,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt PIF ref } & self & object instance \\ \hline
+{\tt PIF ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -6668,7 +7167,7 @@ value of the field
\subsubsection{RPC name:~create}
{\bf Overview:}
-constructor for class PIF
+Create a new PIF instance, and return its handle.
\noindent {\bf Signature:}
\begin{verbatim} (PIF ref) create (session_id s, PIF record args)\end{verbatim}
@@ -6700,7 +7199,7 @@ reference to the newly created object
\subsubsection{RPC name:~destroy}
{\bf Overview:}
-destructor for class PIF
+Destroy the specified PIF instance.
\noindent {\bf Signature:}
\begin{verbatim} void destroy (session_id s, PIF ref self)\end{verbatim}
@@ -6713,7 +7212,7 @@ destructor for class PIF
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt PIF ref } & self & object instance \\ \hline
+{\tt PIF ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -6732,7 +7231,7 @@ void
\subsubsection{RPC name:~get\_by\_uuid}
{\bf Overview:}
-returns the PIF instance with a particular uuid
+Get a reference to the PIF instance with the specified UUID.
\noindent {\bf Signature:}
\begin{verbatim} (PIF ref) get_by_uuid (session_id s, string
uuid)\end{verbatim}
@@ -6764,7 +7263,7 @@ reference to the object
\subsubsection{RPC name:~get\_record}
{\bf Overview:}
-returns a record containing the state of an instance of class PIF
+Get a record containing the current state of the given PIF.
\noindent {\bf Signature:}
\begin{verbatim} (PIF record) get_record (session_id s, PIF ref
self)\end{verbatim}
@@ -6878,7 +7377,7 @@ A list of all the IDs of all the Storage
\subsubsection{RPC name:~get\_uuid}
{\bf Overview:}
-get accessor message derived from field uuid of object SR
+Get the uuid field of the given SR.
\noindent {\bf Signature:}
\begin{verbatim} string get_uuid (session_id s, SR ref self)\end{verbatim}
@@ -6891,7 +7390,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt SR ref } & self & object instance \\ \hline
+{\tt SR ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -6910,7 +7409,7 @@ value of the field
\subsubsection{RPC name:~get\_name\_label}
{\bf Overview:}
-get accessor message derived from field name/label of object SR
+Get the name/label field of the given SR.
\noindent {\bf Signature:}
\begin{verbatim} string get_name_label (session_id s, SR ref
self)\end{verbatim}
@@ -6923,7 +7422,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt SR ref } & self & object instance \\ \hline
+{\tt SR ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -6942,7 +7441,7 @@ value of the field
\subsubsection{RPC name:~set\_name\_label}
{\bf Overview:}
-set accessor message derived from field name/label of object SR
+Set the name/label field of the given SR.
\noindent {\bf Signature:}
\begin{verbatim} void set_name_label (session_id s, SR ref self, string
value)\end{verbatim}
@@ -6955,7 +7454,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt SR ref } & self & object instance \\ \hline
+{\tt SR ref } & self & reference to the object \\ \hline
{\tt string } & value & New value to set \\ \hline
@@ -6976,7 +7475,7 @@ void
\subsubsection{RPC name:~get\_name\_description}
{\bf Overview:}
-get accessor message derived from field name/description of object SR
+Get the name/description field of the given SR.
\noindent {\bf Signature:}
\begin{verbatim} string get_name_description (session_id s, SR ref
self)\end{verbatim}
@@ -6989,7 +7488,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt SR ref } & self & object instance \\ \hline
+{\tt SR ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -7008,7 +7507,7 @@ value of the field
\subsubsection{RPC name:~set\_name\_description}
{\bf Overview:}
-set accessor message derived from field name/description of object SR
+Set the name/description field of the given SR.
\noindent {\bf Signature:}
\begin{verbatim} void set_name_description (session_id s, SR ref self, string
value)\end{verbatim}
@@ -7021,7 +7520,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt SR ref } & self & object instance \\ \hline
+{\tt SR ref } & self & reference to the object \\ \hline
{\tt string } & value & New value to set \\ \hline
@@ -7042,7 +7541,7 @@ void
\subsubsection{RPC name:~get\_VDIs}
{\bf Overview:}
-get accessor message derived from field VDIs of object SR
+Get the VDIs field of the given SR.
\noindent {\bf Signature:}
\begin{verbatim} ((VDI ref) Set) get_VDIs (session_id s, SR ref
self)\end{verbatim}
@@ -7055,7 +7554,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt SR ref } & self & object instance \\ \hline
+{\tt SR ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -7074,7 +7573,7 @@ value of the field
\subsubsection{RPC name:~get\_virtual\_allocation}
{\bf Overview:}
-get accessor message derived from field virtual\_allocation of object SR
+Get the virtual\_allocation field of the given SR.
\noindent {\bf Signature:}
\begin{verbatim} int get_virtual_allocation (session_id s, SR ref
self)\end{verbatim}
@@ -7087,7 +7586,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt SR ref } & self & object instance \\ \hline
+{\tt SR ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -7106,7 +7605,7 @@ value of the field
\subsubsection{RPC name:~get\_physical\_utilisation}
{\bf Overview:}
-get accessor message derived from field physical\_utilisation of object SR
+Get the physical\_utilisation field of the given SR.
\noindent {\bf Signature:}
\begin{verbatim} int get_physical_utilisation (session_id s, SR ref
self)\end{verbatim}
@@ -7119,7 +7618,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt SR ref } & self & object instance \\ \hline
+{\tt SR ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -7138,7 +7637,7 @@ value of the field
\subsubsection{RPC name:~get\_physical\_size}
{\bf Overview:}
-get accessor message derived from field physical\_size of object SR
+Get the physical\_size field of the given SR.
\noindent {\bf Signature:}
\begin{verbatim} int get_physical_size (session_id s, SR ref
self)\end{verbatim}
@@ -7151,7 +7650,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt SR ref } & self & object instance \\ \hline
+{\tt SR ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -7170,7 +7669,7 @@ value of the field
\subsubsection{RPC name:~get\_type}
{\bf Overview:}
-get accessor message derived from field type of object SR
+Get the type field of the given SR.
\noindent {\bf Signature:}
\begin{verbatim} string get_type (session_id s, SR ref self)\end{verbatim}
@@ -7183,7 +7682,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt SR ref } & self & object instance \\ \hline
+{\tt SR ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -7202,7 +7701,7 @@ value of the field
\subsubsection{RPC name:~get\_location}
{\bf Overview:}
-get accessor message derived from field location of object SR
+Get the location field of the given SR.
\noindent {\bf Signature:}
\begin{verbatim} string get_location (session_id s, SR ref self)\end{verbatim}
@@ -7215,7 +7714,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt SR ref } & self & object instance \\ \hline
+{\tt SR ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -7234,7 +7733,7 @@ value of the field
\subsubsection{RPC name:~create}
{\bf Overview:}
-constructor for class SR
+Create a new SR instance, and return its handle.
\noindent {\bf Signature:}
\begin{verbatim} (SR ref) create (session_id s, SR record args)\end{verbatim}
@@ -7266,7 +7765,7 @@ reference to the newly created object
\subsubsection{RPC name:~destroy}
{\bf Overview:}
-destructor for class SR
+Destroy the specified SR instance.
\noindent {\bf Signature:}
\begin{verbatim} void destroy (session_id s, SR ref self)\end{verbatim}
@@ -7279,7 +7778,7 @@ destructor for class SR
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt SR ref } & self & object instance \\ \hline
+{\tt SR ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -7298,7 +7797,7 @@ void
\subsubsection{RPC name:~get\_by\_uuid}
{\bf Overview:}
-returns the SR instance with a particular uuid
+Get a reference to the SR instance with the specified UUID.
\noindent {\bf Signature:}
\begin{verbatim} (SR ref) get_by_uuid (session_id s, string uuid)\end{verbatim}
@@ -7330,7 +7829,7 @@ reference to the object
\subsubsection{RPC name:~get\_record}
{\bf Overview:}
-returns a record containing the state of an instance of class SR
+Get a record containing the current state of the given SR.
\noindent {\bf Signature:}
\begin{verbatim} (SR record) get_record (session_id s, SR ref
self)\end{verbatim}
@@ -7362,7 +7861,7 @@ all fields from the object
\subsubsection{RPC name:~get\_by\_name\_label}
{\bf Overview:}
-returns the SR instance with a particular name label
+Get all the SR instances with the given label.
\noindent {\bf Signature:}
\begin{verbatim} ((SR ref) Set) get_by_name_label (session_id s, string
label)\end{verbatim}
@@ -7488,7 +7987,7 @@ void
\subsubsection{RPC name:~get\_uuid}
{\bf Overview:}
-get accessor message derived from field uuid of object VDI
+Get the uuid field of the given VDI.
\noindent {\bf Signature:}
\begin{verbatim} string get_uuid (session_id s, VDI ref self)\end{verbatim}
@@ -7501,7 +8000,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VDI ref } & self & object instance \\ \hline
+{\tt VDI ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -7520,7 +8019,7 @@ value of the field
\subsubsection{RPC name:~get\_name\_label}
{\bf Overview:}
-get accessor message derived from field name/label of object VDI
+Get the name/label field of the given VDI.
\noindent {\bf Signature:}
\begin{verbatim} string get_name_label (session_id s, VDI ref
self)\end{verbatim}
@@ -7533,7 +8032,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VDI ref } & self & object instance \\ \hline
+{\tt VDI ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -7552,7 +8051,7 @@ value of the field
\subsubsection{RPC name:~set\_name\_label}
{\bf Overview:}
-set accessor message derived from field name/label of object VDI
+Set the name/label field of the given VDI.
\noindent {\bf Signature:}
\begin{verbatim} void set_name_label (session_id s, VDI ref self, string
value)\end{verbatim}
@@ -7565,7 +8064,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VDI ref } & self & object instance \\ \hline
+{\tt VDI ref } & self & reference to the object \\ \hline
{\tt string } & value & New value to set \\ \hline
@@ -7586,7 +8085,7 @@ void
\subsubsection{RPC name:~get\_name\_description}
{\bf Overview:}
-get accessor message derived from field name/description of object VDI
+Get the name/description field of the given VDI.
\noindent {\bf Signature:}
\begin{verbatim} string get_name_description (session_id s, VDI ref
self)\end{verbatim}
@@ -7599,7 +8098,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VDI ref } & self & object instance \\ \hline
+{\tt VDI ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -7618,7 +8117,7 @@ value of the field
\subsubsection{RPC name:~set\_name\_description}
{\bf Overview:}
-set accessor message derived from field name/description of object VDI
+Set the name/description field of the given VDI.
\noindent {\bf Signature:}
\begin{verbatim} void set_name_description (session_id s, VDI ref self, string
value)\end{verbatim}
@@ -7631,7 +8130,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VDI ref } & self & object instance \\ \hline
+{\tt VDI ref } & self & reference to the object \\ \hline
{\tt string } & value & New value to set \\ \hline
@@ -7652,7 +8151,7 @@ void
\subsubsection{RPC name:~get\_SR}
{\bf Overview:}
-get accessor message derived from field SR of object VDI
+Get the SR field of the given VDI.
\noindent {\bf Signature:}
\begin{verbatim} (SR ref) get_SR (session_id s, VDI ref self)\end{verbatim}
@@ -7665,7 +8164,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VDI ref } & self & object instance \\ \hline
+{\tt VDI ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -7684,7 +8183,7 @@ value of the field
\subsubsection{RPC name:~set\_SR}
{\bf Overview:}
-set accessor message derived from field SR of object VDI
+Set the SR field of the given VDI.
\noindent {\bf Signature:}
\begin{verbatim} void set_SR (session_id s, VDI ref self, SR ref
value)\end{verbatim}
@@ -7697,7 +8196,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VDI ref } & self & object instance \\ \hline
+{\tt VDI ref } & self & reference to the object \\ \hline
{\tt SR ref } & value & New value to set \\ \hline
@@ -7718,7 +8217,7 @@ void
\subsubsection{RPC name:~get\_VBDs}
{\bf Overview:}
-get accessor message derived from field VBDs of object VDI
+Get the VBDs field of the given VDI.
\noindent {\bf Signature:}
\begin{verbatim} ((VBD ref) Set) get_VBDs (session_id s, VDI ref
self)\end{verbatim}
@@ -7731,7 +8230,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VDI ref } & self & object instance \\ \hline
+{\tt VDI ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -7750,7 +8249,7 @@ value of the field
\subsubsection{RPC name:~get\_virtual\_size}
{\bf Overview:}
-get accessor message derived from field virtual\_size of object VDI
+Get the virtual\_size field of the given VDI.
\noindent {\bf Signature:}
\begin{verbatim} int get_virtual_size (session_id s, VDI ref
self)\end{verbatim}
@@ -7763,7 +8262,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VDI ref } & self & object instance \\ \hline
+{\tt VDI ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -7782,7 +8281,7 @@ value of the field
\subsubsection{RPC name:~set\_virtual\_size}
{\bf Overview:}
-set accessor message derived from field virtual\_size of object VDI
+Set the virtual\_size field of the given VDI.
\noindent {\bf Signature:}
\begin{verbatim} void set_virtual_size (session_id s, VDI ref self, int
value)\end{verbatim}
@@ -7795,7 +8294,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VDI ref } & self & object instance \\ \hline
+{\tt VDI ref } & self & reference to the object \\ \hline
{\tt int } & value & New value to set \\ \hline
@@ -7816,7 +8315,7 @@ void
\subsubsection{RPC name:~get\_physical\_utilisation}
{\bf Overview:}
-get accessor message derived from field physical\_utilisation of object VDI
+Get the physical\_utilisation field of the given VDI.
\noindent {\bf Signature:}
\begin{verbatim} int get_physical_utilisation (session_id s, VDI ref
self)\end{verbatim}
@@ -7829,7 +8328,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VDI ref } & self & object instance \\ \hline
+{\tt VDI ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -7848,7 +8347,7 @@ value of the field
\subsubsection{RPC name:~get\_sector\_size}
{\bf Overview:}
-get accessor message derived from field sector\_size of object VDI
+Get the sector\_size field of the given VDI.
\noindent {\bf Signature:}
\begin{verbatim} int get_sector_size (session_id s, VDI ref self)\end{verbatim}
@@ -7861,7 +8360,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VDI ref } & self & object instance \\ \hline
+{\tt VDI ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -7880,7 +8379,7 @@ value of the field
\subsubsection{RPC name:~get\_type}
{\bf Overview:}
-get accessor message derived from field type of object VDI
+Get the type field of the given VDI.
\noindent {\bf Signature:}
\begin{verbatim} (vdi_type) get_type (session_id s, VDI ref self)\end{verbatim}
@@ -7893,7 +8392,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VDI ref } & self & object instance \\ \hline
+{\tt VDI ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -7912,7 +8411,7 @@ value of the field
\subsubsection{RPC name:~get\_parent}
{\bf Overview:}
-get accessor message derived from field parent of object VDI
+Get the parent field of the given VDI.
\noindent {\bf Signature:}
\begin{verbatim} (VDI ref) get_parent (session_id s, VDI ref
self)\end{verbatim}
@@ -7925,7 +8424,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VDI ref } & self & object instance \\ \hline
+{\tt VDI ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -7944,7 +8443,7 @@ value of the field
\subsubsection{RPC name:~get\_children}
{\bf Overview:}
-get accessor message derived from field children of object VDI
+Get the children field of the given VDI.
\noindent {\bf Signature:}
\begin{verbatim} ((VDI ref) Set) get_children (session_id s, VDI ref
self)\end{verbatim}
@@ -7957,7 +8456,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VDI ref } & self & object instance \\ \hline
+{\tt VDI ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -7976,7 +8475,7 @@ value of the field
\subsubsection{RPC name:~get\_sharable}
{\bf Overview:}
-get accessor message derived from field sharable of object VDI
+Get the sharable field of the given VDI.
\noindent {\bf Signature:}
\begin{verbatim} bool get_sharable (session_id s, VDI ref self)\end{verbatim}
@@ -7989,7 +8488,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VDI ref } & self & object instance \\ \hline
+{\tt VDI ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -8008,7 +8507,7 @@ value of the field
\subsubsection{RPC name:~set\_sharable}
{\bf Overview:}
-set accessor message derived from field sharable of object VDI
+Set the sharable field of the given VDI.
\noindent {\bf Signature:}
\begin{verbatim} void set_sharable (session_id s, VDI ref self, bool
value)\end{verbatim}
@@ -8021,7 +8520,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VDI ref } & self & object instance \\ \hline
+{\tt VDI ref } & self & reference to the object \\ \hline
{\tt bool } & value & New value to set \\ \hline
@@ -8042,7 +8541,7 @@ void
\subsubsection{RPC name:~get\_read\_only}
{\bf Overview:}
-get accessor message derived from field read\_only of object VDI
+Get the read\_only field of the given VDI.
\noindent {\bf Signature:}
\begin{verbatim} bool get_read_only (session_id s, VDI ref self)\end{verbatim}
@@ -8055,7 +8554,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VDI ref } & self & object instance \\ \hline
+{\tt VDI ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -8074,7 +8573,7 @@ value of the field
\subsubsection{RPC name:~set\_read\_only}
{\bf Overview:}
-set accessor message derived from field read\_only of object VDI
+Set the read\_only field of the given VDI.
\noindent {\bf Signature:}
\begin{verbatim} void set_read_only (session_id s, VDI ref self, bool
value)\end{verbatim}
@@ -8087,7 +8586,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VDI ref } & self & object instance \\ \hline
+{\tt VDI ref } & self & reference to the object \\ \hline
{\tt bool } & value & New value to set \\ \hline
@@ -8108,7 +8607,7 @@ void
\subsubsection{RPC name:~create}
{\bf Overview:}
-constructor for class VDI
+Create a new VDI instance, and return its handle.
\noindent {\bf Signature:}
\begin{verbatim} (VDI ref) create (session_id s, VDI record args)\end{verbatim}
@@ -8140,7 +8639,7 @@ reference to the newly created object
\subsubsection{RPC name:~destroy}
{\bf Overview:}
-destructor for class VDI
+Destroy the specified VDI instance.
\noindent {\bf Signature:}
\begin{verbatim} void destroy (session_id s, VDI ref self)\end{verbatim}
@@ -8153,7 +8652,7 @@ destructor for class VDI
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VDI ref } & self & object instance \\ \hline
+{\tt VDI ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -8172,7 +8671,7 @@ void
\subsubsection{RPC name:~get\_by\_uuid}
{\bf Overview:}
-returns the VDI instance with a particular uuid
+Get a reference to the VDI instance with the specified UUID.
\noindent {\bf Signature:}
\begin{verbatim} (VDI ref) get_by_uuid (session_id s, string
uuid)\end{verbatim}
@@ -8204,7 +8703,7 @@ reference to the object
\subsubsection{RPC name:~get\_record}
{\bf Overview:}
-returns a record containing the state of an instance of class VDI
+Get a record containing the current state of the given VDI.
\noindent {\bf Signature:}
\begin{verbatim} (VDI record) get_record (session_id s, VDI ref
self)\end{verbatim}
@@ -8236,7 +8735,7 @@ all fields from the object
\subsubsection{RPC name:~get\_by\_name\_label}
{\bf Overview:}
-returns the VDI instance with a particular name label
+Get all the VDI instances with the given label.
\noindent {\bf Signature:}
\begin{verbatim} ((VDI ref) Set) get_by_name_label (session_id s, string
label)\end{verbatim}
@@ -8282,6 +8781,7 @@ Quals & Field & Type & Description \\
$\mathit{RW}$ & {\tt VDI} & VDI ref & the virtual disk \\
$\mathit{RW}$ & {\tt device} & string & device seen by the guest e.g. hda1 \\
$\mathit{RW}$ & {\tt mode} & vbd\_mode & the mode the disk should be mounted
with \\
+$\mathit{RW}$ & {\tt type} & vbd\_type & how the VBD will appear to the guest
(e.g. disk or CD) \\
$\mathit{RW}$ & {\tt driver} & driver\_type & the style of driver \\
$\mathit{RO}_\mathit{run}$ & {\tt io/read\_kbs} & float & Read bandwidth
(KiB/s) \\
$\mathit{RO}_\mathit{run}$ & {\tt io/write\_kbs} & float & Write bandwidth
(KiB/s) \\
@@ -8325,7 +8825,7 @@ void
\subsubsection{RPC name:~get\_uuid}
{\bf Overview:}
-get accessor message derived from field uuid of object VBD
+Get the uuid field of the given VBD.
\noindent {\bf Signature:}
\begin{verbatim} string get_uuid (session_id s, VBD ref self)\end{verbatim}
@@ -8338,7 +8838,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VBD ref } & self & object instance \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -8357,7 +8857,7 @@ value of the field
\subsubsection{RPC name:~get\_VM}
{\bf Overview:}
-get accessor message derived from field VM of object VBD
+Get the VM field of the given VBD.
\noindent {\bf Signature:}
\begin{verbatim} (VM ref) get_VM (session_id s, VBD ref self)\end{verbatim}
@@ -8370,7 +8870,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VBD ref } & self & object instance \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -8389,7 +8889,7 @@ value of the field
\subsubsection{RPC name:~set\_VM}
{\bf Overview:}
-set accessor message derived from field VM of object VBD
+Set the VM field of the given VBD.
\noindent {\bf Signature:}
\begin{verbatim} void set_VM (session_id s, VBD ref self, VM ref
value)\end{verbatim}
@@ -8402,7 +8902,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VBD ref } & self & object instance \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline
{\tt VM ref } & value & New value to set \\ \hline
@@ -8423,7 +8923,7 @@ void
\subsubsection{RPC name:~get\_VDI}
{\bf Overview:}
-get accessor message derived from field VDI of object VBD
+Get the VDI field of the given VBD.
\noindent {\bf Signature:}
\begin{verbatim} (VDI ref) get_VDI (session_id s, VBD ref self)\end{verbatim}
@@ -8436,7 +8936,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VBD ref } & self & object instance \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -8455,7 +8955,7 @@ value of the field
\subsubsection{RPC name:~set\_VDI}
{\bf Overview:}
-set accessor message derived from field VDI of object VBD
+Set the VDI field of the given VBD.
\noindent {\bf Signature:}
\begin{verbatim} void set_VDI (session_id s, VBD ref self, VDI ref
value)\end{verbatim}
@@ -8468,7 +8968,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VBD ref } & self & object instance \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline
{\tt VDI ref } & value & New value to set \\ \hline
@@ -8489,7 +8989,7 @@ void
\subsubsection{RPC name:~get\_device}
{\bf Overview:}
-get accessor message derived from field device of object VBD
+Get the device field of the given VBD.
\noindent {\bf Signature:}
\begin{verbatim} string get_device (session_id s, VBD ref self)\end{verbatim}
@@ -8502,7 +9002,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VBD ref } & self & object instance \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -8521,7 +9021,7 @@ value of the field
\subsubsection{RPC name:~set\_device}
{\bf Overview:}
-set accessor message derived from field device of object VBD
+Set the device field of the given VBD.
\noindent {\bf Signature:}
\begin{verbatim} void set_device (session_id s, VBD ref self, string
value)\end{verbatim}
@@ -8534,7 +9034,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VBD ref } & self & object instance \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline
{\tt string } & value & New value to set \\ \hline
@@ -8555,7 +9055,7 @@ void
\subsubsection{RPC name:~get\_mode}
{\bf Overview:}
-get accessor message derived from field mode of object VBD
+Get the mode field of the given VBD.
\noindent {\bf Signature:}
\begin{verbatim} (vbd_mode) get_mode (session_id s, VBD ref self)\end{verbatim}
@@ -8568,7 +9068,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VBD ref } & self & object instance \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -8587,7 +9087,7 @@ value of the field
\subsubsection{RPC name:~set\_mode}
{\bf Overview:}
-set accessor message derived from field mode of object VBD
+Set the mode field of the given VBD.
\noindent {\bf Signature:}
\begin{verbatim} void set_mode (session_id s, VBD ref self, vbd_mode
value)\end{verbatim}
@@ -8600,7 +9100,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VBD ref } & self & object instance \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline
{\tt vbd\_mode } & value & New value to set \\ \hline
@@ -8618,10 +9118,76 @@ void
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
+\subsubsection{RPC name:~get\_type}
+
+{\bf Overview:}
+Get the type field of the given VBD.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} (vbd_type) get_type (session_id s, VBD ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+vbd\_type
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~set\_type}
+
+{\bf Overview:}
+Set the type field of the given VBD.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} void set_type (session_id s, VBD ref self, vbd_type
value)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline
+
+{\tt vbd\_type } & value & New value to set \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
\subsubsection{RPC name:~get\_driver}
{\bf Overview:}
-get accessor message derived from field driver of object VBD
+Get the driver field of the given VBD.
\noindent {\bf Signature:}
\begin{verbatim} (driver_type) get_driver (session_id s, VBD ref
self)\end{verbatim}
@@ -8634,7 +9200,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VBD ref } & self & object instance \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -8653,7 +9219,7 @@ value of the field
\subsubsection{RPC name:~set\_driver}
{\bf Overview:}
-set accessor message derived from field driver of object VBD
+Set the driver field of the given VBD.
\noindent {\bf Signature:}
\begin{verbatim} void set_driver (session_id s, VBD ref self, driver_type
value)\end{verbatim}
@@ -8666,7 +9232,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VBD ref } & self & object instance \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline
{\tt driver\_type } & value & New value to set \\ \hline
@@ -8687,7 +9253,7 @@ void
\subsubsection{RPC name:~get\_io\_read\_kbs}
{\bf Overview:}
-get accessor message derived from field io/read\_kbs of object VBD
+Get the io/read\_kbs field of the given VBD.
\noindent {\bf Signature:}
\begin{verbatim} float get_io_read_kbs (session_id s, VBD ref
self)\end{verbatim}
@@ -8700,7 +9266,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VBD ref } & self & object instance \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -8719,7 +9285,7 @@ value of the field
\subsubsection{RPC name:~get\_io\_write\_kbs}
{\bf Overview:}
-get accessor message derived from field io/write\_kbs of object VBD
+Get the io/write\_kbs field of the given VBD.
\noindent {\bf Signature:}
\begin{verbatim} float get_io_write_kbs (session_id s, VBD ref
self)\end{verbatim}
@@ -8732,7 +9298,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VBD ref } & self & object instance \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -8751,7 +9317,7 @@ value of the field
\subsubsection{RPC name:~create}
{\bf Overview:}
-constructor for class VBD
+Create a new VBD instance, and return its handle.
\noindent {\bf Signature:}
\begin{verbatim} (VBD ref) create (session_id s, VBD record args)\end{verbatim}
@@ -8783,7 +9349,7 @@ reference to the newly created object
\subsubsection{RPC name:~destroy}
{\bf Overview:}
-destructor for class VBD
+Destroy the specified VBD instance.
\noindent {\bf Signature:}
\begin{verbatim} void destroy (session_id s, VBD ref self)\end{verbatim}
@@ -8796,7 +9362,7 @@ destructor for class VBD
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VBD ref } & self & object instance \\ \hline
+{\tt VBD ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -8815,7 +9381,7 @@ void
\subsubsection{RPC name:~get\_by\_uuid}
{\bf Overview:}
-returns the VBD instance with a particular uuid
+Get a reference to the VBD instance with the specified UUID.
\noindent {\bf Signature:}
\begin{verbatim} (VBD ref) get_by_uuid (session_id s, string
uuid)\end{verbatim}
@@ -8847,7 +9413,7 @@ reference to the object
\subsubsection{RPC name:~get\_record}
{\bf Overview:}
-returns a record containing the state of an instance of class VBD
+Get a record containing the current state of the given VBD.
\noindent {\bf Signature:}
\begin{verbatim} (VBD record) get_record (session_id s, VBD ref
self)\end{verbatim}
@@ -8899,7 +9465,7 @@ Quals & Field & Type & Description \\
\subsubsection{RPC name:~get\_uuid}
{\bf Overview:}
-get accessor message derived from field uuid of object VTPM
+Get the uuid field of the given VTPM.
\noindent {\bf Signature:}
\begin{verbatim} string get_uuid (session_id s, VTPM ref self)\end{verbatim}
@@ -8912,7 +9478,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VTPM ref } & self & object instance \\ \hline
+{\tt VTPM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -8931,7 +9497,7 @@ value of the field
\subsubsection{RPC name:~get\_VM}
{\bf Overview:}
-get accessor message derived from field VM of object VTPM
+Get the VM field of the given VTPM.
\noindent {\bf Signature:}
\begin{verbatim} (VM ref) get_VM (session_id s, VTPM ref self)\end{verbatim}
@@ -8944,7 +9510,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VTPM ref } & self & object instance \\ \hline
+{\tt VTPM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -8963,7 +9529,7 @@ value of the field
\subsubsection{RPC name:~get\_backend}
{\bf Overview:}
-get accessor message derived from field backend of object VTPM
+Get the backend field of the given VTPM.
\noindent {\bf Signature:}
\begin{verbatim} (VM ref) get_backend (session_id s, VTPM ref
self)\end{verbatim}
@@ -8976,7 +9542,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VTPM ref } & self & object instance \\ \hline
+{\tt VTPM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -8995,7 +9561,7 @@ value of the field
\subsubsection{RPC name:~get\_driver}
{\bf Overview:}
-get accessor message derived from field driver of object VTPM
+Get the driver field of the given VTPM.
\noindent {\bf Signature:}
\begin{verbatim} (driver_type) get_driver (session_id s, VTPM ref
self)\end{verbatim}
@@ -9008,7 +9574,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VTPM ref } & self & object instance \\ \hline
+{\tt VTPM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -9027,7 +9593,7 @@ value of the field
\subsubsection{RPC name:~get\_instance}
{\bf Overview:}
-get accessor message derived from field instance of object VTPM
+Get the instance field of the given VTPM.
\noindent {\bf Signature:}
\begin{verbatim} int get_instance (session_id s, VTPM ref self)\end{verbatim}
@@ -9040,7 +9606,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VTPM ref } & self & object instance \\ \hline
+{\tt VTPM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -9059,7 +9625,7 @@ value of the field
\subsubsection{RPC name:~create}
{\bf Overview:}
-constructor for class VTPM
+Create a new VTPM instance, and return its handle.
\noindent {\bf Signature:}
\begin{verbatim} (VTPM ref) create (session_id s, VTPM record
args)\end{verbatim}
@@ -9091,7 +9657,7 @@ reference to the newly created object
\subsubsection{RPC name:~destroy}
{\bf Overview:}
-destructor for class VTPM
+Destroy the specified VTPM instance.
\noindent {\bf Signature:}
\begin{verbatim} void destroy (session_id s, VTPM ref self)\end{verbatim}
@@ -9104,7 +9670,7 @@ destructor for class VTPM
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt VTPM ref } & self & object instance \\ \hline
+{\tt VTPM ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -9123,7 +9689,7 @@ void
\subsubsection{RPC name:~get\_by\_uuid}
{\bf Overview:}
-returns the VTPM instance with a particular uuid
+Get a reference to the VTPM instance with the specified UUID.
\noindent {\bf Signature:}
\begin{verbatim} (VTPM ref) get_by_uuid (session_id s, string
uuid)\end{verbatim}
@@ -9155,7 +9721,7 @@ reference to the object
\subsubsection{RPC name:~get\_record}
{\bf Overview:}
-returns a record containing the state of an instance of class VTPM
+Get a record containing the current state of the given VTPM.
\noindent {\bf Signature:}
\begin{verbatim} (VTPM record) get_record (session_id s, VTPM ref
self)\end{verbatim}
@@ -9181,6 +9747,281 @@ VTPM record
all fields from the object
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+
+\vspace{1cm}
+\newpage
+\section{Class: console}
+\subsection{Fields for class: console}
+\begin{longtable}{|lllp{0.38\textwidth}|}
+\hline
+\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf console} \\
+\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em A
console}} \\
+\hline
+Quals & Field & Type & Description \\
+\hline
+$\mathit{RO}_\mathit{run}$ & {\tt uuid} & string & unique identifier/object
reference \\
+$\mathit{RO}_\mathit{run}$ & {\tt protocol} & console\_protocol & the
protocol used by this console \\
+$\mathit{RO}_\mathit{run}$ & {\tt uri} & string & URI for the console service
\\
+$\mathit{RO}_\mathit{run}$ & {\tt VM} & VM ref & VM to which this console is
attached \\
+\hline
+\end{longtable}
+\subsection{Additional RPCs associated with class: console}
+\subsubsection{RPC name:~get\_record}
+
+{\bf Overview:}
+Get the current state of the given console.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} (console record) get_record (session_id s, console ref
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt console ref } & self & reference to the object \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+console record
+}
+
+
+all fields from the object
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_by\_uuid}
+
+{\bf Overview:}
+Get a reference to the object with the specified UUID.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} (console ref) get_by_uuid (session_id s, string
uuid)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt string } & uuid & UUID of object to return \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+console ref
+}
+
+
+reference to the object
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~create}
+
+{\bf Overview:}
+Create a new console instance, and return its handle.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} (console ref) create (session_id s, console record
args)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt console record } & args & All constructor arguments \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+console ref
+}
+
+
+reference to the newly created object
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~destroy}
+
+{\bf Overview:}
+Destroy the specified console instance.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} void destroy (session_id s, console ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt console ref } & self & reference to the object \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_uuid}
+
+{\bf Overview:}
+Get the uuid field of the given console.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} string get_uuid (session_id s, console ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt console ref } & self & reference to the object \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+string
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_protocol}
+
+{\bf Overview:}
+Get the protocol field of the given console.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} (console_protocol) get_protocol (session_id s, console ref
self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt console ref } & self & reference to the object \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+console\_protocol
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_uri}
+
+{\bf Overview:}
+Get the uri field of the given console.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} string get_uri (session_id s, console ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt console ref } & self & reference to the object \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+string
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_VM}
+
+{\bf Overview:}
+Get the VM field of the given console.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} (VM ref) get_VM (session_id s, console ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt console ref } & self & reference to the object \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+VM ref
+}
+
+
+value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
@@ -9205,7 +10046,7 @@ Quals & Field & Type & Description \\
\subsubsection{RPC name:~get\_uuid}
{\bf Overview:}
-get accessor message derived from field uuid of object user
+Get the uuid field of the given user.
\noindent {\bf Signature:}
\begin{verbatim} string get_uuid (session_id s, user ref self)\end{verbatim}
@@ -9218,7 +10059,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt user ref } & self & object instance \\ \hline
+{\tt user ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -9237,7 +10078,7 @@ value of the field
\subsubsection{RPC name:~get\_short\_name}
{\bf Overview:}
-get accessor message derived from field short\_name of object user
+Get the short\_name field of the given user.
\noindent {\bf Signature:}
\begin{verbatim} string get_short_name (session_id s, user ref
self)\end{verbatim}
@@ -9250,7 +10091,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt user ref } & self & object instance \\ \hline
+{\tt user ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -9269,7 +10110,7 @@ value of the field
\subsubsection{RPC name:~get\_fullname}
{\bf Overview:}
-get accessor message derived from field fullname of object user
+Get the fullname field of the given user.
\noindent {\bf Signature:}
\begin{verbatim} string get_fullname (session_id s, user ref
self)\end{verbatim}
@@ -9282,7 +10123,7 @@ get accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt user ref } & self & object instance \\ \hline
+{\tt user ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -9301,7 +10142,7 @@ value of the field
\subsubsection{RPC name:~set\_fullname}
{\bf Overview:}
-set accessor message derived from field fullname of object user
+Set the fullname field of the given user.
\noindent {\bf Signature:}
\begin{verbatim} void set_fullname (session_id s, user ref self, string
value)\end{verbatim}
@@ -9314,7 +10155,7 @@ set accessor message derived from field
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt user ref } & self & object instance \\ \hline
+{\tt user ref } & self & reference to the object \\ \hline
{\tt string } & value & New value to set \\ \hline
@@ -9335,7 +10176,7 @@ void
\subsubsection{RPC name:~create}
{\bf Overview:}
-constructor for class user
+Create a new user instance, and return its handle.
\noindent {\bf Signature:}
\begin{verbatim} (user ref) create (session_id s, user record
args)\end{verbatim}
@@ -9367,7 +10208,7 @@ reference to the newly created object
\subsubsection{RPC name:~destroy}
{\bf Overview:}
-destructor for class user
+Destroy the specified user instance.
\noindent {\bf Signature:}
\begin{verbatim} void destroy (session_id s, user ref self)\end{verbatim}
@@ -9380,7 +10221,7 @@ destructor for class user
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt user ref } & self & object instance \\ \hline
+{\tt user ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -9399,7 +10240,7 @@ void
\subsubsection{RPC name:~get\_by\_uuid}
{\bf Overview:}
-returns the user instance with a particular uuid
+Get a reference to the user instance with the specified UUID.
\noindent {\bf Signature:}
\begin{verbatim} (user ref) get_by_uuid (session_id s, string
uuid)\end{verbatim}
@@ -9431,7 +10272,7 @@ reference to the object
\subsubsection{RPC name:~get\_record}
{\bf Overview:}
-returns a record containing the state of an instance of class user
+Get a record containing the current state of the given user.
\noindent {\bf Signature:}
\begin{verbatim} (user record) get_record (session_id s, user ref
self)\end{verbatim}
@@ -9512,7 +10353,7 @@ void
\subsubsection{RPC name:~create}
{\bf Overview:}
-constructor for class debug
+Create a new debug instance, and return its handle.
\noindent {\bf Signature:}
\begin{verbatim} (debug ref) create (session_id s, debug record
args)\end{verbatim}
@@ -9544,7 +10385,7 @@ reference to the newly created object
\subsubsection{RPC name:~destroy}
{\bf Overview:}
-destructor for class debug
+Destroy the specified debug instance.
\noindent {\bf Signature:}
\begin{verbatim} void destroy (session_id s, debug ref self)\end{verbatim}
@@ -9557,7 +10398,7 @@ destructor for class debug
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt debug ref } & self & object instance \\ \hline
+{\tt debug ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -9576,7 +10417,7 @@ void
\subsubsection{RPC name:~get\_by\_uuid}
{\bf Overview:}
-returns the debug instance with a particular uuid
+Get a reference to the debug instance with the specified UUID.
\noindent {\bf Signature:}
\begin{verbatim} (debug ref) get_by_uuid (session_id s, string
uuid)\end{verbatim}
@@ -9608,7 +10449,7 @@ reference to the object
\subsubsection{RPC name:~get\_record}
{\bf Overview:}
-returns a record containing the state of an instance of class debug
+Get a record containing the current state of the given debug.
\noindent {\bf Signature:}
\begin{verbatim} (debug record) get_record (session_id s, debug ref
self)\end{verbatim}
diff -r a510c94ceaa3 -r 749c399d73df extras/mini-os/events.c
--- a/extras/mini-os/events.c Tue Dec 12 09:56:06 2006 -0600
+++ b/extras/mini-os/events.c Tue Dec 12 09:58:42 2006 -0600
@@ -31,26 +31,27 @@ typedef struct _ev_action_t {
u32 count;
} ev_action_t;
-
static ev_action_t ev_actions[NR_EVS];
void default_handler(evtchn_port_t port, struct pt_regs *regs, void *data);
+
+static unsigned long bound_ports[NR_EVS/(8*sizeof(unsigned long))];
void unbind_all_ports(void)
{
int i;
- for(i=0;i<NR_EVS;i++)
- {
- if(ev_actions[i].handler != default_handler)
- {
- struct evtchn_close close;
- mask_evtchn(i);
- close.port = i;
- HYPERVISOR_event_channel_op(EVTCHNOP_close, &close);
- }
- }
+ for (i = 0; i < NR_EVS; i++)
+ {
+ if (test_and_clear_bit(i, bound_ports))
+ {
+ struct evtchn_close close;
+ mask_evtchn(i);
+ close.port = i;
+ HYPERVISOR_event_channel_op(EVTCHNOP_close, &close);
+ }
+ }
}
-
+
/*
* Demux events to different handlers.
*/
@@ -114,6 +115,7 @@ int bind_virq(uint32_t virq, evtchn_hand
printk("Failed to bind virtual IRQ %d\n", virq);
return 1;
}
+ set_bit(op.port,bound_ports);
bind_evtchn(op.port, handler, data);
return 0;
}
@@ -188,6 +190,7 @@ int evtchn_bind_interdomain(domid_t pal,
int err = HYPERVISOR_event_channel_op(EVTCHNOP_bind_interdomain, &op);
if (err)
return err;
+ set_bit(op.local_port,bound_ports);
evtchn_port_t port = op.local_port;
clear_evtchn(port); /* Without, handler gets invoked now! */
*local_port = bind_evtchn(port, handler, data);
diff -r a510c94ceaa3 -r 749c399d73df extras/mini-os/include/events.h
--- a/extras/mini-os/include/events.h Tue Dec 12 09:56:06 2006 -0600
+++ b/extras/mini-os/include/events.h Tue Dec 12 09:58:42 2006 -0600
@@ -36,6 +36,7 @@ int evtchn_bind_interdomain(domid_t pal,
int evtchn_bind_interdomain(domid_t pal, evtchn_port_t remote_port,
evtchn_handler_t
handler, void *data,
evtchn_port_t
*local_port);
+void unbind_all_ports(void);
static inline int notify_remote_via_evtchn(evtchn_port_t port)
{
diff -r a510c94ceaa3 -r 749c399d73df linux-2.6-xen-sparse/arch/i386/Kconfig
--- a/linux-2.6-xen-sparse/arch/i386/Kconfig Tue Dec 12 09:56:06 2006 -0600
+++ b/linux-2.6-xen-sparse/arch/i386/Kconfig Tue Dec 12 09:58:42 2006 -0600
@@ -726,7 +726,7 @@ source kernel/Kconfig.hz
config KEXEC
bool "kexec system call (EXPERIMENTAL)"
- depends on EXPERIMENTAL && !X86_XEN
+ depends on EXPERIMENTAL && !XEN_UNPRIVILEGED_GUEST
help
kexec is a system call that implements the ability to shutdown your
current kernel, and to start another kernel. It is like a reboot
diff -r a510c94ceaa3 -r 749c399d73df
linux-2.6-xen-sparse/arch/i386/kernel/setup-xen.c
--- a/linux-2.6-xen-sparse/arch/i386/kernel/setup-xen.c Tue Dec 12 09:56:06
2006 -0600
+++ b/linux-2.6-xen-sparse/arch/i386/kernel/setup-xen.c Tue Dec 12 09:58:42
2006 -0600
@@ -68,6 +68,10 @@
#include <xen/xencons.h>
#include "setup_arch_pre.h"
#include <bios_ebda.h>
+
+#ifdef CONFIG_XEN
+#include <xen/interface/kexec.h>
+#endif
/* Forward Declaration. */
void __init find_max_pfn(void);
@@ -943,6 +947,7 @@ static void __init parse_cmdline_early (
* after a kernel panic.
*/
else if (!memcmp(from, "crashkernel=", 12)) {
+#ifndef CONFIG_XEN
unsigned long size, base;
size = memparse(from+12, &from);
if (*from == '@') {
@@ -953,6 +958,10 @@ static void __init parse_cmdline_early (
crashk_res.start = base;
crashk_res.end = base + size - 1;
}
+#else
+ printk("Ignoring crashkernel command line, "
+ "parameter will be supplied by xen\n");
+#endif
}
#endif
#ifdef CONFIG_PROC_VMCORE
@@ -1322,9 +1331,13 @@ void __init setup_bootmem_allocator(void
}
#endif
#ifdef CONFIG_KEXEC
+#ifdef CONFIG_XEN
+ xen_machine_kexec_setup_resources();
+#else
if (crashk_res.start != crashk_res.end)
reserve_bootmem(crashk_res.start,
crashk_res.end - crashk_res.start + 1);
+#endif
#endif
if (!xen_feature(XENFEAT_auto_translated_physmap))
@@ -1389,7 +1402,11 @@ legacy_init_iomem_resources(struct e820e
request_resource(res, data_resource);
#endif
#ifdef CONFIG_KEXEC
- request_resource(res, &crashk_res);
+ if (crashk_res.start != crashk_res.end)
+ request_resource(res, &crashk_res);
+#ifdef CONFIG_XEN
+ xen_machine_kexec_register_resources(res);
+#endif
#endif
}
}
@@ -1850,9 +1867,11 @@ void __init setup_arch(char **cmdline_p)
#endif
#endif
} else {
- extern int console_use_vt;
- console_use_vt = 0;
- }
+#if defined(CONFIG_VT) && defined(CONFIG_DUMMY_CONSOLE)
+ conswitchp = &dummy_con;
+#endif
+ }
+ xencons_early_setup();
}
static int
diff -r a510c94ceaa3 -r 749c399d73df
linux-2.6-xen-sparse/arch/i386/kernel/swiotlb.c
--- a/linux-2.6-xen-sparse/arch/i386/kernel/swiotlb.c Tue Dec 12 09:56:06
2006 -0600
+++ b/linux-2.6-xen-sparse/arch/i386/kernel/swiotlb.c Tue Dec 12 09:58:42
2006 -0600
@@ -47,8 +47,8 @@ EXPORT_SYMBOL(swiotlb);
*/
#define IO_TLB_SHIFT 11
-/* Width of DMA addresses in the IO TLB. 31 bits is an aacraid limitation. */
-#define IO_TLB_DMA_BITS 31
+/* Width of DMA addresses in the IO TLB. 30 bits is a b44 limitation. */
+#define DEFAULT_IO_TLB_DMA_BITS 30
static int swiotlb_force;
static char *iotlb_virt_start;
@@ -97,6 +97,15 @@ static struct phys_addr {
* Protect the above data structures in the map and unmap calls
*/
static DEFINE_SPINLOCK(io_tlb_lock);
+
+static unsigned int io_tlb_dma_bits = DEFAULT_IO_TLB_DMA_BITS;
+static int __init
+setup_io_tlb_bits(char *str)
+{
+ io_tlb_dma_bits = simple_strtoul(str, NULL, 0);
+ return 0;
+}
+__setup("swiotlb_bits=", setup_io_tlb_bits);
static int __init
setup_io_tlb_npages(char *str)
@@ -158,7 +167,7 @@ swiotlb_init_with_default_size (size_t d
int rc = xen_create_contiguous_region(
(unsigned long)iotlb_virt_start + (i << IO_TLB_SHIFT),
get_order(IO_TLB_SEGSIZE << IO_TLB_SHIFT),
- IO_TLB_DMA_BITS);
+ io_tlb_dma_bits);
BUG_ON(rc);
}
@@ -183,10 +192,12 @@ swiotlb_init_with_default_size (size_t d
printk(KERN_INFO "Software IO TLB enabled: \n"
" Aperture: %lu megabytes\n"
- " Kernel range: 0x%016lx - 0x%016lx\n",
+ " Kernel range: 0x%016lx - 0x%016lx\n"
+ " Address size: %u bits\n",
bytes >> 20,
(unsigned long)iotlb_virt_start,
- (unsigned long)iotlb_virt_start + bytes);
+ (unsigned long)iotlb_virt_start + bytes,
+ io_tlb_dma_bits);
}
void
@@ -654,7 +665,7 @@ int
int
swiotlb_dma_supported (struct device *hwdev, u64 mask)
{
- return (mask >= ((1UL << IO_TLB_DMA_BITS) - 1));
+ return (mask >= ((1UL << io_tlb_dma_bits) - 1));
}
EXPORT_SYMBOL(swiotlb_init);
diff -r a510c94ceaa3 -r 749c399d73df
linux-2.6-xen-sparse/arch/i386/kernel/time-xen.c
--- a/linux-2.6-xen-sparse/arch/i386/kernel/time-xen.c Tue Dec 12 09:56:06
2006 -0600
+++ b/linux-2.6-xen-sparse/arch/i386/kernel/time-xen.c Tue Dec 12 09:58:42
2006 -0600
@@ -710,6 +710,10 @@ irqreturn_t timer_interrupt(int irq, voi
(cputime_t)delta_cpu);
}
+ /* Offlined for more than a few seconds? Avoid lockup warnings. */
+ if (stolen > 5*HZ)
+ touch_softlockup_watchdog();
+
/* Local timer processing (see update_process_times()). */
run_local_timers();
if (rcu_pending(cpu))
@@ -1043,9 +1047,9 @@ void time_resume(void)
#ifdef CONFIG_SMP
static char timer_name[NR_CPUS][15];
-void local_setup_timer(unsigned int cpu)
-{
- int seq;
+int local_setup_timer(unsigned int cpu)
+{
+ int seq, irq;
BUG_ON(cpu == 0);
@@ -1058,15 +1062,17 @@ void local_setup_timer(unsigned int cpu)
} while (read_seqretry(&xtime_lock, seq));
sprintf(timer_name[cpu], "timer%d", cpu);
- per_cpu(timer_irq, cpu) =
- bind_virq_to_irqhandler(
- VIRQ_TIMER,
- cpu,
- timer_interrupt,
- SA_INTERRUPT,
- timer_name[cpu],
- NULL);
- BUG_ON(per_cpu(timer_irq, cpu) < 0);
+ irq = bind_virq_to_irqhandler(VIRQ_TIMER,
+ cpu,
+ timer_interrupt,
+ SA_INTERRUPT,
+ timer_name[cpu],
+ NULL);
+ if (irq < 0)
+ return irq;
+ per_cpu(timer_irq, cpu) = irq;
+
+ return 0;
}
void local_teardown_timer(unsigned int cpu)
diff -r a510c94ceaa3 -r 749c399d73df linux-2.6-xen-sparse/arch/ia64/Kconfig
--- a/linux-2.6-xen-sparse/arch/ia64/Kconfig Tue Dec 12 09:56:06 2006 -0600
+++ b/linux-2.6-xen-sparse/arch/ia64/Kconfig Tue Dec 12 09:58:42 2006 -0600
@@ -533,9 +533,6 @@ config XEN_SKBUFF
config XEN_SKBUFF
default y
-config XEN_DEVMEM
- default n
-
config XEN_REBOOT
default y
diff -r a510c94ceaa3 -r 749c399d73df
linux-2.6-xen-sparse/arch/ia64/kernel/entry.S
--- a/linux-2.6-xen-sparse/arch/ia64/kernel/entry.S Tue Dec 12 09:56:06
2006 -0600
+++ b/linux-2.6-xen-sparse/arch/ia64/kernel/entry.S Tue Dec 12 09:58:42
2006 -0600
@@ -602,7 +602,7 @@ GLOBAL_ENTRY(ia64_strace_leave_kernel)
.ret4: br.cond.sptk ia64_leave_kernel
END(ia64_strace_leave_kernel)
-GLOBAL_ENTRY(ia64_ret_from_clone)
+GLOBAL_ENTRY(__ia64_ret_from_clone)
PT_REGS_UNWIND_INFO(0)
{ /*
* Some versions of gas generate bad unwind info if the first
instruction of a
@@ -628,7 +628,7 @@ GLOBAL_ENTRY(ia64_ret_from_clone)
cmp.ne p6,p0=r2,r0
(p6) br.cond.spnt .strace_check_retval
;; // added stop bits to prevent
r8 dependency
-END(ia64_ret_from_clone)
+END(__ia64_ret_from_clone)
// fall through
GLOBAL_ENTRY(ia64_ret_from_syscall)
PT_REGS_UNWIND_INFO(0)
diff -r a510c94ceaa3 -r 749c399d73df
linux-2.6-xen-sparse/arch/ia64/kernel/iosapic.c
--- a/linux-2.6-xen-sparse/arch/ia64/kernel/iosapic.c Tue Dec 12 09:56:06
2006 -0600
+++ b/linux-2.6-xen-sparse/arch/ia64/kernel/iosapic.c Tue Dec 12 09:58:42
2006 -0600
@@ -197,6 +197,16 @@ int xen_assign_irq_vector(int irq)
return irq_op.vector;
}
+
+void xen_free_irq_vector(int vector)
+{
+ struct physdev_irq irq_op;
+
+ irq_op.vector = vector;
+ if (HYPERVISOR_physdev_op(PHYSDEVOP_free_irq_vector, &irq_op))
+ printk(KERN_WARNING "%s: xen_free_irq_vecotr fail vector=%d\n",
+ __FUNCTION__, vector);
+}
#endif /* XEN */
/*
diff -r a510c94ceaa3 -r 749c399d73df
linux-2.6-xen-sparse/arch/ia64/kernel/irq_ia64.c
--- a/linux-2.6-xen-sparse/arch/ia64/kernel/irq_ia64.c Tue Dec 12 09:56:06
2006 -0600
+++ b/linux-2.6-xen-sparse/arch/ia64/kernel/irq_ia64.c Tue Dec 12 09:58:42
2006 -0600
@@ -94,6 +94,13 @@ free_irq_vector (int vector)
if (vector < IA64_FIRST_DEVICE_VECTOR || vector >
IA64_LAST_DEVICE_VECTOR)
return;
+#ifdef CONFIG_XEN
+ if (is_running_on_xen()) {
+ extern void xen_free_irq_vector(int);
+ xen_free_irq_vector(vector);
+ return;
+ }
+#endif
pos = vector - IA64_FIRST_DEVICE_VECTOR;
if (!test_and_clear_bit(pos, ia64_vector_mask))
printk(KERN_WARNING "%s: double free!\n", __FUNCTION__);
@@ -241,9 +248,15 @@ static DEFINE_PER_CPU(int, timer_irq) =
static DEFINE_PER_CPU(int, timer_irq) = -1;
static DEFINE_PER_CPU(int, ipi_irq) = -1;
static DEFINE_PER_CPU(int, resched_irq) = -1;
+static DEFINE_PER_CPU(int, cmc_irq) = -1;
+static DEFINE_PER_CPU(int, cmcp_irq) = -1;
+static DEFINE_PER_CPU(int, cpep_irq) = -1;
static char timer_name[NR_CPUS][15];
static char ipi_name[NR_CPUS][15];
static char resched_name[NR_CPUS][15];
+static char cmc_name[NR_CPUS][15];
+static char cmcp_name[NR_CPUS][15];
+static char cpep_name[NR_CPUS][15];
struct saved_irq {
unsigned int irq;
@@ -323,6 +336,43 @@ xen_register_percpu_irq (unsigned int ir
break;
case IA64_SPURIOUS_INT_VECTOR:
break;
+ case IA64_CMC_VECTOR:
+ sprintf(cmc_name[cpu], "%s%d", action->name, cpu);
+ ret = bind_virq_to_irqhandler(VIRQ_MCA_CMC, cpu,
+ action->handler,
+ action->flags,
+ cmc_name[cpu],
+ action->dev_id);
+ per_cpu(cmc_irq,cpu) = ret;
+ printk(KERN_INFO "register VIRQ_MCA_CMC (%s) to xen "
+ "irq (%d)\n", cmc_name[cpu], ret);
+ break;
+ case IA64_CMCP_VECTOR:
+ sprintf(cmcp_name[cpu], "%s%d", action->name, cpu);
+ ret = bind_ipi_to_irqhandler(CMCP_VECTOR, cpu,
+ action->handler,
+ action->flags,
+ cmcp_name[cpu],
+ action->dev_id);
+ per_cpu(cmcp_irq,cpu) = ret;
+ printk(KERN_INFO "register CMCP_VECTOR (%s) to xen "
+ "irq (%d)\n", cmcp_name[cpu], ret);
+ break;
+ case IA64_CPEP_VECTOR:
+ sprintf(cpep_name[cpu], "%s%d", action->name, cpu);
+ ret = bind_ipi_to_irqhandler(CPEP_VECTOR, cpu,
+ action->handler,
+ action->flags,
+ cpep_name[cpu],
+ action->dev_id);
+ per_cpu(cpep_irq,cpu) = ret;
+ printk(KERN_INFO "register CPEP_VECTOR (%s) to xen "
+ "irq (%d)\n", cpep_name[cpu], ret);
+ break;
+ case IA64_CPE_VECTOR:
+ printk(KERN_WARNING "register IA64_CPE_VECTOR "
+ "IGNORED\n");
+ break;
default:
printk(KERN_WARNING "Percpu irq %d is unsupported by
xen!\n", irq);
break;
@@ -373,6 +423,18 @@ unbind_evtchn_callback(struct notifier_b
if (action == CPU_DEAD) {
/* Unregister evtchn. */
+ if (per_cpu(cpep_irq,cpu) >= 0) {
+ unbind_from_irqhandler(per_cpu(cpep_irq, cpu), NULL);
+ per_cpu(cpep_irq, cpu) = -1;
+ }
+ if (per_cpu(cmcp_irq,cpu) >= 0) {
+ unbind_from_irqhandler(per_cpu(cmcp_irq, cpu), NULL);
+ per_cpu(cmcp_irq, cpu) = -1;
+ }
+ if (per_cpu(cmc_irq,cpu) >= 0) {
+ unbind_from_irqhandler(per_cpu(cmc_irq, cpu), NULL);
+ per_cpu(cmc_irq, cpu) = -1;
+ }
if (per_cpu(ipi_irq,cpu) >= 0) {
unbind_from_irqhandler (per_cpu(ipi_irq, cpu), NULL);
per_cpu(ipi_irq, cpu) = -1;
@@ -503,6 +565,12 @@ ia64_send_ipi (int cpu, int vector, int
case IA64_IPI_RESCHEDULE:
irq = per_cpu(ipi_to_irq, cpu)[RESCHEDULE_VECTOR];
break;
+ case IA64_CMCP_VECTOR:
+ irq = per_cpu(ipi_to_irq, cpu)[CMCP_VECTOR];
+ break;
+ case IA64_CPEP_VECTOR:
+ irq = per_cpu(ipi_to_irq, cpu)[CPEP_VECTOR];
+ break;
default:
printk(KERN_WARNING"Unsupported IPI type 0x%x\n",
vector);
irq = 0;
diff -r a510c94ceaa3 -r 749c399d73df
linux-2.6-xen-sparse/arch/ia64/kernel/setup.c
--- a/linux-2.6-xen-sparse/arch/ia64/kernel/setup.c Tue Dec 12 09:56:06
2006 -0600
+++ b/linux-2.6-xen-sparse/arch/ia64/kernel/setup.c Tue Dec 12 09:58:42
2006 -0600
@@ -550,13 +550,15 @@ setup_arch (char **cmdline_p)
xen_start_info->nr_pages, xen_start_info->flags);
if (!is_initial_xendomain()) {
- extern int console_use_vt;
+#if !defined(CONFIG_VT) || !defined(CONFIG_DUMMY_CONSOLE)
conswitchp = NULL;
- console_use_vt = 0;
+#endif
}
}
-#endif
-#endif
+ xencons_early_setup();
+#endif
+#endif
+
/* enable IA-64 Machine Check Abort Handling unless disabled */
if (!strstr(saved_command_line, "nomca"))
diff -r a510c94ceaa3 -r 749c399d73df linux-2.6-xen-sparse/arch/ia64/xen/Makefile
--- a/linux-2.6-xen-sparse/arch/ia64/xen/Makefile Tue Dec 12 09:56:06
2006 -0600
+++ b/linux-2.6-xen-sparse/arch/ia64/xen/Makefile Tue Dec 12 09:58:42
2006 -0600
@@ -4,6 +4,6 @@
obj-y := hypercall.o xenivt.o xenentry.o xensetup.o xenpal.o xenhpski.o \
hypervisor.o pci-dma-xen.o util.o xencomm.o xcom_hcall.o \
- xcom_mini.o xcom_privcmd.o
+ xcom_mini.o xcom_privcmd.o mem.o
pci-dma-xen-y := ../../i386/kernel/pci-dma-xen.o
diff -r a510c94ceaa3 -r 749c399d73df
linux-2.6-xen-sparse/arch/ia64/xen/hypervisor.c
--- a/linux-2.6-xen-sparse/arch/ia64/xen/hypervisor.c Tue Dec 12 09:56:06
2006 -0600
+++ b/linux-2.6-xen-sparse/arch/ia64/xen/hypervisor.c Tue Dec 12 09:58:42
2006 -0600
@@ -497,7 +497,7 @@ xen_ia64_privcmd_entry_mmap(struct vm_ar
unsigned long addr,
struct xen_ia64_privcmd_range* privcmd_range,
int i,
- unsigned long mfn,
+ unsigned long gmfn,
pgprot_t prot,
domid_t domid)
{
@@ -506,7 +506,7 @@ xen_ia64_privcmd_entry_mmap(struct vm_ar
unsigned long gpfn;
unsigned long flags;
- if ((addr & ~PAGE_MASK) != 0 || mfn == INVALID_MFN) {
+ if ((addr & ~PAGE_MASK) != 0 || gmfn == INVALID_MFN) {
error = -EINVAL;
goto out;
}
@@ -521,7 +521,7 @@ xen_ia64_privcmd_entry_mmap(struct vm_ar
if (pgprot_val(prot) == PROT_READ) {
flags = ASSIGN_readonly;
}
- error = HYPERVISOR_add_physmap(gpfn, mfn, flags, domid);
+ error = HYPERVISOR_add_physmap_with_gmfn(gpfn, gmfn, flags, domid);
if (error != 0) {
goto out;
}
@@ -732,7 +732,7 @@ int
int
direct_remap_pfn_range(struct vm_area_struct *vma,
unsigned long address, // process virtual address
- unsigned long mfn, // mfn, mfn + 1, ... mfn +
size/PAGE_SIZE
+ unsigned long gmfn, // gmfn, gmfn + 1, ... gmfn +
size/PAGE_SIZE
unsigned long size,
pgprot_t prot,
domid_t domid) // target domain
@@ -755,13 +755,13 @@ direct_remap_pfn_range(struct vm_area_st
i = (address - vma->vm_start) >> PAGE_SHIFT;
for (offset = 0; offset < size; offset += PAGE_SIZE) {
- error = xen_ia64_privcmd_entry_mmap(vma, (address + offset) &
PAGE_MASK, privcmd_range, entry_offset + i, mfn, prot, domid);
+ error = xen_ia64_privcmd_entry_mmap(vma, (address + offset) &
PAGE_MASK, privcmd_range, entry_offset + i, gmfn, prot, domid);
if (error != 0) {
break;
}
i++;
- mfn++;
+ gmfn++;
}
return error;
@@ -1050,3 +1050,55 @@ EXPORT_SYMBOL_GPL(p2m_pte);
EXPORT_SYMBOL_GPL(p2m_pte);
EXPORT_SYMBOL_GPL(p2m_phystomach);
#endif
+
+///////////////////////////////////////////////////////////////////////////
+// for xenoprof
+
+struct resource*
+xen_ia64_allocate_resource(unsigned long size)
+{
+ struct resource* res;
+ int error;
+
+ res = kmalloc(sizeof(*res), GFP_KERNEL);
+ if (res == NULL)
+ return ERR_PTR(-ENOMEM);
+
+ res->name = "Xen";
+ res->flags = IORESOURCE_MEM;
+ error = allocate_resource(&iomem_resource, res, PAGE_ALIGN(size),
+ privcmd_resource_min, privcmd_resource_max,
+ IA64_GRANULE_SIZE, NULL, NULL);
+ if (error) {
+ kfree(res);
+ return ERR_PTR(error);
+ }
+ return res;
+}
+EXPORT_SYMBOL_GPL(xen_ia64_allocate_resource);
+
+void
+xen_ia64_release_resource(struct resource* res)
+{
+ release_resource(res);
+ kfree(res);
+}
+EXPORT_SYMBOL_GPL(xen_ia64_release_resource);
+
+void
+xen_ia64_unmap_resource(struct resource* res)
+{
+ unsigned long gpfn = res->start >> PAGE_SHIFT;
+ unsigned long nr_pages = (res->end - res->start) >> PAGE_SHIFT;
+ unsigned long i;
+
+ for (i = 0; i < nr_pages; i++) {
+ int error = HYPERVISOR_zap_physmap(gpfn + i, 0);
+ if (error)
+ printk(KERN_ERR
+ "%s:%d zap_phsymap failed %d gpfn %lx\n",
+ __func__, __LINE__, error, gpfn + i);
+ }
+ xen_ia64_release_resource(res);
+}
+EXPORT_SYMBOL_GPL(xen_ia64_unmap_resource);
diff -r a510c94ceaa3 -r 749c399d73df
linux-2.6-xen-sparse/arch/ia64/xen/xcom_hcall.c
--- a/linux-2.6-xen-sparse/arch/ia64/xen/xcom_hcall.c Tue Dec 12 09:56:06
2006 -0600
+++ b/linux-2.6-xen-sparse/arch/ia64/xen/xcom_hcall.c Tue Dec 12 09:58:42
2006 -0600
@@ -32,10 +32,12 @@
#include <xen/interface/callback.h>
#include <xen/interface/acm_ops.h>
#include <xen/interface/hvm/params.h>
+#include <xen/interface/xenoprof.h>
#include <asm/hypercall.h>
#include <asm/page.h>
#include <asm/uaccess.h>
#include <asm/xen/xencomm.h>
+#include <asm/perfmon.h>
/* Xencomm notes:
* This file defines hypercalls to be used by xencomm. The hypercalls simply
@@ -301,3 +303,63 @@ xencomm_hypercall_suspend(unsigned long
return xencomm_arch_hypercall_suspend(xencomm_create_inline(&arg));
}
+
+int
+xencomm_hypercall_xenoprof_op(int op, void *arg)
+{
+ switch (op) {
+ case XENOPROF_init:
+ case XENOPROF_set_active:
+ case XENOPROF_set_passive:
+ case XENOPROF_counter:
+ case XENOPROF_get_buffer:
+ break;
+
+ case XENOPROF_reset_active_list:
+ case XENOPROF_reset_passive_list:
+ case XENOPROF_reserve_counters:
+ case XENOPROF_setup_events:
+ case XENOPROF_enable_virq:
+ case XENOPROF_start:
+ case XENOPROF_stop:
+ case XENOPROF_disable_virq:
+ case XENOPROF_release_counters:
+ case XENOPROF_shutdown:
+ return xencomm_arch_hypercall_xenoprof_op(op, arg);
+ break;
+
+ default:
+ printk("%s: op %d isn't supported\n", __func__, op);
+ return -ENOSYS;
+ }
+ return xencomm_arch_hypercall_xenoprof_op(op,
+ xencomm_create_inline(arg));
+}
+
+int
+xencomm_hypercall_perfmon_op(unsigned long cmd, void* arg, unsigned long count)
+{
+ switch (cmd) {
+ case PFM_GET_FEATURES:
+ case PFM_CREATE_CONTEXT:
+ case PFM_WRITE_PMCS:
+ case PFM_WRITE_PMDS:
+ case PFM_LOAD_CONTEXT:
+ break;
+
+ case PFM_DESTROY_CONTEXT:
+ case PFM_UNLOAD_CONTEXT:
+ case PFM_START:
+ case PFM_STOP:
+ return xencomm_arch_hypercall_perfmon_op(cmd, arg, count);
+
+ default:
+ printk("%s:%d cmd %ld isn't supported\n",
+ __func__,__LINE__, cmd);
+ BUG();
+ }
+
+ return xencomm_arch_hypercall_perfmon_op(cmd,
+ xencomm_create_inline(arg),
+ count);
+}
diff -r a510c94ceaa3 -r 749c399d73df
linux-2.6-xen-sparse/arch/ia64/xen/xcom_mini.c
--- a/linux-2.6-xen-sparse/arch/ia64/xen/xcom_mini.c Tue Dec 12 09:56:06
2006 -0600
+++ b/linux-2.6-xen-sparse/arch/ia64/xen/xcom_mini.c Tue Dec 12 09:58:42
2006 -0600
@@ -28,12 +28,14 @@
#include <xen/interface/physdev.h>
#include <xen/interface/grant_table.h>
#include <xen/interface/hvm/params.h>
+#include <xen/interface/xenoprof.h>
#ifdef CONFIG_VMX_GUEST
#include <asm/hypervisor.h>
#else
#include <asm/hypercall.h>
#endif
#include <asm/xen/xencomm.h>
+#include <asm/perfmon.h>
int
xencomm_mini_hypercall_event_channel_op(int cmd, void *op)
@@ -92,6 +94,9 @@ xencommize_mini_grant_table_op(struct xe
break;
case GNTTABOP_transfer:
argsize = sizeof(struct gnttab_transfer);
+ break;
+ case GNTTABOP_copy:
+ argsize = sizeof(struct gnttab_copy);
break;
default:
printk("%s: unknown mini grant table op %d\n", __func__, cmd);
@@ -317,3 +322,96 @@ xencomm_mini_hypercall_xen_version(int c
return xencomm_arch_hypercall_xen_version(cmd, desc);
}
EXPORT_SYMBOL(xencomm_mini_hypercall_xen_version);
+
+int
+xencomm_mini_hypercall_xenoprof_op(int op, void *arg)
+{
+ unsigned int argsize;
+ struct xencomm_mini xc_area[2];
+ int nbr_area = 2;
+ struct xencomm_handle *desc;
+ int rc;
+
+ switch (op) {
+ case XENOPROF_init:
+ argsize = sizeof(xenoprof_init_t);
+ break;
+ case XENOPROF_set_active:
+ argsize = sizeof(domid_t);
+ break;
+ case XENOPROF_set_passive:
+ argsize = sizeof(xenoprof_passive_t);
+ break;
+ case XENOPROF_counter:
+ argsize = sizeof(xenoprof_counter_t);
+ break;
+ case XENOPROF_get_buffer:
+ argsize = sizeof(xenoprof_get_buffer_t);
+ break;
+
+ case XENOPROF_reset_active_list:
+ case XENOPROF_reset_passive_list:
+ case XENOPROF_reserve_counters:
+ case XENOPROF_setup_events:
+ case XENOPROF_enable_virq:
+ case XENOPROF_start:
+ case XENOPROF_stop:
+ case XENOPROF_disable_virq:
+ case XENOPROF_release_counters:
+ case XENOPROF_shutdown:
+ return xencomm_arch_hypercall_xenoprof_op(op, arg);
+
+ default:
+ printk("%s: op %d isn't supported\n", __func__, op);
+ return -ENOSYS;
+ }
+ rc = xencomm_create_mini(xc_area, &nbr_area, arg, argsize, &desc);
+ if (rc)
+ return rc;
+ return xencomm_arch_hypercall_xenoprof_op(op, desc);
+}
+EXPORT_SYMBOL_GPL(xencomm_mini_hypercall_xenoprof_op);
+
+int
+xencomm_mini_hypercall_perfmon_op(unsigned long cmd, void* arg,
+ unsigned long count)
+{
+ unsigned int argsize;
+ struct xencomm_mini xc_area[2];
+ int nbr_area = 2;
+ struct xencomm_handle *desc;
+ int rc;
+
+ switch (cmd) {
+ case PFM_GET_FEATURES:
+ argsize = sizeof(pfarg_features_t);
+ break;
+ case PFM_CREATE_CONTEXT:
+ argsize = sizeof(pfarg_context_t);
+ break;
+ case PFM_LOAD_CONTEXT:
+ argsize = sizeof(pfarg_load_t);
+ break;
+ case PFM_WRITE_PMCS:
+ case PFM_WRITE_PMDS:
+ argsize = sizeof(pfarg_reg_t) * count;
+ break;
+
+ case PFM_DESTROY_CONTEXT:
+ case PFM_UNLOAD_CONTEXT:
+ case PFM_START:
+ case PFM_STOP:
+ return xencomm_arch_hypercall_perfmon_op(cmd, arg, count);
+
+ default:
+ printk("%s:%d cmd %ld isn't supported\n",
+ __func__, __LINE__, cmd);
+ BUG();
+ }
+
+ rc = xencomm_create_mini(xc_area, &nbr_area, arg, argsize, &desc);
+ if (rc)
+ return rc;
+ return xencomm_arch_hypercall_perfmon_op(cmd, desc, count);
+}
+EXPORT_SYMBOL_GPL(xencomm_mini_hypercall_perfmon_op);
diff -r a510c94ceaa3 -r 749c399d73df
linux-2.6-xen-sparse/arch/ia64/xen/xcom_privcmd.c
--- a/linux-2.6-xen-sparse/arch/ia64/xen/xcom_privcmd.c Tue Dec 12 09:56:06
2006 -0600
+++ b/linux-2.6-xen-sparse/arch/ia64/xen/xcom_privcmd.c Tue Dec 12 09:58:42
2006 -0600
@@ -579,9 +579,16 @@ xencomm_privcmd_hvm_op(privcmd_hypercall
case HVMOP_set_param:
argsize = sizeof(xen_hvm_param_t);
break;
- case HVMOP_set_irq_level:
- argsize = sizeof(xen_hvm_set_irq_level_t);
- break;
+ case HVMOP_set_pci_intx_level:
+ argsize = sizeof(xen_hvm_set_pci_intx_level_t);
+ break;
+ case HVMOP_set_isa_irq_level:
+ argsize = sizeof(xen_hvm_set_isa_irq_level_t);
+ break;
+ case HVMOP_set_pci_link_route:
+ argsize = sizeof(xen_hvm_set_pci_link_route_t);
+ break;
+
default:
printk("%s: unknown HVMOP %d\n", __func__, cmd);
return -EINVAL;
diff -r a510c94ceaa3 -r 749c399d73df
linux-2.6-xen-sparse/arch/ia64/xen/xenentry.S
--- a/linux-2.6-xen-sparse/arch/ia64/xen/xenentry.S Tue Dec 12 09:56:06
2006 -0600
+++ b/linux-2.6-xen-sparse/arch/ia64/xen/xenentry.S Tue Dec 12 09:58:42
2006 -0600
@@ -237,6 +237,47 @@ END(ia64_trace_syscall)
END(ia64_trace_syscall)
#endif
+#ifdef CONFIG_XEN
+GLOBAL_ENTRY(xen_ret_from_clone)
+ PT_REGS_UNWIND_INFO(0)
+ movl r16=running_on_xen;;
+ ld4 r16=[r16];;
+ cmp.eq p7,p0=r16,r0
+(p7) br.cond.sptk.many __ia64_ret_from_clone;;
+#else
+GLOBAL_ENTRY(ia64_ret_from_clone)
+ PT_REGS_UNWIND_INFO(0)
+#endif
+{ /*
+ * Some versions of gas generate bad unwind info if the first
instruction of a
+ * procedure doesn't go into the first slot of a bundle. This is a
workaround.
+ */
+ nop.m 0
+ nop.i 0
+ /*
+ * We need to call schedule_tail() to complete the scheduling process.
+ * Called by ia64_switch_to() after do_fork()->copy_thread(). r8
contains the
+ * address of the previously executing task.
+ */
+ br.call.sptk.many rp=ia64_invoke_schedule_tail
+}
+.ret8:
+ adds r2=TI_FLAGS+IA64_TASK_SIZE,r13
+ ;;
+ ld4 r2=[r2]
+ ;;
+ mov r8=0
+ and r2=_TIF_SYSCALL_TRACEAUDIT,r2
+ ;;
+ cmp.ne p6,p0=r2,r0
+(p6) br.cond.spnt .strace_check_retval
+ ;; // added stop bits to prevent
r8 dependency
+#ifdef CONFIG_XEN
+ br.cond.sptk ia64_ret_from_syscall
+END(xen_ret_from_clone)
+#else
+END(ia64_ret_from_clone)
+#endif
/*
* ia64_leave_syscall(): Same as ia64_leave_kernel, except that it doesn't
* need to switch to bank 0 and doesn't restore the scratch registers.
diff -r a510c94ceaa3 -r 749c399d73df linux-2.6-xen-sparse/arch/x86_64/Kconfig
--- a/linux-2.6-xen-sparse/arch/x86_64/Kconfig Tue Dec 12 09:56:06 2006 -0600
+++ b/linux-2.6-xen-sparse/arch/x86_64/Kconfig Tue Dec 12 09:58:42 2006 -0600
@@ -435,7 +435,7 @@ config X86_MCE_AMD
config KEXEC
bool "kexec system call (EXPERIMENTAL)"
- depends on EXPERIMENTAL && !X86_64_XEN
+ depends on EXPERIMENTAL && !XEN_UNPRIVILEGED_GUEST
help
kexec is a system call that implements the ability to shutdown your
current kernel, and to start another kernel. It is like a reboot
diff -r a510c94ceaa3 -r 749c399d73df
linux-2.6-xen-sparse/arch/x86_64/kernel/e820-xen.c
--- a/linux-2.6-xen-sparse/arch/x86_64/kernel/e820-xen.c Tue Dec 12
09:56:06 2006 -0600
+++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/e820-xen.c Tue Dec 12
09:58:42 2006 -0600
@@ -260,7 +260,11 @@ void __init e820_reserve_resources(struc
request_resource(res, &data_resource);
#endif
#ifdef CONFIG_KEXEC
- request_resource(res, &crashk_res);
+ if (crashk_res.start != crashk_res.end)
+ request_resource(res, &crashk_res);
+#ifdef CONFIG_XEN
+ xen_machine_kexec_register_resources(res);
+#endif
#endif
}
}
diff -r a510c94ceaa3 -r 749c399d73df
linux-2.6-xen-sparse/arch/x86_64/kernel/setup-xen.c
--- a/linux-2.6-xen-sparse/arch/x86_64/kernel/setup-xen.c Tue Dec 12
09:56:06 2006 -0600
+++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/setup-xen.c Tue Dec 12
09:58:42 2006 -0600
@@ -80,6 +80,10 @@
#include <asm/mach-xen/setup_arch_post.h>
#include <xen/interface/memory.h>
+#ifdef CONFIG_XEN
+#include <xen/interface/kexec.h>
+#endif
+
extern unsigned long start_pfn;
extern struct edid_info edid_info;
@@ -450,6 +454,7 @@ static __init void parse_cmdline_early (
* after a kernel panic.
*/
else if (!memcmp(from, "crashkernel=", 12)) {
+#ifndef CONFIG_XEN
unsigned long size, base;
size = memparse(from+12, &from);
if (*from == '@') {
@@ -460,6 +465,10 @@ static __init void parse_cmdline_early (
crashk_res.start = base;
crashk_res.end = base + size - 1;
}
+#else
+ printk("Ignoring crashkernel command line, "
+ "parameter will be supplied by xen\n");
+#endif
}
#endif
@@ -812,10 +821,14 @@ void __init setup_arch(char **cmdline_p)
#endif
#endif /* !CONFIG_XEN */
#ifdef CONFIG_KEXEC
+#ifdef CONFIG_XEN
+ xen_machine_kexec_setup_resources();
+#else
if (crashk_res.start != crashk_res.end) {
reserve_bootmem(crashk_res.start,
crashk_res.end - crashk_res.start + 1);
}
+#endif
#endif
paging_init();
@@ -970,10 +983,12 @@ void __init setup_arch(char **cmdline_p)
#endif
#endif
} else {
- extern int console_use_vt;
- console_use_vt = 0;
- }
- }
+#if defined(CONFIG_VT) && defined(CONFIG_DUMMY_CONSOLE)
+ conswitchp = &dummy_con;
+#endif
+ }
+ }
+ xencons_early_setup();
#else /* CONFIG_XEN */
#ifdef CONFIG_VT
diff -r a510c94ceaa3 -r 749c399d73df linux-2.6-xen-sparse/drivers/xen/Kconfig
--- a/linux-2.6-xen-sparse/drivers/xen/Kconfig Tue Dec 12 09:56:06 2006 -0600
+++ b/linux-2.6-xen-sparse/drivers/xen/Kconfig Tue Dec 12 09:58:42 2006 -0600
@@ -172,6 +172,29 @@ config XEN_NETDEV_FRONTEND
dedicated device-driver domain, or your master control domain
(domain 0), then you almost certainly want to say Y here.
+config XEN_FRAMEBUFFER
+ tristate "Framebuffer-device frontend driver"
+ depends on XEN && FB
+ select FB_CFB_FILLRECT
+ select FB_CFB_COPYAREA
+ select FB_CFB_IMAGEBLIT
+ default y
+ help
+ The framebuffer-device frontend drivers allows the kernel to create a
+ virtual framebuffer. This framebuffer can be viewed in another
+ domain. Unless this domain has access to a real video card, you
+ probably want to say Y here.
+
+config XEN_KEYBOARD
+ tristate "Keyboard-device frontend driver"
+ depends on XEN && XEN_FRAMEBUFFER && INPUT
+ default y
+ help
+ The keyboard-device frontend driver allows the kernel to create a
+ virtual keyboard. This keyboard can then be driven by another
+ domain. If you've said Y to CONFIG_XEN_FRAMEBUFFER, you probably
+ want to say Y here.
+
config XEN_SCRUB_PAGES
bool "Scrub memory before freeing it to Xen"
default y
diff -r a510c94ceaa3 -r 749c399d73df linux-2.6-xen-sparse/drivers/xen/Makefile
--- a/linux-2.6-xen-sparse/drivers/xen/Makefile Tue Dec 12 09:56:06 2006 -0600
+++ b/linux-2.6-xen-sparse/drivers/xen/Makefile Tue Dec 12 09:58:42 2006 -0600
@@ -15,3 +15,5 @@ obj-$(CONFIG_XEN_NETDEV_FRONTEND) += net
obj-$(CONFIG_XEN_NETDEV_FRONTEND) += netfront/
obj-$(CONFIG_XEN_PCIDEV_BACKEND) += pciback/
obj-$(CONFIG_XEN_PCIDEV_FRONTEND) += pcifront/
+obj-$(CONFIG_XEN_FRAMEBUFFER) += fbfront/
+obj-$(CONFIG_XEN_KEYBOARD) += fbfront/
diff -r a510c94ceaa3 -r 749c399d73df
linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c
--- a/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c Tue Dec 12
09:56:06 2006 -0600
+++ b/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c Tue Dec 12
09:58:42 2006 -0600
@@ -359,7 +359,7 @@ static void blkfront_closing(struct xenb
DPRINTK("blkfront_closing: %s removed\n", dev->nodename);
if (info->rq == NULL)
- return;
+ goto out;
spin_lock_irqsave(&blkif_io_lock, flags);
/* No more blkif_request(). */
@@ -373,6 +373,7 @@ static void blkfront_closing(struct xenb
xlvbd_del(info);
+ out:
xenbus_frontend_closed(dev);
}
diff -r a510c94ceaa3 -r 749c399d73df linux-2.6-xen-sparse/drivers/xen/char/mem.c
--- a/linux-2.6-xen-sparse/drivers/xen/char/mem.c Tue Dec 12 09:56:06
2006 -0600
+++ b/linux-2.6-xen-sparse/drivers/xen/char/mem.c Tue Dec 12 09:58:42
2006 -0600
@@ -147,7 +147,7 @@ static inline int uncached_access(struct
return 0;
}
-static int mmap_mem(struct file * file, struct vm_area_struct * vma)
+static int xen_mmap_mem(struct file * file, struct vm_area_struct * vma)
{
size_t size = vma->vm_end - vma->vm_start;
@@ -200,6 +200,6 @@ struct file_operations mem_fops = {
.llseek = memory_lseek,
.read = read_mem,
.write = write_mem,
- .mmap = mmap_mem,
+ .mmap = xen_mmap_mem,
.open = open_mem,
};
diff -r a510c94ceaa3 -r 749c399d73df
linux-2.6-xen-sparse/drivers/xen/console/console.c
--- a/linux-2.6-xen-sparse/drivers/xen/console/console.c Tue Dec 12
09:56:06 2006 -0600
+++ b/linux-2.6-xen-sparse/drivers/xen/console/console.c Tue Dec 12
09:58:42 2006 -0600
@@ -57,6 +57,7 @@
#include <xen/interface/event_channel.h>
#include <asm/hypervisor.h>
#include <xen/evtchn.h>
+#include <xen/xenbus.h>
#include <xen/xencons.h>
/*
@@ -64,45 +65,63 @@
* 'xencons=off' [XC_OFF]: Console is disabled.
* 'xencons=tty' [XC_TTY]: Console attached to '/dev/tty[0-9]+'.
* 'xencons=ttyS' [XC_SERIAL]: Console attached to '/dev/ttyS[0-9]+'.
- * [XC_DEFAULT]: DOM0 -> XC_SERIAL ; all others -> XC_TTY.
+ * 'xencons=xvc' [XC_XVC]: Console attached to '/dev/xvc0'.
+ * default: DOM0 -> XC_SERIAL ; all others -> XC_TTY.
*
* NB. In mode XC_TTY, we create dummy consoles for tty2-63. This suppresses
* warnings from standard distro startup scripts.
*/
-static enum { XC_OFF, XC_DEFAULT, XC_TTY, XC_SERIAL } xc_mode = XC_DEFAULT;
+static enum {
+ XC_OFF, XC_TTY, XC_SERIAL, XC_XVC
+} xc_mode;
static int xc_num = -1;
+
+/* /dev/xvc0 device number allocated by lanana.org. */
+#define XEN_XVC_MAJOR 204
+#define XEN_XVC_MINOR 191
#ifdef CONFIG_MAGIC_SYSRQ
static unsigned long sysrq_requested;
extern int sysrq_enabled;
#endif
+void xencons_early_setup(void)
+{
+ extern int console_use_vt;
+
+ if (is_initial_xendomain()) {
+ xc_mode = XC_SERIAL;
+ } else {
+ xc_mode = XC_TTY;
+ console_use_vt = 0;
+ }
+}
+
static int __init xencons_setup(char *str)
{
char *q;
int n;
-
- if (!strncmp(str, "ttyS", 4))
+ extern int console_use_vt;
+
+ console_use_vt = 1;
+ if (!strncmp(str, "ttyS", 4)) {
xc_mode = XC_SERIAL;
- else if (!strncmp(str, "tty", 3))
+ str += 4;
+ } else if (!strncmp(str, "tty", 3)) {
xc_mode = XC_TTY;
- else if (!strncmp(str, "off", 3))
+ str += 3;
+ console_use_vt = 0;
+ } else if (!strncmp(str, "xvc", 3)) {
+ xc_mode = XC_XVC;
+ str += 3;
+ } else if (!strncmp(str, "off", 3)) {
xc_mode = XC_OFF;
-
- switch (xc_mode) {
- case XC_SERIAL:
- n = simple_strtol(str+4, &q, 10);
- if (q > (str + 4))
- xc_num = n;
- break;
- case XC_TTY:
- n = simple_strtol(str+3, &q, 10);
- if (q > (str + 3))
- xc_num = n;
- break;
- default:
- break;
- }
+ str += 3;
+ }
+
+ n = simple_strtol(str, &q, 10);
+ if (q != str)
+ xc_num = n;
return 1;
}
@@ -189,18 +208,20 @@ static int __init xen_console_init(void)
goto out;
if (is_initial_xendomain()) {
- if (xc_mode == XC_DEFAULT)
- xc_mode = XC_SERIAL;
kcons_info.write = kcons_write_dom0;
} else {
if (!xen_start_info->console.domU.evtchn)
goto out;
- if (xc_mode == XC_DEFAULT)
- xc_mode = XC_TTY;
kcons_info.write = kcons_write;
}
switch (xc_mode) {
+ case XC_XVC:
+ strcpy(kcons_info.name, "xvc");
+ if (xc_num == -1)
+ xc_num = 0;
+ break;
+
case XC_SERIAL:
strcpy(kcons_info.name, "ttyS");
if (xc_num == -1)
@@ -305,7 +326,7 @@ void dom0_init_screen_info(const struct
/******************** User-space console driver (/dev/console) ************/
#define DRV(_d) (_d)
-#define DUMMY_TTY(_tty) ((xc_mode != XC_SERIAL) && \
+#define DUMMY_TTY(_tty) ((xc_mode == XC_TTY) && \
((_tty)->index != (xc_num - 1)))
static struct termios *xencons_termios[MAX_NR_CONSOLES];
@@ -628,8 +649,8 @@ static int __init xencons_init(void)
return rc;
}
- xencons_driver = alloc_tty_driver((xc_mode == XC_SERIAL) ?
- 1 : MAX_NR_CONSOLES);
+ xencons_driver = alloc_tty_driver((xc_mode == XC_TTY) ?
+ MAX_NR_CONSOLES : 1);
if (xencons_driver == NULL)
return -ENOMEM;
@@ -644,14 +665,23 @@ static int __init xencons_init(void)
DRV(xencons_driver)->termios = xencons_termios;
DRV(xencons_driver)->termios_locked = xencons_termios_locked;
- if (xc_mode == XC_SERIAL) {
+ switch (xc_mode) {
+ case XC_XVC:
+ DRV(xencons_driver)->name = "xvc";
+ DRV(xencons_driver)->major = XEN_XVC_MAJOR;
+ DRV(xencons_driver)->minor_start = XEN_XVC_MINOR;
+ DRV(xencons_driver)->name_base = xc_num;
+ break;
+ case XC_SERIAL:
DRV(xencons_driver)->name = "ttyS";
DRV(xencons_driver)->minor_start = 64 + xc_num;
- DRV(xencons_driver)->name_base = 0 + xc_num;
- } else {
+ DRV(xencons_driver)->name_base = xc_num;
+ break;
+ default:
DRV(xencons_driver)->name = "tty";
DRV(xencons_driver)->minor_start = 1;
DRV(xencons_driver)->name_base = 1;
+ break;
}
tty_set_operations(xencons_driver, &xencons_ops);
diff -r a510c94ceaa3 -r 749c399d73df
linux-2.6-xen-sparse/drivers/xen/core/Makefile
--- a/linux-2.6-xen-sparse/drivers/xen/core/Makefile Tue Dec 12 09:56:06
2006 -0600
+++ b/linux-2.6-xen-sparse/drivers/xen/core/Makefile Tue Dec 12 09:58:42
2006 -0600
@@ -11,3 +11,4 @@ obj-$(CONFIG_XEN_SKBUFF) += skbuff.o
obj-$(CONFIG_XEN_SKBUFF) += skbuff.o
obj-$(CONFIG_XEN_REBOOT) += reboot.o machine_reboot.o
obj-$(CONFIG_XEN_SMPBOOT) += smpboot.o
+obj-$(CONFIG_KEXEC) += machine_kexec.o
diff -r a510c94ceaa3 -r 749c399d73df
linux-2.6-xen-sparse/drivers/xen/core/evtchn.c
--- a/linux-2.6-xen-sparse/drivers/xen/core/evtchn.c Tue Dec 12 09:56:06
2006 -0600
+++ b/linux-2.6-xen-sparse/drivers/xen/core/evtchn.c Tue Dec 12 09:58:42
2006 -0600
@@ -244,35 +244,42 @@ asmlinkage void evtchn_do_upcall(struct
static int find_unbound_irq(void)
{
+ static int warned;
+ int dynirq, irq;
+
+ for (dynirq = 0; dynirq < NR_DYNIRQS; dynirq++) {
+ irq = dynirq_to_irq(dynirq);
+ if (irq_bindcount[irq] == 0)
+ return irq;
+ }
+
+ if (!warned) {
+ warned = 1;
+ printk(KERN_WARNING "No available IRQ to bind to: "
+ "increase NR_DYNIRQS.\n");
+ }
+
+ return -ENOSPC;
+}
+
+static int bind_evtchn_to_irq(unsigned int evtchn)
+{
int irq;
- /* Only allocate from dynirq range */
- for (irq = DYNIRQ_BASE; irq < NR_IRQS; irq++)
- if (irq_bindcount[irq] == 0)
- break;
-
- if (irq == NR_IRQS)
- panic("No available IRQ to bind to: increase NR_IRQS!\n");
-
- return irq;
-}
-
-static int bind_evtchn_to_irq(unsigned int evtchn)
-{
- int irq;
-
spin_lock(&irq_mapping_update_lock);
if ((irq = evtchn_to_irq[evtchn]) == -1) {
- irq = find_unbound_irq();
+ if ((irq = find_unbound_irq()) < 0)
+ goto out;
+
evtchn_to_irq[evtchn] = irq;
irq_info[irq] = mk_irq_info(IRQT_EVTCHN, 0, evtchn);
}
irq_bindcount[irq]++;
+ out:
spin_unlock(&irq_mapping_update_lock);
-
return irq;
}
@@ -284,6 +291,9 @@ static int bind_virq_to_irq(unsigned int
spin_lock(&irq_mapping_update_lock);
if ((irq = per_cpu(virq_to_irq, cpu)[virq]) == -1) {
+ if ((irq = find_unbound_irq()) < 0)
+ goto out;
+
bind_virq.virq = virq;
bind_virq.vcpu = cpu;
if (HYPERVISOR_event_channel_op(EVTCHNOP_bind_virq,
@@ -291,7 +301,6 @@ static int bind_virq_to_irq(unsigned int
BUG();
evtchn = bind_virq.port;
- irq = find_unbound_irq();
evtchn_to_irq[evtchn] = irq;
irq_info[irq] = mk_irq_info(IRQT_VIRQ, virq, evtchn);
@@ -302,8 +311,8 @@ static int bind_virq_to_irq(unsigned int
irq_bindcount[irq]++;
+ out:
spin_unlock(&irq_mapping_update_lock);
-
return irq;
}
@@ -315,13 +324,15 @@ static int bind_ipi_to_irq(unsigned int
spin_lock(&irq_mapping_update_lock);
if ((irq = per_cpu(ipi_to_irq, cpu)[ipi]) == -1) {
+ if ((irq = find_unbound_irq()) < 0)
+ goto out;
+
bind_ipi.vcpu = cpu;
if (HYPERVISOR_event_channel_op(EVTCHNOP_bind_ipi,
&bind_ipi) != 0)
BUG();
evtchn = bind_ipi.port;
- irq = find_unbound_irq();
evtchn_to_irq[evtchn] = irq;
irq_info[irq] = mk_irq_info(IRQT_IPI, ipi, evtchn);
@@ -332,8 +343,8 @@ static int bind_ipi_to_irq(unsigned int
irq_bindcount[irq]++;
+ out:
spin_unlock(&irq_mapping_update_lock);
-
return irq;
}
@@ -383,6 +394,9 @@ int bind_evtchn_to_irqhandler(
int retval;
irq = bind_evtchn_to_irq(evtchn);
+ if (irq < 0)
+ return irq;
+
retval = request_irq(irq, handler, irqflags, devname, dev_id);
if (retval != 0) {
unbind_from_irq(irq);
@@ -405,6 +419,9 @@ int bind_virq_to_irqhandler(
int retval;
irq = bind_virq_to_irq(virq, cpu);
+ if (irq < 0)
+ return irq;
+
retval = request_irq(irq, handler, irqflags, devname, dev_id);
if (retval != 0) {
unbind_from_irq(irq);
@@ -427,6 +444,9 @@ int bind_ipi_to_irqhandler(
int retval;
irq = bind_ipi_to_irq(ipi, cpu);
+ if (irq < 0)
+ return irq;
+
retval = request_irq(irq, handler, irqflags, devname, dev_id);
if (retval != 0) {
unbind_from_irq(irq);
diff -r a510c94ceaa3 -r 749c399d73df
linux-2.6-xen-sparse/drivers/xen/core/smpboot.c
--- a/linux-2.6-xen-sparse/drivers/xen/core/smpboot.c Tue Dec 12 09:56:06
2006 -0600
+++ b/linux-2.6-xen-sparse/drivers/xen/core/smpboot.c Tue Dec 12 09:58:42
2006 -0600
@@ -33,7 +33,7 @@ extern irqreturn_t smp_reschedule_interr
extern irqreturn_t smp_reschedule_interrupt(int, void *, struct pt_regs *);
extern irqreturn_t smp_call_function_interrupt(int, void *, struct pt_regs *);
-extern void local_setup_timer(unsigned int cpu);
+extern int local_setup_timer(unsigned int cpu);
extern void local_teardown_timer(unsigned int cpu);
extern void hypervisor_callback(void);
@@ -110,32 +110,45 @@ set_cpu_sibling_map(int cpu)
cpu_data[cpu].booted_cores = 1;
}
-static void xen_smp_intr_init(unsigned int cpu)
-{
+static int xen_smp_intr_init(unsigned int cpu)
+{
+ int rc;
+
+ per_cpu(resched_irq, cpu) = per_cpu(callfunc_irq, cpu) = -1;
+
sprintf(resched_name[cpu], "resched%d", cpu);
- per_cpu(resched_irq, cpu) =
- bind_ipi_to_irqhandler(
- RESCHEDULE_VECTOR,
- cpu,
- smp_reschedule_interrupt,
- SA_INTERRUPT,
- resched_name[cpu],
- NULL);
- BUG_ON(per_cpu(resched_irq, cpu) < 0);
+ rc = bind_ipi_to_irqhandler(RESCHEDULE_VECTOR,
+ cpu,
+ smp_reschedule_interrupt,
+ SA_INTERRUPT,
+ resched_name[cpu],
+ NULL);
+ if (rc < 0)
+ goto fail;
+ per_cpu(resched_irq, cpu) = rc;
sprintf(callfunc_name[cpu], "callfunc%d", cpu);
- per_cpu(callfunc_irq, cpu) =
- bind_ipi_to_irqhandler(
- CALL_FUNCTION_VECTOR,
- cpu,
- smp_call_function_interrupt,
- SA_INTERRUPT,
- callfunc_name[cpu],
- NULL);
- BUG_ON(per_cpu(callfunc_irq, cpu) < 0);
-
- if (cpu != 0)
- local_setup_timer(cpu);
+ rc = bind_ipi_to_irqhandler(CALL_FUNCTION_VECTOR,
+ cpu,
+ smp_call_function_interrupt,
+ SA_INTERRUPT,
+ callfunc_name[cpu],
+ NULL);
+ if (rc < 0)
+ goto fail;
+ per_cpu(callfunc_irq, cpu) = rc;
+
+ if ((cpu != 0) && ((rc = local_setup_timer(cpu)) != 0))
+ goto fail;
+
+ return 0;
+
+ fail:
+ if (per_cpu(resched_irq, cpu) >= 0)
+ unbind_from_irqhandler(per_cpu(resched_irq, cpu), NULL);
+ if (per_cpu(callfunc_irq, cpu) >= 0)
+ unbind_from_irqhandler(per_cpu(callfunc_irq, cpu), NULL);
+ return rc;
}
#ifdef CONFIG_HOTPLUG_CPU
@@ -253,7 +266,8 @@ void __init smp_prepare_cpus(unsigned in
set_cpu_sibling_map(0);
- xen_smp_intr_init(0);
+ if (xen_smp_intr_init(0))
+ BUG();
/* Restrict the possible_map according to max_cpus. */
while ((num_possible_cpus() > 1) && (num_possible_cpus() > max_cpus)) {
@@ -419,7 +433,13 @@ int __devinit __cpu_up(unsigned int cpu)
set_cpu_sibling_map(cpu);
wmb();
- xen_smp_intr_init(cpu);
+
+ rc = xen_smp_intr_init(cpu);
+ if (rc) {
+ remove_siblinginfo(cpu);
+ return rc;
+ }
+
cpu_set(cpu, cpu_online_map);
rc = HYPERVISOR_vcpu_op(VCPUOP_up, cpu, NULL);
diff -r a510c94ceaa3 -r 749c399d73df
linux-2.6-xen-sparse/drivers/xen/netback/netback.c
--- a/linux-2.6-xen-sparse/drivers/xen/netback/netback.c Tue Dec 12
09:56:06 2006 -0600
+++ b/linux-2.6-xen-sparse/drivers/xen/netback/netback.c Tue Dec 12
09:58:42 2006 -0600
@@ -183,7 +183,7 @@ static struct sk_buff *netbk_copy_skb(st
BUG_ON(skb_shinfo(skb)->frag_list != NULL);
- nskb = alloc_skb(SKB_MAX_HEAD(0), GFP_ATOMIC);
+ nskb = alloc_skb(SKB_MAX_HEAD(0), GFP_ATOMIC | __GFP_NOWARN);
if (unlikely(!nskb))
goto err;
@@ -1224,7 +1224,8 @@ static void net_tx_action(unsigned long
ret < MAX_SKB_FRAGS) ?
PKT_PROT_LEN : txreq.size;
- skb = alloc_skb(data_len + 16 + NET_IP_ALIGN, GFP_ATOMIC);
+ skb = alloc_skb(data_len + 16 + NET_IP_ALIGN,
+ GFP_ATOMIC | __GFP_NOWARN);
if (unlikely(skb == NULL)) {
DPRINTK("Can't allocate a skb in start_xmit.\n");
netbk_tx_err(netif, &txreq, i);
@@ -1506,13 +1507,12 @@ static int __init netback_init(void)
netif_xenbus_init();
#ifdef NETBE_DEBUG_INTERRUPT
- (void)bind_virq_to_irqhandler(
- VIRQ_DEBUG,
- 0,
- netif_be_dbg,
- SA_SHIRQ,
- "net-be-dbg",
- &netif_be_dbg);
+ (void)bind_virq_to_irqhandler(VIRQ_DEBUG,
+ 0,
+ netif_be_dbg,
+ SA_SHIRQ,
+ "net-be-dbg",
+ &netif_be_dbg);
#endif
return 0;
diff -r a510c94ceaa3 -r 749c399d73df
linux-2.6-xen-sparse/drivers/xen/xenbus/Makefile
--- a/linux-2.6-xen-sparse/drivers/xen/xenbus/Makefile Tue Dec 12 09:56:06
2006 -0600
+++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/Makefile Tue Dec 12 09:58:42
2006 -0600
@@ -1,13 +1,9 @@ obj-y += xenbus.o
-obj-y += xenbus.o
+obj-y += xenbus_client.o xenbus_comms.o xenbus_xs.o xenbus_probe.o
obj-$(CONFIG_XEN_BACKEND) += xenbus_be.o
xenbus_be-objs =
xenbus_be-objs += xenbus_backend_client.o
-xenbus-objs =
-xenbus-objs += xenbus_client.o
-xenbus-objs += xenbus_comms.o
-xenbus-objs += xenbus_xs.o
-xenbus-objs += xenbus_probe.o
-obj-$(CONFIG_XEN_BACKEND) += xenbus_probe_backend.o
+xenbus-$(CONFIG_XEN_BACKEND) += xenbus_probe_backend.o
+obj-y += $(xenbus-y) $(xenbus-m)
obj-$(CONFIG_XEN_XENBUS_DEV) += xenbus_dev.o
diff -r a510c94ceaa3 -r 749c399d73df
linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_client.c
--- a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_client.c Tue Dec 12
09:56:06 2006 -0600
+++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_client.c Tue Dec 12
09:58:42 2006 -0600
@@ -289,6 +289,7 @@ int xenbus_free_evtchn(struct xenbus_dev
return err;
}
+EXPORT_SYMBOL_GPL(xenbus_free_evtchn);
enum xenbus_state xenbus_read_driver_state(const char *path)
diff -r a510c94ceaa3 -r 749c399d73df
linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_comms.c
--- a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_comms.c Tue Dec 12
09:56:06 2006 -0600
+++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_comms.c Tue Dec 12
09:58:42 2006 -0600
@@ -52,7 +52,7 @@ extern int xenstored_ready;
extern int xenstored_ready;
static DECLARE_WORK(probe_work, xenbus_probe, NULL);
-DECLARE_WAIT_QUEUE_HEAD(xb_waitq);
+static DECLARE_WAIT_QUEUE_HEAD(xb_waitq);
static irqreturn_t wake_waiting(int irq, void *unused, struct pt_regs *regs)
{
diff -r a510c94ceaa3 -r 749c399d73df
linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_comms.h
--- a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_comms.h Tue Dec 12
09:56:06 2006 -0600
+++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_comms.h Tue Dec 12
09:58:42 2006 -0600
@@ -38,7 +38,6 @@ int xb_write(const void *data, unsigned
int xb_write(const void *data, unsigned len);
int xb_read(void *data, unsigned len);
int xs_input_avail(void);
-extern wait_queue_head_t xb_waitq;
extern struct xenstore_domain_interface *xen_store_interface;
extern int xen_store_evtchn;
diff -r a510c94ceaa3 -r 749c399d73df
linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.h
--- a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.h Tue Dec 12
09:56:06 2006 -0600
+++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.h Tue Dec 12
09:58:42 2006 -0600
@@ -34,7 +34,7 @@
#ifndef _XENBUS_PROBE_H
#define _XENBUS_PROBE_H
-#ifdef CONFIG_XEN_BACKEND
+#if defined(CONFIG_XEN_BACKEND) || defined(CONFIG_XEN_BACKEND_MODULE)
extern void xenbus_backend_suspend(int (*fn)(struct device *, void *));
extern void xenbus_backend_resume(int (*fn)(struct device *, void *));
extern void xenbus_backend_probe_and_watch(void);
diff -r a510c94ceaa3 -r 749c399d73df
linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/hypercall.h
--- a/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/hypercall.h Tue Dec
12 09:56:06 2006 -0600
+++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/hypercall.h Tue Dec
12 09:58:42 2006 -0600
@@ -395,5 +395,13 @@ HYPERVISOR_xenoprof_op(
return _hypercall2(int, xenoprof_op, op, arg);
}
+static inline int
+HYPERVISOR_kexec_op(
+ unsigned long op, void *args)
+{
+ return _hypercall2(int, kexec_op, op, args);
+}
+
+
#endif /* __HYPERCALL_H__ */
diff -r a510c94ceaa3 -r 749c399d73df
linux-2.6-xen-sparse/include/asm-ia64/hypercall.h
--- a/linux-2.6-xen-sparse/include/asm-ia64/hypercall.h Tue Dec 12 09:56:06
2006 -0600
+++ b/linux-2.6-xen-sparse/include/asm-ia64/hypercall.h Tue Dec 12 09:58:42
2006 -0600
@@ -271,6 +271,12 @@ HYPERVISOR_physdev_op(int cmd, void *arg
}
}
+static inline int
+xencomm_arch_hypercall_xenoprof_op(int op, struct xencomm_handle *arg)
+{
+ return _hypercall2(int, xenoprof_op, op, arg);
+}
+
extern fastcall unsigned int __do_IRQ(unsigned int irq, struct pt_regs *regs);
static inline void exit_idle(void) {}
#define do_IRQ(irq, regs) ({ \
@@ -381,6 +387,28 @@ HYPERVISOR_add_physmap(unsigned long gpf
return ret;
}
+static inline unsigned long
+__HYPERVISOR_add_physmap_with_gmfn(unsigned long gpfn, unsigned long gmfn,
+ unsigned long flags, domid_t domid)
+{
+ return _hypercall5(unsigned long, ia64_dom0vp_op,
+ IA64_DOM0VP_add_physmap_with_gmfn,
+ gpfn, gmfn, flags, domid);
+}
+
+static inline unsigned long
+HYPERVISOR_add_physmap_with_gmfn(unsigned long gpfn, unsigned long gmfn,
+ unsigned long flags, domid_t domid)
+{
+ unsigned long ret = 0;
+ BUG_ON(!is_running_on_xen());//XXX
+ if (is_running_on_xen()) {
+ ret = __HYPERVISOR_add_physmap_with_gmfn(gpfn, gmfn,
+ flags, domid);
+ }
+ return ret;
+}
+
#ifdef CONFIG_XEN_IA64_EXPOSE_P2M
static inline unsigned long
HYPERVISOR_expose_p2m(unsigned long conv_start_gpfn,
@@ -392,6 +420,15 @@ HYPERVISOR_expose_p2m(unsigned long conv
assign_start_gpfn, expose_size, granule_pfn);
}
#endif
+
+static inline int
+xencomm_arch_hypercall_perfmon_op(unsigned long cmd,
+ struct xencomm_handle *arg,
+ unsigned long count)
+{
+ return _hypercall4(int, ia64_dom0vp_op,
+ IA64_DOM0VP_perfmon, cmd, arg, count);
+}
// for balloon driver
#define HYPERVISOR_update_va_mapping(va, new_val, flags) (0)
@@ -406,6 +443,8 @@ HYPERVISOR_expose_p2m(unsigned long conv
#define HYPERVISOR_console_io xencomm_mini_hypercall_console_io
#define HYPERVISOR_hvm_op xencomm_mini_hypercall_hvm_op
#define HYPERVISOR_memory_op xencomm_mini_hypercall_memory_op
+#define HYPERVISOR_xenoprof_op xencomm_mini_hypercall_xenoprof_op
+#define HYPERVISOR_perfmon_op xencomm_mini_hypercall_perfmon_op
#else
#define HYPERVISOR_sched_op xencomm_hypercall_sched_op
#define HYPERVISOR_event_channel_op xencomm_hypercall_event_channel_op
@@ -415,6 +454,8 @@ HYPERVISOR_expose_p2m(unsigned long conv
#define HYPERVISOR_console_io xencomm_hypercall_console_io
#define HYPERVISOR_hvm_op xencomm_hypercall_hvm_op
#define HYPERVISOR_memory_op xencomm_hypercall_memory_op
+#define HYPERVISOR_xenoprof_op xencomm_hypercall_xenoprof_op
+#define HYPERVISOR_perfmon_op xencomm_hypercall_perfmon_op
#endif
#define HYPERVISOR_suspend xencomm_hypercall_suspend
diff -r a510c94ceaa3 -r 749c399d73df linux-2.6-xen-sparse/include/asm-ia64/io.h
--- a/linux-2.6-xen-sparse/include/asm-ia64/io.h Tue Dec 12 09:56:06
2006 -0600
+++ b/linux-2.6-xen-sparse/include/asm-ia64/io.h Tue Dec 12 09:58:42
2006 -0600
@@ -129,6 +129,11 @@ extern int valid_mmap_phys_addr_range (u
(((bvec_to_bus((vec1)) + (vec1)->bv_len) == bvec_to_bus((vec2))) && \
((bvec_to_pseudophys((vec1)) + (vec1)->bv_len) == \
bvec_to_pseudophys((vec2))))
+
+/* We will be supplying our own /dev/mem implementation */
+#define ARCH_HAS_DEV_MEM
+#define ARCH_HAS_DEV_MEM_MMAP_MEM
+int xen_mmap_mem(struct file * file, struct vm_area_struct * vma);
#endif /* CONFIG_XEN */
# endif /* KERNEL */
@@ -458,6 +463,8 @@ ioremap (unsigned long offset, unsigned
ioremap (unsigned long offset, unsigned long size)
{
offset = HYPERVISOR_ioremap(offset, size);
+ if (IS_ERR_VALUE(offset))
+ return (void __iomem*)offset;
return (void __iomem *) (__IA64_UNCACHED_OFFSET | (offset));
}
diff -r a510c94ceaa3 -r 749c399d73df linux-2.6-xen-sparse/include/asm-ia64/irq.h
--- a/linux-2.6-xen-sparse/include/asm-ia64/irq.h Tue Dec 12 09:56:06
2006 -0600
+++ b/linux-2.6-xen-sparse/include/asm-ia64/irq.h Tue Dec 12 09:58:42
2006 -0600
@@ -42,7 +42,9 @@
#define RESCHEDULE_VECTOR 0
#define IPI_VECTOR 1
-#define NR_IPIS 2
+#define CMCP_VECTOR 2
+#define CPEP_VECTOR 3
+#define NR_IPIS 4
#endif /* CONFIG_XEN */
/*
diff -r a510c94ceaa3 -r 749c399d73df
linux-2.6-xen-sparse/include/asm-ia64/privop.h
--- a/linux-2.6-xen-sparse/include/asm-ia64/privop.h Tue Dec 12 09:56:06
2006 -0600
+++ b/linux-2.6-xen-sparse/include/asm-ia64/privop.h Tue Dec 12 09:58:42
2006 -0600
@@ -49,6 +49,7 @@
#define ia64_leave_kernel __ia64_leave_kernel
#define ia64_leave_syscall __ia64_leave_syscall
#define ia64_trace_syscall __ia64_trace_syscall
+#define ia64_ret_from_clone __ia64_ret_from_clone
#define ia64_switch_to __ia64_switch_to
#define ia64_pal_call_static __ia64_pal_call_static
diff -r a510c94ceaa3 -r 749c399d73df
linux-2.6-xen-sparse/include/asm-ia64/xen/privop.h
--- a/linux-2.6-xen-sparse/include/asm-ia64/xen/privop.h Tue Dec 12
09:56:06 2006 -0600
+++ b/linux-2.6-xen-sparse/include/asm-ia64/xen/privop.h Tue Dec 12
09:58:42 2006 -0600
@@ -295,6 +295,7 @@ extern void xen_ptcga(unsigned long addr
#define ia64_leave_kernel xen_leave_kernel
#define ia64_leave_syscall xen_leave_syscall
#define ia64_trace_syscall xen_trace_syscall
+#define ia64_ret_from_clone xen_ret_from_clone
#define ia64_switch_to xen_switch_to
#define ia64_pal_call_static xen_pal_call_static
diff -r a510c94ceaa3 -r 749c399d73df
linux-2.6-xen-sparse/include/asm-ia64/xen/xcom_hcall.h
--- a/linux-2.6-xen-sparse/include/asm-ia64/xen/xcom_hcall.h Tue Dec 12
09:56:06 2006 -0600
+++ b/linux-2.6-xen-sparse/include/asm-ia64/xen/xcom_hcall.h Tue Dec 12
09:58:42 2006 -0600
@@ -46,6 +46,11 @@ extern unsigned long xencomm_hypercall_h
extern int xencomm_hypercall_suspend(unsigned long srec);
+extern int xencomm_hypercall_xenoprof_op(int op, void *arg);
+
+extern int xencomm_hypercall_perfmon_op(unsigned long cmd, void* arg,
+ unsigned long count);
+
/* Using mini xencomm. */
extern int xencomm_mini_hypercall_console_io(int cmd, int count, char *str);
@@ -68,6 +73,11 @@ extern int xencomm_mini_hypercall_memory
extern unsigned long xencomm_mini_hypercall_hvm_op(int cmd, void *arg);
+extern int xencomm_mini_hypercall_xenoprof_op(int op, void *arg);
+
+extern int xencomm_mini_hypercall_perfmon_op(unsigned long cmd, void* arg,
+ unsigned long count);
+
/* For privcmd. Locally declare argument type to avoid include storm.
Type coherency will be checked within privcmd.c */
struct privcmd_hypercall;
diff -r a510c94ceaa3 -r 749c399d73df
linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/hypercall.h
--- a/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/hypercall.h Tue Dec
12 09:56:06 2006 -0600
+++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/hypercall.h Tue Dec
12 09:58:42 2006 -0600
@@ -396,4 +396,11 @@ HYPERVISOR_xenoprof_op(
return _hypercall2(int, xenoprof_op, op, arg);
}
+static inline int
+HYPERVISOR_kexec_op(
+ unsigned long op, void *args)
+{
+ return _hypercall2(int, kexec_op, op, args);
+}
+
#endif /* __HYPERCALL_H__ */
diff -r a510c94ceaa3 -r 749c399d73df
linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/ptrace.h
--- a/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/ptrace.h Tue Dec
12 09:56:06 2006 -0600
+++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/ptrace.h Tue Dec
12 09:58:42 2006 -0600
@@ -90,6 +90,8 @@ extern unsigned long profile_pc(struct p
#define profile_pc(regs) instruction_pointer(regs)
#endif
+#include <linux/compiler.h>
+
void signal_fault(struct pt_regs *regs, void __user *frame, char *where);
struct task_struct;
diff -r a510c94ceaa3 -r 749c399d73df linux-2.6-xen-sparse/include/xen/xencons.h
--- a/linux-2.6-xen-sparse/include/xen/xencons.h Tue Dec 12 09:56:06
2006 -0600
+++ b/linux-2.6-xen-sparse/include/xen/xencons.h Tue Dec 12 09:58:42
2006 -0600
@@ -14,4 +14,6 @@ int xencons_ring_init(void);
int xencons_ring_init(void);
int xencons_ring_send(const char *data, unsigned len);
+void xencons_early_setup(void);
+
#endif /* __ASM_XENCONS_H__ */
diff -r a510c94ceaa3 -r 749c399d73df linux-2.6-xen-sparse/mm/memory.c
--- a/linux-2.6-xen-sparse/mm/memory.c Tue Dec 12 09:56:06 2006 -0600
+++ b/linux-2.6-xen-sparse/mm/memory.c Tue Dec 12 09:58:42 2006 -0600
@@ -882,6 +882,7 @@ unsigned long zap_page_range(struct vm_a
tlb_finish_mmu(tlb, address, end);
return end;
}
+EXPORT_SYMBOL(zap_page_range);
/*
* Do a quick page-table lookup for a single page.
diff -r a510c94ceaa3 -r 749c399d73df tools/Makefile
--- a/tools/Makefile Tue Dec 12 09:56:06 2006 -0600
+++ b/tools/Makefile Tue Dec 12 09:58:42 2006 -0600
@@ -19,6 +19,8 @@ SUBDIRS-y += libaio
SUBDIRS-y += libaio
SUBDIRS-y += blktap
SUBDIRS-y += libfsimage
+SUBDIRS-$(XENFB_TOOLS) += xenfb
+SUBDIRS-$(LIBXENAPI_BINDINGS) += libxen
# These don't cross-compile
ifeq ($(XEN_COMPILE_ARCH),$(XEN_TARGET_ARCH))
diff -r a510c94ceaa3 -r 749c399d73df tools/blktap/drivers/block-aio.c
--- a/tools/blktap/drivers/block-aio.c Tue Dec 12 09:56:06 2006 -0600
+++ b/tools/blktap/drivers/block-aio.c Tue Dec 12 09:58:42 2006 -0600
@@ -311,12 +311,8 @@ int tdaio_do_callbacks(struct td_state *
struct pending_aio *pio;
pio = &prv->pending_aio[(long)io->data];
-
- if (ep->res != io->u.c.nbytes) {
- /* TODO: handle this case better. */
- DPRINTF("AIO did less than I asked it to. \n");
- }
- rsp += pio->cb(s, ep->res2, pio->id, pio->private);
+ rsp += pio->cb(s, ep->res == io->u.c.nbytes ? 0 : 1,
+ pio->id, pio->private);
prv->iocb_free[prv->iocb_free_count++] = io;
}
diff -r a510c94ceaa3 -r 749c399d73df tools/blktap/drivers/block-qcow.c
--- a/tools/blktap/drivers/block-qcow.c Tue Dec 12 09:56:06 2006 -0600
+++ b/tools/blktap/drivers/block-qcow.c Tue Dec 12 09:58:42 2006 -0600
@@ -1145,13 +1145,6 @@ int tdqcow_do_callbacks(struct td_state
pio = &prv->pending_aio[(long)io->data];
- if (ep->res != io->u.c.nbytes) {
- /* TODO: handle this case better. */
- ptr = (int *)&ep->res;
- DPRINTF("AIO did less than I asked it to "
- "[%lu,%lu,%d]\n",
- ep->res, io->u.c.nbytes, *ptr);
- }
aio_unlock(prv, pio->sector);
if (pio->id >= 0) {
if (prv->crypt_method)
@@ -1162,7 +1155,7 @@ int tdqcow_do_callbacks(struct td_state
&prv->aes_decrypt_key);
prv->nr_reqs[pio->qcow_idx]--;
if (prv->nr_reqs[pio->qcow_idx] == 0)
- rsp += pio->cb(s, ep->res2, pio->id,
+ rsp += pio->cb(s, ep->res == io->u.c.nbytes ? 0
: 1, pio->id,
pio->private);
} else if (pio->id == -2) free(pio->buf);
diff -r a510c94ceaa3 -r 749c399d73df tools/blktap/drivers/tapdisk.c
--- a/tools/blktap/drivers/tapdisk.c Tue Dec 12 09:56:06 2006 -0600
+++ b/tools/blktap/drivers/tapdisk.c Tue Dec 12 09:58:42 2006 -0600
@@ -424,8 +424,7 @@ int send_responses(struct td_state *s, i
}
if (res != 0) {
- DPRINTF("*** request error %d! \n", res);
- return 0;
+ blkif->pending_list[idx].status = BLKIF_RSP_ERROR;
}
blkif->pending_list[idx].count--;
diff -r a510c94ceaa3 -r 749c399d73df tools/check/Makefile
--- a/tools/check/Makefile Tue Dec 12 09:56:06 2006 -0600
+++ b/tools/check/Makefile Tue Dec 12 09:58:42 2006 -0600
@@ -1,3 +1,5 @@
+XEN_ROOT = ../..
+include $(XEN_ROOT)/tools/Rules.mk
.PHONY: all
all: build
@@ -5,7 +7,7 @@ all: build
# Check this machine is OK for building on.
.PHONY: build
build:
- ./chk build
+ XENFB_TOOLS=$(XENFB_TOOLS) ./chk build
# Check this machine is OK for installing on.
# DO NOT use this check from 'make install' in the parent
@@ -13,7 +15,7 @@ build:
# copy rather than actually installing.
.PHONY: install
install:
- ./chk install
+ XENFB_TOOLS=$(XENFB_TOOLS) ./chk install
.PHONY: clean
clean:
diff -r a510c94ceaa3 -r 749c399d73df tools/examples/init.d/xend
--- a/tools/examples/init.d/xend Tue Dec 12 09:56:06 2006 -0600
+++ b/tools/examples/init.d/xend Tue Dec 12 09:58:42 2006 -0600
@@ -36,7 +36,10 @@ case "$1" in
status)
xend status
;;
- restart|reload|force-reload)
+ reload)
+ xend reload
+ ;;
+ restart|force-reload)
xend restart
await_daemons_up
;;
diff -r a510c94ceaa3 -r 749c399d73df tools/examples/init.d/xendomains
--- a/tools/examples/init.d/xendomains Tue Dec 12 09:56:06 2006 -0600
+++ b/tools/examples/init.d/xendomains Tue Dec 12 09:58:42 2006 -0600
@@ -204,12 +204,14 @@ start()
return;
fi
+ saved_domains=" "
if [ "$XENDOMAINS_RESTORE" = "true" ] &&
contains_something "$XENDOMAINS_SAVE"
then
mkdir -p $(dirname "$LOCKFILE")
touch $LOCKFILE
echo -n "Restoring Xen domains:"
+ saved_domains=`ls $XENDOMAINS_SAVE`
for dom in $XENDOMAINS_SAVE/*; do
echo -n " ${dom##*/}"
xm restore $dom
@@ -234,9 +236,14 @@ start()
# Create all domains with config files in XENDOMAINS_AUTO.
# TODO: We should record which domain name belongs
# so we have the option to selectively shut down / migrate later
+ # If a domain statefile from $XENDOMAINS_SAVE matches a domain name
+ # in $XENDOMAINS_AUTO, do not try to start that domain; if it didn't
+ # restore correctly it requires administrative attention.
for dom in $XENDOMAINS_AUTO/*; do
echo -n " ${dom##*/}"
- if is_running $dom; then
+ shortdom=$(echo $dom | sed -n 's/^.*\/\(.*\)$/\1/p')
+ echo $saved_domains | grep -w $shortdom > /dev/null
+ if [ $? -eq 0 ] || is_running $dom; then
echo -n "(skip)"
else
xm create --quiet --defconfig $dom
diff -r a510c94ceaa3 -r 749c399d73df tools/examples/network-route
--- a/tools/examples/network-route Tue Dec 12 09:56:06 2006 -0600
+++ b/tools/examples/network-route Tue Dec 12 09:58:42 2006 -0600
@@ -16,4 +16,12 @@
#
#============================================================================
+dir=$(dirname "$0")
+. "$dir/xen-script-common.sh"
+
+evalVariables "$@"
+
+netdev=${netdev:-eth${vifnum}}
+
echo 1 >/proc/sys/net/ipv4/ip_forward
+echo 1 >/proc/sys/net/ipv4/conf/${netdev}/proxy_arp
diff -r a510c94ceaa3 -r 749c399d73df tools/firmware/hvmloader/Makefile
--- a/tools/firmware/hvmloader/Makefile Tue Dec 12 09:56:06 2006 -0600
+++ b/tools/firmware/hvmloader/Makefile Tue Dec 12 09:58:42 2006 -0600
@@ -18,18 +18,13 @@
# Place - Suite 330, Boston, MA 02111-1307 USA.
#
-# External CFLAGS can do more harm than good.
-CFLAGS :=
-
override XEN_TARGET_ARCH = x86_32
XEN_ROOT = ../../..
-include $(XEN_ROOT)/Config.mk
+CFLAGS := -I$(XEN_ROOT)/tools/libxc -I.
+include $(XEN_ROOT)/tools/Rules.mk
# The HVM loader is started in 32-bit mode at the address below:
LOADADDR = 0x100000
-
-DEFINES =-DDEBUG
-XENINC =-I$(XEN_ROOT)/tools/libxc
# Disable PIE/SSP if GCC supports them. They can break us.
CFLAGS += $(call cc-option,$(CC),-nopie,)
@@ -37,10 +32,10 @@ CFLAGS += $(call cc-option,$(CC),-fno-s
CFLAGS += $(call cc-option,$(CC),-fno-stack-protector-all,)
OBJCOPY = objcopy
-CFLAGS += $(DEFINES) -I. $(XENINC) -fno-builtin -O2 -msoft-float
+CFLAGS += -fno-builtin -O2 -msoft-float
LDFLAGS = -nostdlib -Wl,-N -Wl,-Ttext -Wl,$(LOADADDR)
-SRCS = hvmloader.c mp_tables.c util.c smbios.c acpi_utils.c
+SRCS = hvmloader.c mp_tables.c util.c smbios.c
OBJS = $(patsubst %.c,%.o,$(SRCS))
.PHONY: all
@@ -65,5 +60,5 @@ roms.h: ../rombios/BIOS-bochs-latest ../
.PHONY: clean
clean:
rm -f roms.h acpi.h
- rm -f hvmloader hvmloader.tmp hvmloader.o $(OBJS)
+ rm -f hvmloader hvmloader.tmp *.o
$(MAKE) -C acpi clean
diff -r a510c94ceaa3 -r 749c399d73df tools/firmware/hvmloader/acpi/Makefile
--- a/tools/firmware/hvmloader/acpi/Makefile Tue Dec 12 09:56:06 2006 -0600
+++ b/tools/firmware/hvmloader/acpi/Makefile Tue Dec 12 09:58:42 2006 -0600
@@ -27,15 +27,28 @@ IASL_VER = acpica-unix-20050513
IASL_VER = acpica-unix-20050513
IASL_URL =
http://developer.intel.com/technology/iapc/acpi/downloads/$(IASL_VER).tar.gz
+# Disable PIE/SSP if GCC supports them. They can break us.
+CFLAGS += $(call cc-option,$(CC),-nopie,)
+CFLAGS += $(call cc-option,$(CC),-fno-stack-protector,)
+CFLAGS += $(call cc-option,$(CC),-fno-stack-protector-all,)
+
+CFLAGS += -fno-builtin -O2 -msoft-float
+
vpath iasl $(PATH)
all: acpi.a
+
+ssdt_tpm.h: ssdt_tpm.asl
+ $(MAKE) iasl
+ iasl -tc ssdt_tpm.asl
+ mv ssdt_tpm.hex ssdt_tpm.h
+ rm -f *.aml
dsdt.c: dsdt.asl
$(MAKE) iasl
iasl -tc dsdt.asl
mv dsdt.hex dsdt.c
echo "int DsdtLen=sizeof(AmlCode);" >> dsdt.c
- rm *.aml
+ rm -f *.aml
iasl:
@echo
diff -r a510c94ceaa3 -r 749c399d73df tools/firmware/hvmloader/acpi/acpi2_0.h
--- a/tools/firmware/hvmloader/acpi/acpi2_0.h Tue Dec 12 09:56:06 2006 -0600
+++ b/tools/firmware/hvmloader/acpi/acpi2_0.h Tue Dec 12 09:58:42 2006 -0600
@@ -119,7 +119,7 @@ struct acpi_20_rsdp {
*/
struct acpi_20_rsdt {
struct acpi_header header;
- uint32_t entry[ACPI_MAX_NUM_TABLES];
+ uint32_t entry[1];
};
#define ACPI_2_0_RSDT_REVISION 0x01
@@ -128,20 +128,19 @@ struct acpi_20_rsdt {
*/
struct acpi_20_xsdt {
struct acpi_header header;
- uint64_t entry[ACPI_MAX_NUM_TABLES];
+ uint64_t entry[1];
};
#define ACPI_2_0_XSDT_REVISION 0x01
/*
* TCG Hardware Interface Table (TCPA)
*/
-
-typedef struct _ACPI_2_0_TCPA_CLIENT {
- struct acpi_header header;
- uint16_t PlatformClass;
- uint32_t LAML;
- uint64_t LASA;
-} ACPI_2_0_TCPA_CLIENT;
+struct acpi_20_tcpa {
+ struct acpi_header header;
+ uint16_t platform_class;
+ uint32_t laml;
+ uint64_t lasa;
+};
#define ACPI_2_0_TCPA_REVISION 0x02
#define ACPI_2_0_TCPA_LAML_SIZE (64*1024)
diff -r a510c94ceaa3 -r 749c399d73df tools/firmware/hvmloader/acpi/build.c
--- a/tools/firmware/hvmloader/acpi/build.c Tue Dec 12 09:56:06 2006 -0600
+++ b/tools/firmware/hvmloader/acpi/build.c Tue Dec 12 09:58:42 2006 -0600
@@ -17,8 +17,12 @@
*/
#include "acpi2_0.h"
+#include "ssdt_tpm.h"
#include "../config.h"
#include "../util.h"
+#include <xen/hvm/e820.h>
+
+#define align16(sz) (((sz) + 15) & ~15)
extern struct acpi_20_rsdp Rsdp;
extern struct acpi_20_rsdt Rsdt;
@@ -103,39 +107,88 @@ int construct_madt(struct acpi_20_madt *
madt->header.length = offset;
set_checksum(madt, offsetof(struct acpi_header, checksum), offset);
- return offset;
-}
-
-/*
- * Copy all the ACPI table to buffer.
- * Buffer layout: FACS, DSDT, FADT, MADT, XSDT, RSDT, RSDP.
- */
+ return align16(offset);
+}
+
+int construct_secondary_tables(uint8_t *buf, unsigned long *table_ptrs)
+{
+ int offset = 0, nr_tables = 0;
+ struct acpi_20_madt *madt;
+ struct acpi_20_tcpa *tcpa;
+ static const uint16_t tis_signature[] = {0x0001, 0x0001, 0x0001};
+ uint16_t *tis_hdr;
+
+ /* MADT. */
+ if ( (get_vcpu_nr() > 1) || get_apic_mode() )
+ {
+ madt = (struct acpi_20_madt *)&buf[offset];
+ offset += construct_madt(madt);
+ table_ptrs[nr_tables++] = (unsigned long)madt;
+ }
+
+ /* TPM TCPA and SSDT. */
+ tis_hdr = (uint16_t *)0xFED40F00;
+ if ( (tis_hdr[0] == tis_signature[0]) &&
+ (tis_hdr[1] == tis_signature[1]) &&
+ (tis_hdr[2] == tis_signature[2]) )
+ {
+ memcpy(&buf[offset], AmlCode_TPM, sizeof(AmlCode_TPM));
+ table_ptrs[nr_tables++] = (unsigned long)&buf[offset];
+ offset += align16(sizeof(AmlCode_TPM));
+
+ tcpa = (struct acpi_20_tcpa *)&buf[offset];
+ memset(tcpa, 0, sizeof(*tcpa));
+ offset += align16(sizeof(*tcpa));
+ table_ptrs[nr_tables++] = (unsigned long)tcpa;
+
+ tcpa->header.signature = ACPI_2_0_TCPA_SIGNATURE;
+ tcpa->header.length = sizeof(*tcpa);
+ tcpa->header.revision = ACPI_2_0_TCPA_REVISION;
+ strncpy(tcpa->header.oem_id, "IBM ", 6);
+ tcpa->header.oem_table_id = ASCII64(' ', ' ', ' ', ' ',
+ ' ', 'x', 'e', 'n');
+ tcpa->header.oem_revision = 1;
+ tcpa->header.creator_id = ASCII32('I', 'B', 'M', ' ');
+ tcpa->header.creator_revision = 1;
+ tcpa->lasa = e820_malloc(
+ ACPI_2_0_TCPA_LAML_SIZE, E820_RESERVED, (uint32_t)~0);
+ if ( tcpa->lasa )
+ {
+ tcpa->laml = ACPI_2_0_TCPA_LAML_SIZE;
+ memset((char *)(unsigned long)tcpa->lasa, 0, tcpa->laml);
+ set_checksum(tcpa,
+ offsetof(struct acpi_header, checksum),
+ tcpa->header.length);
+ }
+ }
+
+ table_ptrs[nr_tables] = 0;
+ return align16(offset);
+}
+
+/* Copy all the ACPI table to buffer. */
int acpi_build_tables(uint8_t *buf)
{
struct acpi_20_rsdp *rsdp;
struct acpi_20_rsdt *rsdt;
struct acpi_20_xsdt *xsdt;
struct acpi_20_fadt *fadt;
- struct acpi_20_madt *madt = 0;
struct acpi_20_facs *facs;
unsigned char *dsdt;
- int offset = 0, requires_madt;
-
- requires_madt = ((get_vcpu_nr() > 1) || get_apic_mode());
-
-#define inc_offset(sz) (offset = (offset + (sz) + 15) & ~15)
+ unsigned long secondary_tables[16];
+ int offset = 0, i;
facs = (struct acpi_20_facs *)&buf[offset];
memcpy(facs, &Facs, sizeof(struct acpi_20_facs));
- inc_offset(sizeof(struct acpi_20_facs));
+ offset += align16(sizeof(struct acpi_20_facs));
dsdt = (unsigned char *)&buf[offset];
memcpy(dsdt, &AmlCode, DsdtLen);
- inc_offset(DsdtLen);
+ offset += align16(DsdtLen);
fadt = (struct acpi_20_fadt *)&buf[offset];
memcpy(fadt, &Fadt, sizeof(struct acpi_20_fadt));
- inc_offset(sizeof(struct acpi_20_fadt));
+ offset += align16(sizeof(struct acpi_20_fadt));
fadt->dsdt = (unsigned long)dsdt;
fadt->x_dsdt = (unsigned long)dsdt;
fadt->firmware_ctrl = (unsigned long)facs;
@@ -144,43 +197,33 @@ int acpi_build_tables(uint8_t *buf)
offsetof(struct acpi_header, checksum),
sizeof(struct acpi_20_fadt));
- if ( requires_madt )
- {
- madt = (struct acpi_20_madt *)&buf[offset];
- inc_offset(construct_madt(madt));
- }
+ offset += construct_secondary_tables(&buf[offset], secondary_tables);
xsdt = (struct acpi_20_xsdt *)&buf[offset];
- memcpy(xsdt, &Xsdt, sizeof(struct acpi_20_xsdt));
- inc_offset(sizeof(struct acpi_20_xsdt));
+ memcpy(xsdt, &Xsdt, sizeof(struct acpi_header));
xsdt->entry[0] = (unsigned long)fadt;
- xsdt->header.length = sizeof(struct acpi_header) + sizeof(uint64_t);
- if ( requires_madt )
- {
- xsdt->entry[1] = (unsigned long)madt;
- xsdt->header.length += sizeof(uint64_t);
- }
+ for ( i = 0; secondary_tables[i]; i++ )
+ xsdt->entry[i+1] = secondary_tables[i];
+ xsdt->header.length = sizeof(struct acpi_header) + (i+1)*sizeof(uint64_t);
+ offset += align16(xsdt->header.length);
set_checksum(xsdt,
offsetof(struct acpi_header, checksum),
xsdt->header.length);
rsdt = (struct acpi_20_rsdt *)&buf[offset];
- memcpy(rsdt, &Rsdt, sizeof(struct acpi_20_rsdt));
- inc_offset(sizeof(struct acpi_20_rsdt));
+ memcpy(rsdt, &Rsdt, sizeof(struct acpi_header));
rsdt->entry[0] = (unsigned long)fadt;
- rsdt->header.length = sizeof(struct acpi_header) + sizeof(uint32_t);
- if ( requires_madt )
- {
- rsdt->entry[1] = (unsigned long)madt;
- rsdt->header.length += sizeof(uint32_t);
- }
+ for ( i = 0; secondary_tables[i]; i++ )
+ rsdt->entry[i+1] = secondary_tables[i];
+ rsdt->header.length = sizeof(struct acpi_header) + (i+1)*sizeof(uint32_t);
+ offset += align16(rsdt->header.length);
set_checksum(rsdt,
offsetof(struct acpi_header, checksum),
rsdt->header.length);
rsdp = (struct acpi_20_rsdp *)&buf[offset];
memcpy(rsdp, &Rsdp, sizeof(struct acpi_20_rsdp));
- inc_offset(sizeof(struct acpi_20_rsdp));
+ offset += align16(sizeof(struct acpi_20_rsdp));
rsdp->rsdt_address = (unsigned long)rsdt;
rsdp->xsdt_address = (unsigned long)xsdt;
set_checksum(rsdp,
@@ -189,8 +232,6 @@ int acpi_build_tables(uint8_t *buf)
set_checksum(rsdp,
offsetof(struct acpi_20_rsdp, extended_checksum),
sizeof(struct acpi_20_rsdp));
-
-#undef inc_offset
return offset;
}
diff -r a510c94ceaa3 -r 749c399d73df tools/firmware/hvmloader/hvmloader.c
--- a/tools/firmware/hvmloader/hvmloader.c Tue Dec 12 09:56:06 2006 -0600
+++ b/tools/firmware/hvmloader/hvmloader.c Tue Dec 12 09:58:42 2006 -0600
@@ -23,7 +23,6 @@
#include "acpi/acpi2_0.h" /* for ACPI_PHYSICAL_ADDRESS */
#include "hypercall.h"
#include "util.h"
-#include "acpi_utils.h"
#include "smbios.h"
#include "config.h"
#include "apic_regs.h"
@@ -283,7 +282,6 @@ int main(void)
int main(void)
{
int acpi_sz;
- uint8_t *freemem;
printf("HVM Loader\n");
@@ -318,12 +316,7 @@ int main(void)
{
printf("Loading ACPI ...\n");
acpi_sz = acpi_build_tables((uint8_t *)ACPI_PHYSICAL_ADDRESS);
- freemem = (uint8_t *)ACPI_PHYSICAL_ADDRESS + acpi_sz;
- ASSERT(freemem <= (uint8_t *)0xF0000);
- acpi_update((unsigned char *)ACPI_PHYSICAL_ADDRESS,
- freemem - (uint8_t *)ACPI_PHYSICAL_ADDRESS,
- (unsigned char *)0xF0000,
- &freemem);
+ ASSERT((ACPI_PHYSICAL_ADDRESS + acpi_sz) <= 0xF0000);
}
if ( check_amd() )
diff -r a510c94ceaa3 -r 749c399d73df tools/firmware/hvmloader/mp_tables.c
--- a/tools/firmware/hvmloader/mp_tables.c Tue Dec 12 09:56:06 2006 -0600
+++ b/tools/firmware/hvmloader/mp_tables.c Tue Dec 12 09:58:42 2006 -0600
@@ -28,7 +28,6 @@
* Place - Suite 330, Boston, MA 02111-1307 USA.
*/
-#include <acpi_utils.h>
#include "config.h"
/* FIXME find a header that already has types defined!!! */
diff -r a510c94ceaa3 -r 749c399d73df tools/firmware/hvmloader/util.h
--- a/tools/firmware/hvmloader/util.h Tue Dec 12 09:56:06 2006 -0600
+++ b/tools/firmware/hvmloader/util.h Tue Dec 12 09:58:42 2006 -0600
@@ -5,6 +5,9 @@
#undef offsetof
#define offsetof(t, m) ((unsigned long)&((t *)0)->m)
+
+#undef NULL
+#define NULL ((void*)0)
extern void __assert_failed(char *assertion, char *file, int line)
__attribute__((noreturn));
diff -r a510c94ceaa3 -r 749c399d73df tools/firmware/vmxassist/head.S
--- a/tools/firmware/vmxassist/head.S Tue Dec 12 09:56:06 2006 -0600
+++ b/tools/firmware/vmxassist/head.S Tue Dec 12 09:58:42 2006 -0600
@@ -130,7 +130,7 @@ _start:
clts
/* setup my own stack */
- movl $stack_top - 4*4, %esp
+ movl $stack_top, %esp
movl %esp, %ebp
/* go ... */
diff -r a510c94ceaa3 -r 749c399d73df tools/firmware/vmxassist/setup.c
--- a/tools/firmware/vmxassist/setup.c Tue Dec 12 09:56:06 2006 -0600
+++ b/tools/firmware/vmxassist/setup.c Tue Dec 12 09:58:42 2006 -0600
@@ -66,7 +66,7 @@ unsigned long memory_size;
unsigned long memory_size;
int initialize_real_mode;
-extern char stack[], stack_top[];
+extern char stack_top[];
extern unsigned trap_handlers[];
void
@@ -125,7 +125,7 @@ setup_gdt(void)
/* setup task state segment */
memset(&tss, 0, sizeof(tss));
tss.ss0 = DATA_SELECTOR;
- tss.esp0 = (unsigned) stack_top - 4*4;
+ tss.esp0 = (unsigned) stack_top;
tss.iomap_base = offsetof(struct tss, iomap);
/* initialize gdt's tss selector */
@@ -201,7 +201,7 @@ enter_real_mode(struct regs *regs)
enter_real_mode(struct regs *regs)
{
/* mask off TSS busy bit */
- gdt[TSS_SELECTOR / sizeof(gdt[0])] &= ~0x0000020000000000ULL;
+ gdt[TSS_SELECTOR / sizeof(gdt[0])] &= ~0x0000020000000000ULL;
/* start 8086 emulation of BIOS */
if (initialize_real_mode) {
@@ -219,8 +219,10 @@ enter_real_mode(struct regs *regs)
regs->cs = booting_vector << 8; /* AP entry point */
regs->eip = 0;
}
- regs->uesp = 0;
- regs->uss = 0;
+
+ regs->uesp = regs->uss = 0;
+ regs->eax = regs->ecx = regs->edx = regs->ebx = 0;
+ regs->esp = regs->ebp = regs->esi = regs->edi = 0;
/* intercept accesses to the PIC */
setiomap(PIC_MASTER+PIC_CMD);
@@ -236,14 +238,12 @@ enter_real_mode(struct regs *regs)
/* this should get us into 16-bit mode */
return;
- } else {
- /* go from protected to real mode */
- regs->eflags |= EFLAGS_VM;
-
- set_mode(regs, VM86_PROTECTED_TO_REAL);
-
- emulate(regs);
}
+
+ /* go from protected to real mode */
+ regs->eflags |= EFLAGS_VM;
+ set_mode(regs, VM86_PROTECTED_TO_REAL);
+ emulate(regs);
}
/*
@@ -258,7 +258,7 @@ setup_ctx(void)
memset(c, 0, sizeof(*c));
c->eip = (unsigned long) switch_to_real_mode;
- c->esp = (unsigned) stack_top - 4*4;
+ c->esp = (unsigned) stack_top;
c->eflags = 0x2; /* no interrupts, please */
/*
diff -r a510c94ceaa3 -r 749c399d73df tools/firmware/vmxassist/trap.S
--- a/tools/firmware/vmxassist/trap.S Tue Dec 12 09:56:06 2006 -0600
+++ b/tools/firmware/vmxassist/trap.S Tue Dec 12 09:58:42 2006 -0600
@@ -100,10 +100,6 @@ trap_handlers:
.code32
.align 16
common_trap: /* common trap handler */
- pushl %gs
- pushl %fs
- pushl %ds
- pushl %es
pushal
movl $(DATA_SELECTOR), %eax /* make sure these are sane */
@@ -114,17 +110,13 @@ common_trap: /* common trap
handler *
movl %esp, %ebp
pushl %ebp
- pushl 52(%ebp)
- pushl 48(%ebp)
+ pushl 36(%ebp)
+ pushl 32(%ebp)
call trap /* trap(trapno, errno, regs) */
addl $12, %esp
trap_return:
popal
- popl %es
- popl %ds
- popl %fs
- popl %gs
addl $8, %esp /* skip trapno, errno */
iret
/* NOT REACHED */
@@ -152,10 +144,6 @@ switch_to_real_mode:
pushl oldctx+VMX_ASSIST_CTX_EIP
pushl $-1 /* trapno, errno */
pushl $-1
- pushl %gs
- pushl %fs
- pushl %ds
- pushl %es
pushal
movl %esp, %ebp
diff -r a510c94ceaa3 -r 749c399d73df tools/firmware/vmxassist/util.c
--- a/tools/firmware/vmxassist/util.c Tue Dec 12 09:56:06 2006 -0600
+++ b/tools/firmware/vmxassist/util.c Tue Dec 12 09:58:42 2006 -0600
@@ -62,17 +62,15 @@ dump_regs(struct regs *regs)
regs->eax, regs->ecx, regs->edx, regs->ebx);
printf("esp %8x ebp %8x esi %8x edi %8x\n",
regs->esp, regs->ebp, regs->esi, regs->edi);
- printf("es %8x ds %8x fs %8x gs %8x\n",
- regs->es, regs->ds, regs->fs, regs->gs);
printf("trapno %8x errno %8x\n", regs->trapno, regs->errno);
printf("eip %8x cs %8x eflags %8x\n",
regs->eip, regs->cs, regs->eflags);
- printf("uesp %8x uss %8x \n",
+ printf("uesp %8x uss %8x\n",
regs->uesp, regs->uss);
printf("ves %8x vds %8x vfs %8x vgs %8x\n",
regs->ves, regs->vds, regs->vfs, regs->vgs);
- printf("cr0 %8lx cr2 %8x cr3 %8lx cr4 %8lx\n",
+ printf("cr0 %8lx cr2 %8x cr3 %8lx cr4 %8lx\n\n",
(long)oldctx.cr0, get_cr2(),
(long)oldctx.cr3, (long)oldctx.cr4);
}
diff -r a510c94ceaa3 -r 749c399d73df tools/firmware/vmxassist/vm86.c
--- a/tools/firmware/vmxassist/vm86.c Tue Dec 12 09:56:06 2006 -0600
+++ b/tools/firmware/vmxassist/vm86.c Tue Dec 12 09:58:42 2006 -0600
@@ -1,6 +1,6 @@
/*
* vm86.c: A vm86 emulator. The main purpose of this emulator is to do as
- * little work as possible.
+ * little work as possible.
*
* Leendert van Doorn, leendert@xxxxxxxxxxxxxx
* Copyright (c) 2005-2006, International Business Machines Corporation.
@@ -52,8 +52,8 @@ static char *rnames[] = { "ax", "cx", "d
static char *rnames[] = { "ax", "cx", "dx", "bx", "sp", "bp", "si", "di" };
#endif /* DEBUG */
-#define PDE_PS (1 << 7)
-#define PT_ENTRY_PRESENT 0x1
+#define PDE_PS (1 << 7)
+#define PT_ENTRY_PRESENT 0x1
/* We only support access to <=4G physical memory due to 1:1 mapping */
static uint64_t
@@ -136,7 +136,7 @@ address(struct regs *regs, unsigned seg,
}
if (mode == VM86_REAL || seg > oldctx.gdtr_limit ||
- (mode == VM86_REAL_TO_PROTECTED && regs->cs == seg))
+ (mode == VM86_REAL_TO_PROTECTED && regs->cs == seg))
return ((seg & 0xFFFF) << 4) + off;
gdt_phys_base = guest_linear_to_phys(oldctx.gdtr_base);
@@ -153,13 +153,13 @@ address(struct regs *regs, unsigned seg,
seg_limit = (entry_high & 0xF0000) | (entry_low & 0xFFFF);
if (entry_high & 0x8000 &&
- ((entry_high & 0x800000 && off >> 12 <= seg_limit) ||
- (!(entry_high & 0x800000) && off <= seg_limit)))
+ ((entry_high & 0x800000 && off >> 12 <= seg_limit) ||
+ (!(entry_high & 0x800000) && off <= seg_limit)))
return seg_base + off;
panic("should never reach here in function address():\n\t"
- "entry=0x%08x%08x, mode=%d, seg=0x%08x, offset=0x%08x\n",
- entry_high, entry_low, mode, seg, off);
+ "entry=0x%08x%08x, mode=%d, seg=0x%08x, offset=0x%08x\n",
+ entry_high, entry_low, mode, seg, off);
return 0;
}
@@ -172,7 +172,7 @@ trace(struct regs *regs, int adjust, cha
va_list ap;
if ((traceset & (1 << mode)) &&
- (mode == VM86_REAL_TO_PROTECTED || mode == VM86_REAL)) {
+ (mode == VM86_REAL_TO_PROTECTED || mode == VM86_REAL)) {
/* 16-bit, seg:off addressing */
unsigned addr = address(regs, regs->cs, off);
printf("0x%08x: 0x%x:0x%04x ", addr, regs->cs, off);
@@ -183,7 +183,7 @@ trace(struct regs *regs, int adjust, cha
printf("\n");
}
if ((traceset & (1 << mode)) &&
- (mode == VM86_PROTECTED_TO_REAL || mode == VM86_PROTECTED)) {
+ (mode == VM86_PROTECTED_TO_REAL || mode == VM86_PROTECTED)) {
/* 16-bit, gdt addressing */
unsigned addr = address(regs, regs->cs, off);
printf("0x%08x: 0x%x:0x%08x ", addr, regs->cs, off);
@@ -376,9 +376,9 @@ segment(unsigned prefix, struct regs *re
if (prefix & SEG_SS)
seg = regs->uss;
if (prefix & SEG_FS)
- seg = regs->fs;
+ seg = regs->vfs;
if (prefix & SEG_GS)
- seg = regs->gs;
+ seg = regs->vgs;
return seg;
}
@@ -430,7 +430,7 @@ operand(unsigned prefix, struct regs *re
case 2: return address(regs, seg, regs->edx);
case 3: return address(regs, seg, regs->ebx);
case 4: return address(regs, seg,
- sib(regs, mod, fetch8(regs)));
+ sib(regs, mod,
fetch8(regs)));
case 5: return address(regs, seg, fetch32(regs));
case 6: return address(regs, seg, regs->esi);
case 7: return address(regs, seg, regs->edi);
@@ -450,7 +450,7 @@ operand(unsigned prefix, struct regs *re
case 2: return address(regs, seg, regs->edx + disp);
case 3: return address(regs, seg, regs->ebx + disp);
case 4: return address(regs, seg,
- sib(regs, mod, fetch8(regs)));
+ sib(regs, mod,
fetch8(regs)));
case 5: return address(regs, seg, regs->ebp + disp);
case 6: return address(regs, seg, regs->esi + disp);
case 7: return address(regs, seg, regs->edi + disp);
@@ -507,7 +507,7 @@ operand(unsigned prefix, struct regs *re
}
}
- return 0;
+ return 0;
}
/*
@@ -859,7 +859,7 @@ mov_to_seg(struct regs *regs, unsigned p
fail:
printf("%s:%d: missed opcode %02x %02x\n",
- __FUNCTION__, __LINE__, opc, modrm);
+ __FUNCTION__, __LINE__, opc, modrm);
return 0;
}
@@ -896,11 +896,11 @@ load_seg(unsigned long sel, uint32_t *ba
((entry >> (32-16)) & 0x00FF0000) |
((entry >> ( 16)) & 0x0000FFFF));
*limit = (((entry >> (48-16)) & 0x000F0000) |
- ((entry ) & 0x0000FFFF));
+ (entry & 0x0000FFFF));
arbytes->bytes = 0;
arbytes->fields.seg_type = (entry >> (8+32)) & 0xF; /* TYPE */
- arbytes->fields.s = (entry >> (12+32)) & 0x1; /* S */
+ arbytes->fields.s = (entry >> (12+32)) & 0x1; /* S */
if (arbytes->fields.s)
arbytes->fields.seg_type |= 1; /* accessed */
arbytes->fields.dpl = (entry >> (13+32)) & 0x3; /* DPL */
@@ -924,7 +924,7 @@ load_or_clear_seg(unsigned long sel, uin
load_or_clear_seg(unsigned long sel, uint32_t *base, uint32_t *limit, union
vmcs_arbytes *arbytes)
{
if (!load_seg(sel, base, limit, arbytes))
- load_seg(0, base, limit, arbytes);
+ load_seg(0, base, limit, arbytes);
}
@@ -934,6 +934,8 @@ static void
static void
protected_mode(struct regs *regs)
{
+ extern char stack_top[];
+
regs->eflags &= ~(EFLAGS_TF|EFLAGS_VM);
oldctx.eip = regs->eip;
@@ -958,12 +960,10 @@ protected_mode(struct regs *regs)
&oldctx.gs_limit, &oldctx.gs_arbytes);
/* initialize jump environment to warp back to protected mode */
+ regs->uss = DATA_SELECTOR;
+ regs->uesp = stack_top;
regs->cs = CODE_SELECTOR;
- regs->ds = DATA_SELECTOR;
- regs->es = DATA_SELECTOR;
- regs->fs = DATA_SELECTOR;
- regs->gs = DATA_SELECTOR;
- regs->eip = (unsigned) &switch_to_protected_mode;
+ regs->eip = (unsigned) switch_to_protected_mode;
/* this should get us into 32-bit mode */
}
@@ -975,10 +975,6 @@ real_mode(struct regs *regs)
real_mode(struct regs *regs)
{
regs->eflags |= EFLAGS_VM | 0x02;
- regs->ds = DATA_SELECTOR;
- regs->es = DATA_SELECTOR;
- regs->fs = DATA_SELECTOR;
- regs->gs = DATA_SELECTOR;
/*
* When we transition from protected to real-mode and we
@@ -992,21 +988,21 @@ real_mode(struct regs *regs)
panic("%%ss 0x%lx higher than 1MB", regs->uss);
regs->uss = address(regs, regs->uss, 0) >> 4;
} else {
- regs->uss = saved_rm_regs.uss;
+ regs->uss = saved_rm_regs.uss;
}
if (regs->vds != 0) {
if (regs->vds >= HIGHMEM)
panic("%%ds 0x%lx higher than 1MB", regs->vds);
regs->vds = address(regs, regs->vds, 0) >> 4;
} else {
- regs->vds = saved_rm_regs.vds;
+ regs->vds = saved_rm_regs.vds;
}
if (regs->ves != 0) {
if (regs->ves >= HIGHMEM)
panic("%%es 0x%lx higher than 1MB", regs->ves);
regs->ves = address(regs, regs->ves, 0) >> 4;
} else {
- regs->ves = saved_rm_regs.ves;
+ regs->ves = saved_rm_regs.ves;
}
/* this should get us into 16-bit mode */
@@ -1033,10 +1029,7 @@ set_mode(struct regs *regs, enum vm86_mo
(mode == VM86_REAL_TO_PROTECTED)) {
regs->eflags &= ~EFLAGS_TF;
real_mode(regs);
- break;
- } else if (mode == VM86_REAL) {
- break;
- } else
+ } else if (mode != VM86_REAL)
panic("unexpected real mode transition");
break;
@@ -1053,28 +1046,19 @@ set_mode(struct regs *regs, enum vm86_mo
oldctx.fs_sel = 0;
oldctx.gs_sel = 0;
oldctx.ss_sel = 0;
- break;
- } else if (mode == VM86_REAL_TO_PROTECTED) {
- break;
- } else
+ } else if (mode != VM86_REAL_TO_PROTECTED)
panic("unexpected real-to-protected mode transition");
break;
case VM86_PROTECTED_TO_REAL:
- if (mode == VM86_PROTECTED) {
- break;
- } else
+ if (mode != VM86_PROTECTED)
panic("unexpected protected-to-real mode transition");
break;
case VM86_PROTECTED:
- if (mode == VM86_REAL_TO_PROTECTED) {
- protected_mode(regs);
-// printf("<VM86_PROTECTED>\n");
- mode = newmode;
- return;
- } else
+ if (mode != VM86_REAL_TO_PROTECTED)
panic("unexpected protected mode transition");
+ protected_mode(regs);
break;
}
@@ -1088,25 +1072,19 @@ jmpl(struct regs *regs, int prefix)
unsigned n = regs->eip;
unsigned cs, eip;
- if (mode == VM86_REAL_TO_PROTECTED) { /* jump to protected mode */
- eip = (prefix & DATA32) ? fetch32(regs) : fetch16(regs);
- cs = fetch16(regs);
-
- TRACE((regs, (regs->eip - n) + 1, "jmpl 0x%x:0x%x", cs, eip));
-
- regs->cs = cs;
- regs->eip = eip;
+ eip = (prefix & DATA32) ? fetch32(regs) : fetch16(regs);
+ cs = fetch16(regs);
+
+ TRACE((regs, (regs->eip - n) + 1, "jmpl 0x%x:0x%x", cs, eip));
+
+ regs->cs = cs;
+ regs->eip = eip;
+
+ if (mode == VM86_REAL_TO_PROTECTED) /* jump to protected
mode */
set_mode(regs, VM86_PROTECTED);
- } else if (mode == VM86_PROTECTED_TO_REAL) { /* jump to real mode */
- eip = (prefix & DATA32) ? fetch32(regs) : fetch16(regs);
- cs = fetch16(regs);
-
- TRACE((regs, (regs->eip - n) + 1, "jmpl 0x%x:0x%x", cs, eip));
-
- regs->cs = cs;
- regs->eip = eip;
+ else if (mode == VM86_PROTECTED_TO_REAL)/* jump to real mode */
set_mode(regs, VM86_REAL);
- } else
+ else
panic("jmpl");
}
@@ -1117,29 +1095,22 @@ jmpl_indirect(struct regs *regs, int pre
unsigned cs, eip;
unsigned addr;
- addr = operand(prefix, regs, modrm);
-
- if (mode == VM86_REAL_TO_PROTECTED) { /* jump to protected mode */
- eip = (prefix & DATA32) ? read32(addr) : read16(addr);
- addr += (prefix & DATA32) ? 4 : 2;
- cs = read16(addr);
-
- TRACE((regs, (regs->eip - n) + 1, "jmpl 0x%x:0x%x", cs, eip));
-
- regs->cs = cs;
- regs->eip = eip;
+ addr = operand(prefix, regs, modrm);
+
+ eip = (prefix & DATA32) ? read32(addr) : read16(addr);
+ addr += (prefix & DATA32) ? 4 : 2;
+ cs = read16(addr);
+
+ TRACE((regs, (regs->eip - n) + 1, "jmpl 0x%x:0x%x", cs, eip));
+
+ regs->cs = cs;
+ regs->eip = eip;
+
+ if (mode == VM86_REAL_TO_PROTECTED) /* jump to protected
mode */
set_mode(regs, VM86_PROTECTED);
- } else if (mode == VM86_PROTECTED_TO_REAL) { /* jump to real mode */
- eip = (prefix & DATA32) ? read32(addr) : read16(addr);
- addr += (prefix & DATA32) ? 4 : 2;
- cs = read16(addr);
-
- TRACE((regs, (regs->eip - n) + 1, "jmpl 0x%x:0x%x", cs, eip));
-
- regs->cs = cs;
- regs->eip = eip;
+ else if (mode == VM86_PROTECTED_TO_REAL)/* jump to real mode */
set_mode(regs, VM86_REAL);
- } else
+ else
panic("jmpl");
}
@@ -1158,15 +1129,14 @@ retl(struct regs *regs, int prefix)
TRACE((regs, 1, "retl (to 0x%x:0x%x)", cs, eip));
- if (mode == VM86_REAL_TO_PROTECTED) { /* jump to protected mode */
- regs->cs = cs;
- regs->eip = eip;
+ regs->cs = cs;
+ regs->eip = eip;
+
+ if (mode == VM86_REAL_TO_PROTECTED) /* jump to protected
mode */
set_mode(regs, VM86_PROTECTED);
- } else if (mode == VM86_PROTECTED_TO_REAL) { /* jump to real mode */
- regs->cs = cs;
- regs->eip = eip;
+ else if (mode == VM86_PROTECTED_TO_REAL)/* jump to real mode */
set_mode(regs, VM86_REAL);
- } else
+ else
panic("retl");
}
@@ -1266,8 +1236,8 @@ pushrm(struct regs *regs, int prefix, un
unsigned addr;
unsigned data;
- addr = operand(prefix, regs, modrm);
-
+ addr = operand(prefix, regs, modrm);
+
if (prefix & DATA32) {
data = read32(addr);
push32(regs, data);
@@ -1393,11 +1363,11 @@ opcode(struct regs *regs)
case 0x3B: /* addr32 cmp r/m16, r16 */
if (mode != VM86_REAL && mode != VM86_REAL_TO_PROTECTED)
goto invalid;
- if ((prefix & ADDR32) == 0)
- goto invalid;
- if (!cmp(regs, prefix, opc))
- goto invalid;
- return OPC_EMULATED;
+ if ((prefix & ADDR32) == 0)
+ goto invalid;
+ if (!cmp(regs, prefix, opc))
+ goto invalid;
+ return OPC_EMULATED;
case 0x3E:
TRACE((regs, regs->eip - eip, "%%ds:"));
@@ -1419,7 +1389,7 @@ opcode(struct regs *regs)
prefix |= DATA32;
continue;
- case 0x67:
+ case 0x67:
TRACE((regs, regs->eip - eip, "addr32"));
prefix |= ADDR32;
continue;
@@ -1428,18 +1398,18 @@ opcode(struct regs *regs)
case 0x8A: /* addr32 mov r/m8, r8 */
if (mode != VM86_REAL && mode != VM86_REAL_TO_PROTECTED)
goto invalid;
- if ((prefix & ADDR32) == 0)
- goto invalid;
- if (!movr(regs, prefix, opc))
- goto invalid;
- return OPC_EMULATED;
+ if ((prefix & ADDR32) == 0)
+ goto invalid;
+ if (!movr(regs, prefix, opc))
+ goto invalid;
+ return OPC_EMULATED;
case 0x89: /* addr32 mov r16, r/m16 */
if (mode == VM86_PROTECTED_TO_REAL) {
unsigned modrm = fetch8(regs);
unsigned addr = operand(prefix, regs, modrm);
unsigned val, r = (modrm >> 3) & 7;
-
+
if (prefix & DATA32) {
val = getreg16(regs, r);
write32(addr, val);
@@ -1454,11 +1424,11 @@ opcode(struct regs *regs)
case 0x8B: /* addr32 mov r/m16, r16 */
if (mode != VM86_REAL && mode != VM86_REAL_TO_PROTECTED)
goto invalid;
- if ((prefix & ADDR32) == 0)
- goto invalid;
- if (!movr(regs, prefix, opc))
- goto invalid;
- return OPC_EMULATED;
+ if ((prefix & ADDR32) == 0)
+ goto invalid;
+ if (!movr(regs, prefix, opc))
+ goto invalid;
+ return OPC_EMULATED;
case 0x8E: /* mov r16, sreg */
if (!mov_to_seg(regs, prefix, opc))
@@ -1466,11 +1436,11 @@ opcode(struct regs *regs)
return OPC_EMULATED;
case 0x8F: /* addr32 pop r/m16 */
- if ((prefix & ADDR32) == 0)
- goto invalid;
- if (!pop(regs, prefix, opc))
- goto invalid;
- return OPC_EMULATED;
+ if ((prefix & ADDR32) == 0)
+ goto invalid;
+ if (!pop(regs, prefix, opc))
+ goto invalid;
+ return OPC_EMULATED;
case 0x90: /* nop */
TRACE((regs, regs->eip - eip, "nop"));
@@ -1494,7 +1464,7 @@ opcode(struct regs *regs)
regs->eflags |= EFLAGS_VM;
return OPC_EMULATED;
- case 0xA1: /* mov ax, r/m16 */
+ case 0xA1: /* mov ax, r/m16 */
{
int addr, data;
int seg = segment(prefix, regs, regs->vds);
@@ -1528,15 +1498,15 @@ opcode(struct regs *regs)
return OPC_EMULATED;
case 0xC6: /* addr32 movb $imm, r/m8 */
- if ((prefix & ADDR32) == 0)
- goto invalid;
- if (!movr(regs, prefix, opc))
- goto invalid;
+ if ((prefix & ADDR32) == 0)
+ goto invalid;
+ if (!movr(regs, prefix, opc))
+ goto invalid;
return OPC_EMULATED;
case 0xCB: /* retl */
if ((mode == VM86_REAL_TO_PROTECTED) ||
- (mode == VM86_PROTECTED_TO_REAL)) {
+ (mode == VM86_PROTECTED_TO_REAL)) {
retl(regs, prefix);
return OPC_INVALID;
}
@@ -1574,7 +1544,7 @@ opcode(struct regs *regs)
case 0xEA: /* jmpl */
if ((mode == VM86_REAL_TO_PROTECTED) ||
- (mode == VM86_PROTECTED_TO_REAL)) {
+ (mode == VM86_PROTECTED_TO_REAL)) {
jmpl(regs, prefix);
return OPC_INVALID;
}
@@ -1586,7 +1556,7 @@ opcode(struct regs *regs)
switch((modrm >> 3) & 7) {
case 5: /* jmpl (indirect) */
if ((mode == VM86_REAL_TO_PROTECTED) ||
- (mode == VM86_PROTECTED_TO_REAL)) {
+ (mode ==
VM86_PROTECTED_TO_REAL)) {
jmpl_indirect(regs, prefix,
modrm);
return OPC_INVALID;
}
@@ -1603,7 +1573,7 @@ opcode(struct regs *regs)
case 0xEB: /* short jump */
if ((mode == VM86_REAL_TO_PROTECTED) ||
- (mode == VM86_PROTECTED_TO_REAL)) {
+ (mode == VM86_PROTECTED_TO_REAL)) {
disp = (char) fetch8(regs);
TRACE((regs, 2, "jmp 0x%x", regs->eip + disp));
regs->eip += disp;
@@ -1626,10 +1596,10 @@ opcode(struct regs *regs)
continue;
case 0xF6: /* addr32 testb $imm, r/m8 */
- if ((prefix & ADDR32) == 0)
- goto invalid;
- if (!test(regs, prefix, opc))
- goto invalid;
+ if ((prefix & ADDR32) == 0)
+ goto invalid;
+ if (!test(regs, prefix, opc))
+ goto invalid;
return OPC_EMULATED;
case 0xFA: /* cli */
@@ -1689,6 +1659,8 @@ trap(int trapno, int errno, struct regs
case 1: /* Debug */
if (regs->eflags & EFLAGS_VM) {
/* emulate any 8086 instructions */
+ if (mode == VM86_REAL)
+ return;
if (mode != VM86_REAL_TO_PROTECTED)
panic("not in real-to-protected mode");
emulate(regs);
@@ -1709,7 +1681,7 @@ trap(int trapno, int errno, struct regs
default:
invalid:
printf("Trap (0x%x) while in %s mode\n",
- trapno, regs->eflags & EFLAGS_VM ? "real" : "protected");
+ trapno, regs->eflags & EFLAGS_VM ? "real" :
"protected");
if (trapno == 14)
printf("Page fault address 0x%x\n", get_cr2());
dump_regs(regs);
diff -r a510c94ceaa3 -r 749c399d73df tools/firmware/vmxassist/vm86.h
--- a/tools/firmware/vmxassist/vm86.h Tue Dec 12 09:56:06 2006 -0600
+++ b/tools/firmware/vmxassist/vm86.h Tue Dec 12 09:58:42 2006 -0600
@@ -34,7 +34,6 @@
struct regs {
unsigned edi, esi, ebp, esp, ebx, edx, ecx, eax;
- unsigned es, ds, fs, gs;
unsigned trapno, errno;
unsigned eip, cs, eflags, uesp, uss;
unsigned ves, vds, vfs, vgs;
@@ -55,7 +54,6 @@ enum vm86_mode {
extern enum vm86_mode prevmode, mode;
extern struct vmx_assist_context oldctx;
-extern struct vmx_assist_context newctx;
extern void emulate(struct regs *);
extern void dump_regs(struct regs *);
diff -r a510c94ceaa3 -r 749c399d73df tools/ioemu/Makefile.target
--- a/tools/ioemu/Makefile.target Tue Dec 12 09:56:06 2006 -0600
+++ b/tools/ioemu/Makefile.target Tue Dec 12 09:58:42 2006 -0600
@@ -296,7 +296,7 @@ endif
# qemu-dm objects
ifeq ($(ARCH),ia64)
-LIBOBJS=helper2.o exec-dm.o i8259-dm.o
+LIBOBJS=helper2.o exec-dm.o i8259-dm.o piix_pci-dm.o
else
LIBOBJS=helper2.o exec-dm.o i8259-dm.o rtc-dm.o piix_pci-dm.o
endif
@@ -360,7 +360,7 @@ ifeq ($(TARGET_BASE_ARCH), i386)
# Hardware support
VL_OBJS+= ide.o pckbd.o ps2.o vga.o $(SOUND_HW) dma.o $(AUDIODRV)
ifeq ($(ARCH),ia64)
-VL_OBJS+= fdc.o mc146818rtc.o serial.o pc.o piix_pci.o
+VL_OBJS+= fdc.o mc146818rtc.o serial.o pc.o
else
VL_OBJS+= fdc.o serial.o pc.o
endif
diff -r a510c94ceaa3 -r 749c399d73df tools/ioemu/hw/ide.c
--- a/tools/ioemu/hw/ide.c Tue Dec 12 09:56:06 2006 -0600
+++ b/tools/ioemu/hw/ide.c Tue Dec 12 09:58:42 2006 -0600
@@ -680,7 +680,7 @@ static void ide_sector_read(IDEState *s)
static void ide_sector_read(IDEState *s)
{
int64_t sector_num;
- int ret, n;
+ int n;
s->status = READY_STAT | SEEK_STAT;
s->error = 0; /* not needed by IDE spec, but needed by Windows */
@@ -695,7 +695,11 @@ static void ide_sector_read(IDEState *s)
#endif
if (n > s->req_nb_sectors)
n = s->req_nb_sectors;
- ret = bdrv_read(s->bs, sector_num, s->io_buffer, n);
+ if (bdrv_read(s->bs, sector_num, s->io_buffer, n) != 0) {
+ ide_abort_command(s);
+ ide_set_irq(s);
+ return;
+ }
ide_transfer_start(s, s->io_buffer, 512 * n, ide_sector_read);
ide_set_irq(s);
ide_set_sector(s, sector_num + n);
@@ -721,7 +725,11 @@ static int ide_read_dma_cb(IDEState *s,
if (n > MAX_MULT_SECTORS)
n = MAX_MULT_SECTORS;
sector_num = ide_get_sector(s);
- bdrv_read(s->bs, sector_num, s->io_buffer, n);
+ if (bdrv_read(s->bs, sector_num, s->io_buffer, n) != 0) {
+ ide_abort_command(s);
+ ide_set_irq(s);
+ return 0;
+ }
s->io_buffer_index = 0;
s->io_buffer_size = n * 512;
len = s->io_buffer_size;
@@ -767,7 +775,7 @@ static void ide_sector_write(IDEState *s
static void ide_sector_write(IDEState *s)
{
int64_t sector_num;
- int ret, n, n1;
+ int n, n1;
s->status = READY_STAT | SEEK_STAT;
sector_num = ide_get_sector(s);
@@ -777,7 +785,11 @@ static void ide_sector_write(IDEState *s
n = s->nsector;
if (n > s->req_nb_sectors)
n = s->req_nb_sectors;
- ret = bdrv_write(s->bs, sector_num, s->io_buffer, n);
+ if (bdrv_write(s->bs, sector_num, s->io_buffer, n) != 0) {
+ ide_abort_command(s);
+ ide_set_irq(s);
+ return;
+ }
s->nsector -= n;
if (s->nsector == 0) {
/* no more sector to write */
@@ -823,8 +835,13 @@ static int ide_write_dma_cb(IDEState *s,
if (len == 0) {
n = s->io_buffer_size >> 9;
sector_num = ide_get_sector(s);
- bdrv_write(s->bs, sector_num, s->io_buffer,
- s->io_buffer_size >> 9);
+ if (bdrv_write(s->bs, sector_num, s->io_buffer,
+ s->io_buffer_size >> 9) != 0) {
+ ide_abort_command(s);
+ ide_set_irq(s);
+ return 0;
+ }
+
sector_num += n;
ide_set_sector(s, sector_num);
s->nsector -= n;
diff -r a510c94ceaa3 -r 749c399d73df tools/ioemu/hw/pci.c
--- a/tools/ioemu/hw/pci.c Tue Dec 12 09:56:06 2006 -0600
+++ b/tools/ioemu/hw/pci.c Tue Dec 12 09:58:42 2006 -0600
@@ -221,23 +221,16 @@ uint32_t pci_default_read_config(PCIDevi
uint32_t address, int len)
{
uint32_t val;
-
switch(len) {
+ case 1:
+ val = d->config[address];
+ break;
+ case 2:
+ val = le16_to_cpu(*(uint16_t *)(d->config + address));
+ break;
default:
case 4:
- if (address <= 0xfc) {
- val = le32_to_cpu(*(uint32_t *)(d->config + address));
- break;
- }
- /* fall through */
- case 2:
- if (address <= 0xfe) {
- val = le16_to_cpu(*(uint16_t *)(d->config + address));
- break;
- }
- /* fall through */
- case 1:
- val = d->config[address];
+ val = le32_to_cpu(*(uint32_t *)(d->config + address));
break;
}
return val;
@@ -340,8 +333,7 @@ void pci_default_write_config(PCIDevice
d->config[addr] = val;
}
- if (++addr > 0xff)
- break;
+ addr++;
val >>= 8;
}
diff -r a510c94ceaa3 -r 749c399d73df tools/ioemu/hw/tpm_tis.c
--- a/tools/ioemu/hw/tpm_tis.c Tue Dec 12 09:56:06 2006 -0600
+++ b/tools/ioemu/hw/tpm_tis.c Tue Dec 12 09:58:42 2006 -0600
@@ -132,7 +132,7 @@ typedef struct TPMState {
/* local prototypes */
-static int TPM_Send(tpmState *s, tpmBuffer *buffer, char *msg);
+static int TPM_Send(tpmState *s, tpmBuffer *buffer, uint8_t locty, char *msg);
static int TPM_Receive(tpmState *s, tpmBuffer *buffer);
static uint32_t vtpm_instance_from_xenstore(void);
static void tis_poll_timer(void *opaque);
@@ -271,6 +271,8 @@ static int create_local_socket(tpmState
/*
* the 'write' method for sending requests to the vTPM
* four bytes with the vTPM instance number are prepended to each request
+ * the locality in which the command was sent is transmitted in the
+ * highest 3 bits
*/
static int write_local_socket(tpmState *s, const tpmBuffer *buffer)
{
@@ -608,7 +610,7 @@ static void tis_mem_writel(void *opaque,
}
}
if (val & STS_TPM_GO) {
- n = TPM_Send(s, &s->buffer,"tpm_data_write");
+ n = TPM_Send(s, &s->buffer, locty, "tpm_data_write");
if (n > 0) {
/* sending of data was successful */
s->offset = 0;
@@ -915,7 +917,7 @@ const static unsigned char tpm_failure[]
/*
* Send a TPM request.
*/
-static int TPM_Send(tpmState *s, tpmBuffer *buffer, char *msg)
+static int TPM_Send(tpmState *s, tpmBuffer *buffer, uint8_t locty, char *msg)
{
int len;
uint32_t size = tpm_get_size_from_buffer(buffer->buf);
@@ -944,6 +946,10 @@ static int TPM_Send(tpmState *s, tpmBuff
#ifdef DEBUG_TPM
showBuff(buffer->buf, "To TPM");
#endif
+
+ /* transmit the locality in the highest 3 bits */
+ buffer->instance[0] &= 0x1f;
+ buffer->instance[0] |= (locty << 5);
len = vTPMTransmit[s->Transmitlayer].write(s, buffer);
if (len < 0) {
diff -r a510c94ceaa3 -r 749c399d73df tools/ioemu/hw/usb-hid.c
--- a/tools/ioemu/hw/usb-hid.c Tue Dec 12 09:56:06 2006 -0600
+++ b/tools/ioemu/hw/usb-hid.c Tue Dec 12 09:58:42 2006 -0600
@@ -39,6 +39,7 @@ typedef struct USBMouseState {
int x, y;
int kind;
int mouse_grabbed;
+ int status_changed;
} USBMouseState;
/* mostly the same values as the Bochs USB Mouse device */
@@ -231,6 +232,7 @@ static void usb_mouse_event(void *opaque
s->dy += dy1;
s->dz += dz1;
s->buttons_state = buttons_state;
+ s->status_changed = 1;
}
static void usb_tablet_event(void *opaque,
@@ -242,6 +244,7 @@ static void usb_tablet_event(void *opaqu
s->y = y;
s->dz += dz;
s->buttons_state = buttons_state;
+ s->status_changed = 1;
}
static inline int int_clamp(int val, int vmin, int vmax)
@@ -483,10 +486,16 @@ static int usb_mouse_handle_data(USBDevi
switch(pid) {
case USB_TOKEN_IN:
if (devep == 1) {
- if (s->kind == USB_MOUSE)
- ret = usb_mouse_poll(s, data, len);
- else if (s->kind == USB_TABLET)
- ret = usb_tablet_poll(s, data, len);
+ if (s->kind == USB_MOUSE)
+ ret = usb_mouse_poll(s, data, len);
+ else if (s->kind == USB_TABLET)
+ ret = usb_tablet_poll(s, data, len);
+
+ if (!s->status_changed)
+ ret = USB_RET_NAK;
+ else
+ s->status_changed = 0;
+
} else {
goto fail;
}
@@ -523,6 +532,7 @@ USBDevice *usb_tablet_init(void)
s->dev.handle_data = usb_mouse_handle_data;
s->dev.handle_destroy = usb_mouse_handle_destroy;
s->kind = USB_TABLET;
+ s->status_changed = 0;
pstrcpy(s->dev.devname, sizeof(s->dev.devname), "QEMU USB Tablet");
@@ -544,6 +554,7 @@ USBDevice *usb_mouse_init(void)
s->dev.handle_data = usb_mouse_handle_data;
s->dev.handle_destroy = usb_mouse_handle_destroy;
s->kind = USB_MOUSE;
+ s->status_changed = 0;
pstrcpy(s->dev.devname, sizeof(s->dev.devname), "QEMU USB Mouse");
diff -r a510c94ceaa3 -r 749c399d73df tools/ioemu/hw/usb-uhci.c
--- a/tools/ioemu/hw/usb-uhci.c Tue Dec 12 09:56:06 2006 -0600
+++ b/tools/ioemu/hw/usb-uhci.c Tue Dec 12 09:58:42 2006 -0600
@@ -421,15 +421,13 @@ static int uhci_handle_td(UHCIState *s,
static int uhci_handle_td(UHCIState *s, UHCI_TD *td, int *int_mask)
{
uint8_t pid;
- uint8_t buf[1280];
+ uint8_t buf[2048];
int len, max_len, err, ret;
- if (td->ctrl & TD_CTRL_IOC) {
- *int_mask |= 0x01;
- }
-
- if (!(td->ctrl & TD_CTRL_ACTIVE))
- return 1;
+ if (!(td->ctrl & TD_CTRL_ACTIVE)){
+ ret = 1;
+ goto out;
+ }
/* TD is active */
max_len = ((td->token >> 21) + 1) & 0x7ff;
@@ -467,7 +465,8 @@ static int uhci_handle_td(UHCIState *s,
/* invalid pid : frame interrupted */
s->status |= UHCI_STS_HCPERR;
uhci_update_irq(s);
- return -1;
+ ret = -1;
+ goto out;
}
if (td->ctrl & TD_CTRL_IOS)
td->ctrl &= ~TD_CTRL_ACTIVE;
@@ -479,10 +478,12 @@ static int uhci_handle_td(UHCIState *s,
len < max_len) {
*int_mask |= 0x02;
/* short packet: do not update QH */
- return 1;
+ ret = 1;
+ goto out;
} else {
/* success */
- return 0;
+ ret = 0;
+ goto out;
}
} else {
switch(ret) {
@@ -501,23 +502,34 @@ static int uhci_handle_td(UHCIState *s,
}
td->ctrl = (td->ctrl & ~(3 << TD_CTRL_ERROR_SHIFT)) |
(err << TD_CTRL_ERROR_SHIFT);
- return 1;
+ ret = 1;
+ goto out;
case USB_RET_NAK:
td->ctrl |= TD_CTRL_NAK;
if (pid == USB_TOKEN_SETUP)
goto do_timeout;
- return 1;
+ ret = 1;
+ goto out;
case USB_RET_STALL:
td->ctrl |= TD_CTRL_STALL;
td->ctrl &= ~TD_CTRL_ACTIVE;
- return 1;
+ ret = 1;
+ goto out;
case USB_RET_BABBLE:
td->ctrl |= TD_CTRL_BABBLE | TD_CTRL_STALL;
td->ctrl &= ~TD_CTRL_ACTIVE;
/* frame interrupted */
- return -1;
- }
- }
+ ret = -1;
+ goto out;
+ }
+ }
+
+out:
+ /* If TD is inactive and IOC bit set to 1 then update int_mask */
+ if ((td->ctrl & TD_CTRL_IOC) && (!(td->ctrl & TD_CTRL_ACTIVE))) {
+ *int_mask |= 0x01;
+ }
+ return ret;
}
static void uhci_frame_timer(void *opaque)
diff -r a510c94ceaa3 -r 749c399d73df tools/ioemu/keymaps.c
--- a/tools/ioemu/keymaps.c Tue Dec 12 09:56:06 2006 -0600
+++ b/tools/ioemu/keymaps.c Tue Dec 12 09:58:42 2006 -0600
@@ -36,8 +36,10 @@ static int get_keysym(const char *name)
#define MAX_EXTRA_COUNT 256
typedef struct {
uint16_t keysym2keycode[MAX_NORMAL_KEYCODE];
+ int keysym2numlock[MAX_NORMAL_KEYCODE];
struct {
int keysym;
+ int numlock;
uint16_t keycode;
} keysym2keycode_extra[MAX_EXTRA_COUNT];
int extra_count;
@@ -50,6 +52,8 @@ static kbd_layout_t *parse_keyboard_layo
char file_name[1024];
char line[1024];
int len;
+ int *keycode2numlock;
+ int i;
snprintf(file_name, sizeof(file_name),
"%s/keymaps/%s", bios_dir, language);
@@ -63,6 +67,15 @@ static kbd_layout_t *parse_keyboard_layo
"Could not read keymap file: '%s'\n", file_name);
return 0;
}
+
+ /* Allocate a temporary map tracking which keycodes change when numlock is
+ set. Keycodes are 16 bit, so 65536 is safe. */
+ keycode2numlock = malloc(65536 * sizeof(int));
+ if (!keycode2numlock) {
+ perror("Could not read keymap file");
+ return 0;
+ }
+
for(;;) {
if (fgets(line, 1024, f) == NULL)
break;
@@ -86,13 +99,19 @@ static kbd_layout_t *parse_keyboard_layo
if (keysym == 0) {
// fprintf(stderr, "Warning: unknown keysym
%s\n", line);
} else {
- const char *rest = end_of_keysym + 1;
- int keycode = strtol(rest, NULL, 0);
+ char *rest = end_of_keysym + 1;
+ int keycode = strtol(rest, &rest, 0);
+ int numlock = (rest != NULL &&
+ strstr(rest, "numlock") != NULL);
+
+ keycode2numlock[keycode] = numlock;
+
/* if(keycode&0x80)
keycode=(keycode<<8)^0x80e0; */
if (keysym < MAX_NORMAL_KEYCODE) {
//fprintf(stderr,"Setting keysym %s (%d) to
%d\n",line,keysym,keycode);
k->keysym2keycode[keysym] = keycode;
+ k->keysym2numlock[keysym] = numlock;
} else {
if (k->extra_count >= MAX_EXTRA_COUNT) {
fprintf(stderr,
@@ -107,6 +126,8 @@ static kbd_layout_t *parse_keyboard_layo
keysym = keysym;
k->keysym2keycode_extra[k->extra_count].
keycode = keycode;
+ k->keysym2keycode_extra[k->extra_count].
+ numlock = numlock;
k->extra_count++;
}
}
@@ -115,6 +136,22 @@ static kbd_layout_t *parse_keyboard_layo
}
}
fclose(f);
+
+ for (i = 0; i < MAX_NORMAL_KEYCODE; i++) {
+ if (k->keysym2numlock[i] != 1) {
+ k->keysym2numlock[i] = -keycode2numlock[k->keysym2keycode[i]];
+ }
+ }
+
+ for (i = 0; i < k->extra_count; i++) {
+ if (k->keysym2keycode_extra[i].numlock != 1) {
+ k->keysym2keycode_extra[i].numlock =
+ -keycode2numlock[k->keysym2keycode_extra[i].keycode];
+ }
+ }
+
+ free(keycode2numlock);
+
return k;
}
@@ -143,3 +180,25 @@ static int keysym2scancode(void *kbd_lay
}
return 0;
}
+
+/**
+ * Returns 1 if the given keysym requires numlock to be pressed, -1 if it
+ * requires it to be cleared, and 0 otherwise.
+ */
+static int keysym2numlock(void *kbd_layout, int keysym)
+{
+ kbd_layout_t *k = kbd_layout;
+ if (keysym < MAX_NORMAL_KEYCODE) {
+ return k->keysym2numlock[keysym];
+ } else {
+ int i;
+#ifdef XK_ISO_Left_Tab
+ if (keysym == XK_ISO_Left_Tab)
+ keysym = XK_Tab;
+#endif
+ for (i = 0; i < k->extra_count; i++)
+ if (k->keysym2keycode_extra[i].keysym == keysym)
+ return k->keysym2keycode_extra[i].numlock;
+ }
+ return 0;
+}
diff -r a510c94ceaa3 -r 749c399d73df tools/ioemu/patches/acpi-support
--- a/tools/ioemu/patches/acpi-support Tue Dec 12 09:56:06 2006 -0600
+++ b/tools/ioemu/patches/acpi-support Tue Dec 12 09:58:42 2006 -0600
@@ -1,8 +1,8 @@ Index: ioemu/Makefile.target
Index: ioemu/Makefile.target
===================================================================
---- ioemu.orig/Makefile.target 2006-08-17 19:49:50.228216099 +0100
-+++ ioemu/Makefile.target 2006-08-17 19:50:02.405870095 +0100
-@@ -357,6 +357,7 @@
+--- ioemu.orig/Makefile.target 2006-12-08 02:00:40.000000000 +0000
++++ ioemu/Makefile.target 2006-12-08 02:00:40.000000000 +0000
+@@ -358,6 +358,7 @@
VL_OBJS+= fdc.o mc146818rtc.o serial.o pc.o
VL_OBJS+= cirrus_vga.o mixeng.o parallel.o acpi.o piix_pci.o
VL_OBJS+= usb-uhci.o
@@ -12,8 +12,8 @@ Index: ioemu/Makefile.target
ifeq ($(TARGET_BASE_ARCH), ppc)
Index: ioemu/hw/pc.c
===================================================================
---- ioemu.orig/hw/pc.c 2006-08-17 19:49:59.312212039 +0100
-+++ ioemu/hw/pc.c 2006-08-17 19:50:02.406869984 +0100
+--- ioemu.orig/hw/pc.c 2006-12-08 02:00:40.000000000 +0000
++++ ioemu/hw/pc.c 2006-12-08 02:00:40.000000000 +0000
@@ -874,13 +874,19 @@
cmos_init(ram_size, boot_device, bs_table, timeoffset);
@@ -49,8 +49,8 @@ Index: ioemu/hw/piix4acpi.c
Index: ioemu/hw/piix4acpi.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ ioemu/hw/piix4acpi.c 2006-08-17 19:50:02.407869874 +0100
-@@ -0,0 +1,388 @@
++++ ioemu/hw/piix4acpi.c 2006-12-08 02:00:40.000000000 +0000
+@@ -0,0 +1,396 @@
+/*
+ * PIIX4 ACPI controller emulation
+ *
@@ -434,15 +434,23 @@ Index: ioemu/hw/piix4acpi.c
+ pci_conf[0x0e] = 0x00;
+ pci_conf[0x3d] = 0x01; /* Hardwired to PIRQA is used */
+
-+ pci_register_io_region((PCIDevice *)d, 4, 0x10,
-+ PCI_ADDRESS_SPACE_IO, acpi_map);
-+
-+ acpi_reset (d);
++
++ /* PMBA POWER MANAGEMENT BASE ADDRESS, hardcoded to 0x1f40
++ * to make shutdown work for IPF, due to IPF Guest Firmware
++ * will enumerate pci devices.
++ *
++ * TODO: if Guest Firmware or Guest OS will change this PMBA,
++ * More logic will be added.
++ */
++ pci_conf[0x40] = 0x41; /* Special device-specific BAR at 0x40 */
++ pci_conf[0x41] = 0x1f;
++ acpi_map(d, 0, 0x1f40, 0x10, PCI_ADDRESS_SPACE_IO);
++ acpi_reset(d);
+}
Index: ioemu/vl.c
===================================================================
---- ioemu.orig/vl.c 2006-08-17 19:49:59.315211708 +0100
-+++ ioemu/vl.c 2006-08-17 19:50:02.410869542 +0100
+--- ioemu.orig/vl.c 2006-12-08 02:00:40.000000000 +0000
++++ ioemu/vl.c 2006-12-08 02:00:40.000000000 +0000
@@ -156,7 +156,7 @@
#else
#define MAX_CPUS 1
@@ -476,7 +484,7 @@ Index: ioemu/vl.c
{ NULL },
};
-@@ -6256,6 +6259,9 @@
+@@ -6240,6 +6243,9 @@
case QEMU_OPTION_timeoffset:
timeoffset = strtol(optarg, NULL, 0);
break;
@@ -488,8 +496,8 @@ Index: ioemu/vl.c
}
Index: ioemu/vl.h
===================================================================
---- ioemu.orig/vl.h 2006-08-17 19:49:59.316211597 +0100
-+++ ioemu/vl.h 2006-08-17 19:50:02.411869432 +0100
+--- ioemu.orig/vl.h 2006-12-08 02:00:40.000000000 +0000
++++ ioemu/vl.h 2006-12-08 02:00:40.000000000 +0000
@@ -168,6 +168,7 @@
extern int kqemu_allowed;
extern int win2k_install_hack;
@@ -510,8 +518,8 @@ Index: ioemu/vl.h
extern QEMUMachine isapc_machine;
Index: ioemu/hw/piix_pci.c
===================================================================
---- ioemu.orig/hw/piix_pci.c 2006-08-17 19:38:05.806252180 +0100
-+++ ioemu/hw/piix_pci.c 2006-08-17 19:50:02.411869432 +0100
+--- ioemu.orig/hw/piix_pci.c 2006-12-08 02:00:39.000000000 +0000
++++ ioemu/hw/piix_pci.c 2006-12-08 02:00:40.000000000 +0000
@@ -241,7 +241,7 @@
static uint32_t pci_bios_io_addr;
static uint32_t pci_bios_mem_addr;
@@ -521,33 +529,22 @@ Index: ioemu/hw/piix_pci.c
static void pci_config_writel(PCIDevice *d, uint32_t addr, uint32_t val)
{
-@@ -336,6 +336,14 @@
+@@ -336,6 +336,18 @@
pci_set_io_region_addr(d, 3, 0x374);
}
break;
+ case 0x0680:
+ if (vendor_id == 0x8086 && device_id == 0x7113) {
-+ /* PIIX4 ACPI PM */
-+ pci_config_writew(d, 0x20, 0x0000); /* NO smb bus IO enable in
PIIX4 */
++ /*
++ * PIIX4 ACPI PM.
++ * Special device with special PCI config space. No ordinary BARs.
++ */
++ pci_config_writew(d, 0x20, 0x0000); // No smb bus IO enable
+ pci_config_writew(d, 0x22, 0x0000);
-+ goto default_map;
++ pci_config_writew(d, 0x3c, 0x0009); // Hardcoded IRQ9
++ pci_config_writew(d, 0x3d, 0x0001);
+ }
+ break;
case 0x0300:
if (vendor_id != 0x1234)
goto default_map;
-@@ -386,6 +394,14 @@
- pic_irq = pci_irqs[pin];
- pci_config_writeb(d, PCI_INTERRUPT_LINE, pic_irq);
- }
-+
-+ if (class== 0x0680&& vendor_id == 0x8086 && device_id == 0x7113) {
-+ // PIIX4 ACPI PM
-+ pci_config_writew(d, 0x20, 0x0000); // NO smb bus IO enable in PIIX4
-+ pci_config_writew(d, 0x22, 0x0000);
-+ pci_config_writew(d, 0x3c, 0x0009); // Hardcodeed IRQ9
-+ pci_config_writew(d, 0x3d, 0x0001);
-+ }
- }
-
- /*
diff -r a510c94ceaa3 -r 749c399d73df tools/ioemu/patches/acpi-timer-support
--- a/tools/ioemu/patches/acpi-timer-support Tue Dec 12 09:56:06 2006 -0600
+++ b/tools/ioemu/patches/acpi-timer-support Tue Dec 12 09:58:42 2006 -0600
@@ -1,7 +1,7 @@ Index: ioemu/hw/piix4acpi.c
Index: ioemu/hw/piix4acpi.c
===================================================================
---- ioemu.orig/hw/piix4acpi.c 2006-08-17 19:50:02.407869874 +0100
-+++ ioemu/hw/piix4acpi.c 2006-08-17 19:50:05.060576667 +0100
+--- ioemu.orig/hw/piix4acpi.c 2006-12-08 01:35:52.000000000 +0000
++++ ioemu/hw/piix4acpi.c 2006-12-08 01:35:59.000000000 +0000
@@ -24,31 +24,30 @@
*/
@@ -186,10 +186,3 @@ Index: ioemu/hw/piix4acpi.c
/* PIIX4 acpi pci configuration space, func 2 */
void pci_piix4_acpi_init(PCIBus *bus, int devfn)
-@@ -384,5 +383,5 @@
- pci_register_io_region((PCIDevice *)d, 4, 0x10,
- PCI_ADDRESS_SPACE_IO, acpi_map);
-
-- acpi_reset (d);
-+ acpi_reset(d);
- }
diff -r a510c94ceaa3 -r 749c399d73df tools/ioemu/patches/domain-destroy
--- a/tools/ioemu/patches/domain-destroy Tue Dec 12 09:56:06 2006 -0600
+++ b/tools/ioemu/patches/domain-destroy Tue Dec 12 09:58:42 2006 -0600
@@ -1,7 +1,7 @@ Index: ioemu/monitor.c
Index: ioemu/monitor.c
===================================================================
---- ioemu.orig/monitor.c 2006-08-17 19:37:36.489509621 +0100
-+++ ioemu/monitor.c 2006-08-17 19:49:44.491850141 +0100
+--- ioemu.orig/monitor.c 2006-12-08 01:26:07.000000000 +0000
++++ ioemu/monitor.c 2006-12-08 01:26:08.000000000 +0000
@@ -308,6 +308,7 @@
static void do_quit(void)
@@ -12,11 +12,11 @@ Index: ioemu/monitor.c
Index: ioemu/target-i386-dm/helper2.c
===================================================================
---- ioemu.orig/target-i386-dm/helper2.c 2006-08-17 19:49:40.116333768
+0100
-+++ ioemu/target-i386-dm/helper2.c 2006-08-17 19:49:44.491850141 +0100
-@@ -488,5 +488,25 @@
- xc_evtchn_notify(xce_handle, ioreq_local_port[send_vcpu]);
- }
+--- ioemu.orig/target-i386-dm/helper2.c 2006-12-08 01:26:08.000000000
+0000
++++ ioemu/target-i386-dm/helper2.c 2006-12-08 01:26:08.000000000 +0000
+@@ -507,5 +507,25 @@
+ /* Wait up to 10 msec. */
+ main_loop_wait(10);
}
+ destroy_hvm_domain();
return 0;
@@ -42,8 +42,8 @@ Index: ioemu/target-i386-dm/helper2.c
+}
Index: ioemu/vl.h
===================================================================
---- ioemu.orig/vl.h 2006-08-17 19:49:40.120333326 +0100
-+++ ioemu/vl.h 2006-08-17 19:49:44.492850031 +0100
+--- ioemu.orig/vl.h 2006-12-08 01:26:08.000000000 +0000
++++ ioemu/vl.h 2006-12-08 01:26:08.000000000 +0000
@@ -1190,4 +1190,7 @@
void kqemu_record_dump(void);
diff -r a510c94ceaa3 -r 749c399d73df tools/ioemu/patches/domain-reset
--- a/tools/ioemu/patches/domain-reset Tue Dec 12 09:56:06 2006 -0600
+++ b/tools/ioemu/patches/domain-reset Tue Dec 12 09:58:42 2006 -0600
@@ -1,7 +1,7 @@ Index: ioemu/target-i386-dm/helper2.c
Index: ioemu/target-i386-dm/helper2.c
===================================================================
---- ioemu.orig/target-i386-dm/helper2.c 2006-08-17 19:37:36.530505066
+0100
-+++ ioemu/target-i386-dm/helper2.c 2006-08-17 19:49:40.116333768 +0100
+--- ioemu.orig/target-i386-dm/helper2.c 2006-12-08 01:26:06.000000000
+0000
++++ ioemu/target-i386-dm/helper2.c 2006-12-08 01:26:08.000000000 +0000
@@ -127,6 +127,25 @@
/* called from main_cpu_reset */
void cpu_reset(CPUX86State *env)
@@ -28,7 +28,7 @@ Index: ioemu/target-i386-dm/helper2.c
}
void cpu_x86_close(CPUX86State *env)
-@@ -455,6 +474,10 @@
+@@ -479,6 +498,10 @@
if (vm_running) {
if (shutdown_requested)
break;
@@ -41,8 +41,8 @@ Index: ioemu/target-i386-dm/helper2.c
/* Wait up to 10 msec. */
Index: ioemu/vl.c
===================================================================
---- ioemu.orig/vl.c 2006-08-17 19:49:39.442408257 +0100
-+++ ioemu/vl.c 2006-08-17 19:49:40.119333436 +0100
+--- ioemu.orig/vl.c 2006-12-08 01:26:08.000000000 +0000
++++ ioemu/vl.c 2006-12-08 01:26:08.000000000 +0000
@@ -4948,7 +4948,7 @@
} QEMUResetEntry;
@@ -54,8 +54,8 @@ Index: ioemu/vl.c
Index: ioemu/vl.h
===================================================================
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|