# HG changeset patch
# User ssmith@xxxxxxxxxxxxxxxxxxxxx
# Node ID aabceba1dbc51de5eda57e066f8cdc662ed57e9b
# Parent 3e2b6365ba75f4756e4961f76239a82fe0b15f4a
# Parent 4ae4bdee00e66e15a427f67a2de3cf7bf6220445
Merge.
---
patches/linux-2.6.16.33/kexec-generic.patch | 213
patches/linux-2.6.16.33/linux-2.6.19-rc1-kexec-xen-i386.patch | 105
patches/linux-2.6.16.33/linux-2.6.19-rc1-kexec-xen-x86_64.patch | 209
xen/include/asm-ia64/linux/asm-generic/pgtable-nopud.h | 61
docs/xen-api/xenapi-datamodel.tex | 1931 +-
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/time-xen.c | 26
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/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/kernel/crash.c | 190
linux-2.6-xen-sparse/arch/x86_64/kernel/machine_kexec.c | 279
linux-2.6-xen-sparse/drivers/xen/core/evtchn.c | 62
linux-2.6-xen-sparse/drivers/xen/core/machine_kexec.c | 36
linux-2.6-xen-sparse/drivers/xen/core/smpboot.c | 72
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-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/linux/kexec.h | 152
linux-2.6-xen-sparse/kernel/kexec.c | 1105 +
patches/linux-2.6.16.33/series | 3
tools/examples/init.d/xendomains | 9
tools/examples/xm-config.xml | 43
tools/firmware/vmxassist/head.S | 2
tools/firmware/vmxassist/setup.c | 4
tools/firmware/vmxassist/vm86.c | 213
tools/ioemu/Makefile.target | 4
tools/ioemu/hw/tpm_tis.c | 12
tools/ioemu/hw/usb-hid.c | 19
tools/ioemu/hw/usb-uhci.c | 42
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 | 20
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_build.c | 215
tools/libxc/xc_load_elf.c | 103
tools/libxc/xc_private.c | 95
tools/libxc/xc_private.h | 20
tools/libxc/xenctrl.h | 46
tools/pygrub/Makefile | 4
tools/pygrub/src/pygrub | 6
tools/python/xen/lowlevel/xc/xc.c | 145
tools/python/xen/web/httpserver.py | 44
tools/python/xen/xend/XendAPI.py | 35
tools/python/xen/xend/XendBootloader.py | 16
tools/python/xen/xend/XendCheckpoint.py | 1
tools/python/xen/xend/XendConfig.py | 93
tools/python/xen/xend/XendDomain.py | 17
tools/python/xen/xend/XendDomainInfo.py | 91
tools/python/xen/xend/image.py | 12
tools/python/xen/xend/server/DevController.py | 6
tools/python/xen/xend/server/SrvDaemon.py | 2
tools/python/xen/xend/server/SrvDomain.py | 13
tools/python/xen/xend/server/SrvDomainDir.py | 42
tools/python/xen/xend/server/SrvServer.py | 24
tools/python/xen/xend/server/blkif.py | 2
tools/python/xen/xend/server/netif.py | 4
tools/python/xen/xm/XenAPI.py | 132
tools/python/xen/xm/create.py | 6
tools/python/xen/xm/main.py | 139
tools/python/xen/xm/migrate.py | 3
tools/python/xen/xm/new.py | 5
tools/python/xen/xm/shutdown.py | 4
tools/xm-test/ramdisk/Makefile.am | 8
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 | 2
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/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/x86/boot/x86_32.S | 9
xen/arch/x86/boot/x86_64.S | 9
xen/arch/x86/crash.c | 12
xen/arch/x86/domain.c | 4
xen/arch/x86/mm.c | 122
xen/arch/x86/mm/shadow/common.c | 338
xen/arch/x86/mm/shadow/multi.c | 23
xen/arch/x86/mm/shadow/private.h | 11
xen/arch/x86/setup.c | 11
xen/arch/x86/traps.c | 31
xen/arch/x86/x86_32/domain_page.c | 36
xen/arch/x86/x86_32/entry.S | 8
xen/arch/x86/x86_32/mm.c | 35
xen/arch/x86/x86_64/entry.S | 6
xen/arch/x86/x86_64/mm.c | 31
xen/common/domain.c | 6
xen/common/domctl.c | 2
xen/common/kexec.c | 15
xen/include/asm-ia64/config.h | 8
xen/include/asm-ia64/debugger.h | 2
xen/include/asm-ia64/domain.h | 8
xen/include/asm-ia64/event.h | 2
xen/include/asm-ia64/grant_table.h | 15
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 | 5
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-x86/domain.h | 11
xen/include/asm-x86/guest_access.h | 16
xen/include/asm-x86/page.h | 15
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_64/page.h | 3
xen/include/public/arch-ia64.h | 34
xen/include/public/domctl.h | 2
xen/include/public/kexec.h | 3
xen/include/public/memory.h | 17
xen/include/public/physdev.h | 1
xen/include/xen/domain_page.h | 9
xen/include/xen/multiboot.h | 35
257 files changed, 28175 insertions(+), 3762 deletions(-)
diff -r 3e2b6365ba75 -r aabceba1dbc5 docs/xen-api/xenapi-datamodel.tex
--- a/docs/xen-api/xenapi-datamodel.tex Mon Dec 11 11:16:29 2006 -0800
+++ b/docs/xen-api/xenapi-datamodel.tex Mon Dec 11 11:17:11 2006 -0800
@@ -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 \\
@@ -109,6 +109,7 @@ The following enumeration types are used
\hline
\end{longtable}
+\vspace{1cm}
\begin{longtable}{|ll|}
\hline
{\tt enum vdi\_type} & \\
@@ -130,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}
@@ -254,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 \\
@@ -273,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
@@ -333,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}
@@ -349,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}
@@ -368,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}
@@ -381,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}
@@ -400,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}
@@ -432,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}
@@ -445,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}
@@ -464,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}
@@ -496,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}
@@ -533,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}
@@ -631,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}
@@ -663,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}
@@ -697,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}
@@ -791,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}
@@ -862,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}
@@ -894,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}
@@ -941,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 \\
@@ -1335,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}
@@ -1348,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}
@@ -1367,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}
@@ -1380,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}
@@ -1399,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}
@@ -1412,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}
@@ -1431,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}
@@ -1444,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
@@ -1465,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}
@@ -1478,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}
@@ -1497,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}
@@ -1510,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
@@ -1531,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}
@@ -1544,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}
@@ -1563,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}
@@ -1576,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
@@ -1597,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}
@@ -1610,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}
@@ -1629,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}
@@ -1642,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
@@ -1660,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}
@@ -1676,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}
@@ -1695,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}
@@ -1708,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}
@@ -1727,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}
@@ -1740,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}
@@ -1759,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}
@@ -1772,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
@@ -1793,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}
@@ -1806,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}
@@ -1825,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}
@@ -1838,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}
@@ -1857,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}
@@ -1870,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
@@ -1891,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}
@@ -1904,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}
@@ -1923,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}
@@ -1936,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}
@@ -1955,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}
@@ -1968,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
@@ -1989,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}
@@ -2002,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}
@@ -2021,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}
@@ -2034,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
@@ -2055,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}
@@ -2068,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}
@@ -2084,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}
@@ -2100,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}
@@ -2119,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}
@@ -2132,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}
@@ -2151,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}
@@ -2164,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}
@@ -2183,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}
@@ -2196,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}
@@ -2212,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:}
@@ -2228,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
@@ -2262,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
@@ -2283,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}
@@ -2296,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}
@@ -2312,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:}
@@ -2328,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
@@ -2362,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
@@ -2383,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}
@@ -2396,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}
@@ -2415,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}
@@ -2428,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
@@ -2449,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}
@@ -2462,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}
@@ -2481,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}
@@ -2494,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
@@ -2515,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}
@@ -2528,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}
@@ -2547,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}
@@ -2560,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
@@ -2581,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}
@@ -2594,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}
@@ -2613,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}
@@ -2626,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
@@ -2660,7 +3080,7 @@ Get the consoles field of the given 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}
@@ -2679,7 +3099,7 @@ value of the field
\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}
@@ -2692,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}
@@ -2711,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}
@@ -2724,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}
@@ -2743,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}
@@ -2756,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}
@@ -2775,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}
@@ -2788,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}
@@ -2807,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}
@@ -2820,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
@@ -2841,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}
@@ -2854,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}
@@ -2873,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}
@@ -2886,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
@@ -2907,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}
@@ -2920,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}
@@ -2939,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}
@@ -2952,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
@@ -2973,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}
@@ -2986,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}
@@ -3005,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}
@@ -3018,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
@@ -3039,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}
@@ -3052,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}
@@ -3071,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}
@@ -3084,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
@@ -3105,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}
@@ -3118,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}
@@ -3137,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}
@@ -3150,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
@@ -3171,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}
@@ -3184,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}
@@ -3203,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}
@@ -3216,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
@@ -3237,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}
@@ -3250,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}
@@ -3269,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}
@@ -3282,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
@@ -3303,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}
@@ -3316,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}
@@ -3335,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}
@@ -3348,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
@@ -3369,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}
@@ -3382,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}
@@ -3401,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}
@@ -3414,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
@@ -3435,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}
@@ -3448,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}
@@ -3467,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}
@@ -3480,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
@@ -3501,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}
@@ -3514,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}
@@ -3533,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}
@@ -3546,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
@@ -3567,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}
@@ -3580,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}
@@ -3599,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}
@@ -3612,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}
@@ -3631,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}
@@ -3644,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}
@@ -3660,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:}
@@ -3676,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
@@ -3712,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
@@ -3733,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}
@@ -3765,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}
@@ -3778,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}
@@ -3797,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}
@@ -3829,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}
@@ -3861,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}
@@ -4064,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}
@@ -4077,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}
@@ -4096,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}
@@ -4109,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}
@@ -4128,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}
@@ -4141,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
@@ -4162,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}
@@ -4175,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}
@@ -4194,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}
@@ -4207,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
@@ -4228,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}
@@ -4241,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}
@@ -4260,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}
@@ -4273,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}
@@ -4292,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}
@@ -4305,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}
@@ -4324,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}
@@ -4337,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}
@@ -4356,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}
@@ -4388,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}
@@ -4401,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}
@@ -4420,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}
@@ -4452,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}
@@ -4484,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}
@@ -4539,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}
@@ -4552,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}
@@ -4571,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}
@@ -4584,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}
@@ -4603,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}
@@ -4616,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}
@@ -4635,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}
@@ -4648,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}
@@ -4667,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}
@@ -4680,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}
@@ -4699,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}
@@ -4712,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}
@@ -4731,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}
@@ -4744,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}
@@ -4763,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}
@@ -4776,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}
@@ -4795,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}
@@ -4827,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}
@@ -4840,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}
@@ -4859,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}
@@ -4891,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}
@@ -4966,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}
@@ -4979,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}
@@ -4998,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}
@@ -5011,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}
@@ -5030,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}
@@ -5043,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
@@ -5064,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}
@@ -5077,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}
@@ -5096,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}
@@ -5109,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
@@ -5130,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}
@@ -5143,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}
@@ -5162,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}
@@ -5175,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}
@@ -5194,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}
@@ -5207,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}
@@ -5226,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}
@@ -5239,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
@@ -5260,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}
@@ -5273,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}
@@ -5292,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}
@@ -5305,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
@@ -5326,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}
@@ -5358,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}
@@ -5371,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}
@@ -5390,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}
@@ -5422,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}
@@ -5454,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}
@@ -5511,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}
@@ -5524,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}
@@ -5543,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}
@@ -5556,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}
@@ -5575,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}
@@ -5588,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
@@ -5609,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}
@@ -5622,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}
@@ -5641,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}
@@ -5654,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
@@ -5675,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}
@@ -5688,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}
@@ -5707,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}
@@ -5720,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
@@ -5741,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}
@@ -5754,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}
@@ -5773,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}
@@ -5786,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
@@ -5807,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}
@@ -5820,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}
@@ -5839,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}
@@ -5852,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
@@ -5873,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}
@@ -5886,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}
@@ -5905,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}
@@ -5918,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
@@ -5939,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}
@@ -5952,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}
@@ -5971,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}
@@ -5984,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
@@ -6005,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}
@@ -6018,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}
@@ -6037,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}
@@ -6050,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}
@@ -6069,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}
@@ -6101,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}
@@ -6114,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}
@@ -6133,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}
@@ -6165,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}
@@ -6221,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}
@@ -6234,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}
@@ -6253,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}
@@ -6266,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}
@@ -6285,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}
@@ -6298,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
@@ -6319,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}
@@ -6332,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}
@@ -6351,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}
@@ -6364,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
@@ -6385,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}
@@ -6398,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}
@@ -6417,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}
@@ -6430,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
@@ -6451,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}
@@ -6464,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}
@@ -6483,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}
@@ -6496,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
@@ -6517,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}
@@ -6530,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}
@@ -6549,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}
@@ -6562,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
@@ -6583,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}
@@ -6596,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}
@@ -6615,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}
@@ -6628,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
@@ -6649,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}
@@ -6662,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}
@@ -6681,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}
@@ -6694,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}
@@ -6713,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}
@@ -6745,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}
@@ -6758,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}
@@ -6777,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}
@@ -6809,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}
@@ -6923,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}
@@ -6936,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}
@@ -6955,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}
@@ -6968,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}
@@ -6987,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}
@@ -7000,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
@@ -7021,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}
@@ -7034,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}
@@ -7053,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}
@@ -7066,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
@@ -7087,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}
@@ -7100,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}
@@ -7119,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}
@@ -7132,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}
@@ -7151,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}
@@ -7164,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}
@@ -7183,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}
@@ -7196,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}
@@ -7215,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}
@@ -7228,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}
@@ -7247,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}
@@ -7260,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}
@@ -7279,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}
@@ -7311,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}
@@ -7324,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}
@@ -7343,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}
@@ -7375,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}
@@ -7407,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}
@@ -7533,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}
@@ -7546,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}
@@ -7565,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}
@@ -7578,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}
@@ -7597,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}
@@ -7610,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
@@ -7631,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}
@@ -7644,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}
@@ -7663,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}
@@ -7676,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
@@ -7697,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}
@@ -7710,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}
@@ -7729,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}
@@ -7742,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
@@ -7763,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}
@@ -7776,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}
@@ -7795,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}
@@ -7808,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}
@@ -7827,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}
@@ -7840,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
@@ -7861,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}
@@ -7874,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}
@@ -7893,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}
@@ -7906,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}
@@ -7925,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}
@@ -7938,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}
@@ -7957,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}
@@ -7970,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}
@@ -7989,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}
@@ -8002,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}
@@ -8021,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}
@@ -8034,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}
@@ -8053,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}
@@ -8066,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
@@ -8087,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}
@@ -8100,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}
@@ -8119,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}
@@ -8132,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
@@ -8153,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}
@@ -8185,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}
@@ -8198,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}
@@ -8217,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}
@@ -8249,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}
@@ -8281,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}
@@ -8327,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) \\
@@ -8370,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}
@@ -8383,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}
@@ -8402,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}
@@ -8415,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}
@@ -8434,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}
@@ -8447,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
@@ -8468,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}
@@ -8481,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}
@@ -8500,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}
@@ -8513,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
@@ -8534,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}
@@ -8547,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}
@@ -8566,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}
@@ -8579,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
@@ -8600,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}
@@ -8613,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}
@@ -8632,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}
@@ -8645,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
@@ -8663,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}
@@ -8679,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}
@@ -8698,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}
@@ -8711,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
@@ -8732,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}
@@ -8745,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}
@@ -8764,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}
@@ -8777,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}
@@ -8796,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}
@@ -8828,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}
@@ -8841,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}
@@ -8860,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}
@@ -8892,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}
@@ -8944,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}
@@ -8957,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}
@@ -8976,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}
@@ -8989,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}
@@ -9008,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}
@@ -9021,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}
@@ -9040,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}
@@ -9053,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}
@@ -9072,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}
@@ -9085,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}
@@ -9104,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}
@@ -9136,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}
@@ -9149,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}
@@ -9168,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}
@@ -9200,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}
@@ -9360,7 +9881,7 @@ Destroy the specified console instance.
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt console ref } & self & object instance \\ \hline
+{\tt console ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -9392,7 +9913,7 @@ Get the uuid field of the given console.
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt console ref } & self & object instance \\ \hline
+{\tt console ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -9424,7 +9945,7 @@ Get the protocol field of the given cons
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt console ref } & self & object instance \\ \hline
+{\tt console ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -9456,7 +9977,7 @@ Get the uri field of the given console.
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt console ref } & self & object instance \\ \hline
+{\tt console ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -9488,7 +10009,7 @@ Get the VM field of the given console.
\begin{tabular}{|c|c|p{7cm}|}
\hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
-{\tt console ref } & self & object instance \\ \hline
+{\tt console ref } & self & reference to the object \\ \hline
\end{tabular}
@@ -9525,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}
@@ -9538,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}
@@ -9557,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}
@@ -9570,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}
@@ -9589,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}
@@ -9602,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}
@@ -9621,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}
@@ -9634,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
@@ -9655,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}
@@ -9687,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}
@@ -9700,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}
@@ -9719,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}
@@ -9751,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}
@@ -9832,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}
@@ -9864,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}
@@ -9877,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}
@@ -9896,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}
@@ -9928,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 3e2b6365ba75 -r aabceba1dbc5
linux-2.6-xen-sparse/arch/i386/kernel/time-xen.c
--- a/linux-2.6-xen-sparse/arch/i386/kernel/time-xen.c Mon Dec 11 11:16:29
2006 -0800
+++ b/linux-2.6-xen-sparse/arch/i386/kernel/time-xen.c Mon Dec 11 11:17:11
2006 -0800
@@ -1047,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);
@@ -1062,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 3e2b6365ba75 -r aabceba1dbc5 linux-2.6-xen-sparse/arch/ia64/Kconfig
--- a/linux-2.6-xen-sparse/arch/ia64/Kconfig Mon Dec 11 11:16:29 2006 -0800
+++ b/linux-2.6-xen-sparse/arch/ia64/Kconfig Mon Dec 11 11:17:11 2006 -0800
@@ -533,9 +533,6 @@ config XEN_SKBUFF
config XEN_SKBUFF
default y
-config XEN_DEVMEM
- default n
-
config XEN_REBOOT
default y
diff -r 3e2b6365ba75 -r aabceba1dbc5
linux-2.6-xen-sparse/arch/ia64/kernel/entry.S
--- a/linux-2.6-xen-sparse/arch/ia64/kernel/entry.S Mon Dec 11 11:16:29
2006 -0800
+++ b/linux-2.6-xen-sparse/arch/ia64/kernel/entry.S Mon Dec 11 11:17:11
2006 -0800
@@ -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 3e2b6365ba75 -r aabceba1dbc5
linux-2.6-xen-sparse/arch/ia64/kernel/iosapic.c
--- a/linux-2.6-xen-sparse/arch/ia64/kernel/iosapic.c Mon Dec 11 11:16:29
2006 -0800
+++ b/linux-2.6-xen-sparse/arch/ia64/kernel/iosapic.c Mon Dec 11 11:17:11
2006 -0800
@@ -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 3e2b6365ba75 -r aabceba1dbc5
linux-2.6-xen-sparse/arch/ia64/kernel/irq_ia64.c
--- a/linux-2.6-xen-sparse/arch/ia64/kernel/irq_ia64.c Mon Dec 11 11:16:29
2006 -0800
+++ b/linux-2.6-xen-sparse/arch/ia64/kernel/irq_ia64.c Mon Dec 11 11:17:11
2006 -0800
@@ -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 3e2b6365ba75 -r aabceba1dbc5 linux-2.6-xen-sparse/arch/ia64/xen/Makefile
--- a/linux-2.6-xen-sparse/arch/ia64/xen/Makefile Mon Dec 11 11:16:29
2006 -0800
+++ b/linux-2.6-xen-sparse/arch/ia64/xen/Makefile Mon Dec 11 11:17:11
2006 -0800
@@ -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 3e2b6365ba75 -r aabceba1dbc5
linux-2.6-xen-sparse/arch/ia64/xen/hypervisor.c
--- a/linux-2.6-xen-sparse/arch/ia64/xen/hypervisor.c Mon Dec 11 11:16:29
2006 -0800
+++ b/linux-2.6-xen-sparse/arch/ia64/xen/hypervisor.c Mon Dec 11 11:17:11
2006 -0800
@@ -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 3e2b6365ba75 -r aabceba1dbc5
linux-2.6-xen-sparse/arch/ia64/xen/xcom_hcall.c
--- a/linux-2.6-xen-sparse/arch/ia64/xen/xcom_hcall.c Mon Dec 11 11:16:29
2006 -0800
+++ b/linux-2.6-xen-sparse/arch/ia64/xen/xcom_hcall.c Mon Dec 11 11:17:11
2006 -0800
@@ -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 3e2b6365ba75 -r aabceba1dbc5
linux-2.6-xen-sparse/arch/ia64/xen/xcom_mini.c
--- a/linux-2.6-xen-sparse/arch/ia64/xen/xcom_mini.c Mon Dec 11 11:16:29
2006 -0800
+++ b/linux-2.6-xen-sparse/arch/ia64/xen/xcom_mini.c Mon Dec 11 11:17:11
2006 -0800
@@ -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 3e2b6365ba75 -r aabceba1dbc5
linux-2.6-xen-sparse/arch/ia64/xen/xcom_privcmd.c
--- a/linux-2.6-xen-sparse/arch/ia64/xen/xcom_privcmd.c Mon Dec 11 11:16:29
2006 -0800
+++ b/linux-2.6-xen-sparse/arch/ia64/xen/xcom_privcmd.c Mon Dec 11 11:17:11
2006 -0800
@@ -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 3e2b6365ba75 -r aabceba1dbc5
linux-2.6-xen-sparse/arch/ia64/xen/xenentry.S
--- a/linux-2.6-xen-sparse/arch/ia64/xen/xenentry.S Mon Dec 11 11:16:29
2006 -0800
+++ b/linux-2.6-xen-sparse/arch/ia64/xen/xenentry.S Mon Dec 11 11:17:11
2006 -0800
@@ -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 3e2b6365ba75 -r aabceba1dbc5
linux-2.6-xen-sparse/drivers/xen/core/evtchn.c
--- a/linux-2.6-xen-sparse/drivers/xen/core/evtchn.c Mon Dec 11 11:16:29
2006 -0800
+++ b/linux-2.6-xen-sparse/drivers/xen/core/evtchn.c Mon Dec 11 11:17:11
2006 -0800
@@ -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 3e2b6365ba75 -r aabceba1dbc5
linux-2.6-xen-sparse/drivers/xen/core/machine_kexec.c
--- a/linux-2.6-xen-sparse/drivers/xen/core/machine_kexec.c Mon Dec 11
11:16:29 2006 -0800
+++ b/linux-2.6-xen-sparse/drivers/xen/core/machine_kexec.c Mon Dec 11
11:17:11 2006 -0800
@@ -20,7 +20,7 @@ void xen_machine_kexec_setup_resources(v
{
xen_kexec_range_t range;
struct resource *res;
- int err, k = 0;
+ int k = 0;
if (!is_initial_xendomain())
return;
@@ -32,26 +32,21 @@ void xen_machine_kexec_setup_resources(v
range.range = KEXEC_RANGE_MA_CPU;
range.nr = k;
- /*
- * Anything other than EINVAL or success indictates
- * that we are not running on a hypervisor which
- * supports kexec.
- */
- err = HYPERVISOR_kexec_op(KEXEC_CMD_kexec_get_range, &range);
- if (err == -EINVAL)
+ if(HYPERVISOR_kexec_op(KEXEC_CMD_kexec_get_range, &range))
break;
- else if (err)
- return;
k++;
}
+
+ if (k == 0)
+ return;
xen_max_nr_phys_cpus = k;
/* allocate xen_phys_cpus */
xen_phys_cpus = alloc_bootmem_low(k * sizeof(struct resource));
- BUG_ON(!xen_phys_cpus);
+ BUG_ON(xen_phys_cpus == NULL);
/* fill in xen_phys_cpus with per-cpu crash note information */
@@ -61,7 +56,7 @@ void xen_machine_kexec_setup_resources(v
range.nr = k;
if (HYPERVISOR_kexec_op(KEXEC_CMD_kexec_get_range, &range))
- BUG();
+ goto err;
res = xen_phys_cpus + k;
@@ -78,7 +73,7 @@ void xen_machine_kexec_setup_resources(v
range.range = KEXEC_RANGE_MA_XEN;
if (HYPERVISOR_kexec_op(KEXEC_CMD_kexec_get_range, &range))
- BUG();
+ goto err;
xen_hypervisor_res.name = "Hypervisor code and data";
xen_hypervisor_res.start = range.start;
@@ -91,12 +86,23 @@ void xen_machine_kexec_setup_resources(v
range.range = KEXEC_RANGE_MA_CRASH;
if (HYPERVISOR_kexec_op(KEXEC_CMD_kexec_get_range, &range))
- BUG();
+ return;
if (range.size) {
crashk_res.start = range.start;
crashk_res.end = range.start + range.size - 1;
}
+
+ return;
+
+ err:
+ /*
+ * It isn't possible to free xen_phys_cpus this early in the
+ * boot. Since failure at this stage is unexpected and the
+ * amount is small we leak the memory.
+ */
+ xen_max_nr_phys_cpus = 0;
+ return;
}
void xen_machine_kexec_register_resources(struct resource *res)
@@ -157,7 +163,7 @@ void xen_machine_kexec_unload(struct kim
* stop all CPUs and kexec. That is it combines machine_shutdown()
* and machine_kexec() in Linux kexec terms.
*/
-NORET_TYPE void xen_machine_kexec(struct kimage *image)
+NORET_TYPE void machine_kexec(struct kimage *image)
{
xen_kexec_exec_t xke;
diff -r 3e2b6365ba75 -r aabceba1dbc5
linux-2.6-xen-sparse/drivers/xen/core/smpboot.c
--- a/linux-2.6-xen-sparse/drivers/xen/core/smpboot.c Mon Dec 11 11:16:29
2006 -0800
+++ b/linux-2.6-xen-sparse/drivers/xen/core/smpboot.c Mon Dec 11 11:17:11
2006 -0800
@@ -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 3e2b6365ba75 -r aabceba1dbc5
linux-2.6-xen-sparse/drivers/xen/netback/netback.c
--- a/linux-2.6-xen-sparse/drivers/xen/netback/netback.c Mon Dec 11
11:16:29 2006 -0800
+++ b/linux-2.6-xen-sparse/drivers/xen/netback/netback.c Mon Dec 11
11:17:11 2006 -0800
@@ -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 3e2b6365ba75 -r aabceba1dbc5
linux-2.6-xen-sparse/drivers/xen/xenbus/Makefile
--- a/linux-2.6-xen-sparse/drivers/xen/xenbus/Makefile Mon Dec 11 11:16:29
2006 -0800
+++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/Makefile Mon Dec 11 11:17:11
2006 -0800
@@ -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 3e2b6365ba75 -r aabceba1dbc5
linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_client.c
--- a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_client.c Mon Dec 11
11:16:29 2006 -0800
+++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_client.c Mon Dec 11
11:17:11 2006 -0800
@@ -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 3e2b6365ba75 -r aabceba1dbc5
linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_comms.c
--- a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_comms.c Mon Dec 11
11:16:29 2006 -0800
+++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_comms.c Mon Dec 11
11:17:11 2006 -0800
@@ -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 3e2b6365ba75 -r aabceba1dbc5
linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_comms.h
--- a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_comms.h Mon Dec 11
11:16:29 2006 -0800
+++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_comms.h Mon Dec 11
11:17:11 2006 -0800
@@ -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 3e2b6365ba75 -r aabceba1dbc5
linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.h
--- a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.h Mon Dec 11
11:16:29 2006 -0800
+++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.h Mon Dec 11
11:17:11 2006 -0800
@@ -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 3e2b6365ba75 -r aabceba1dbc5
linux-2.6-xen-sparse/include/asm-ia64/hypercall.h
--- a/linux-2.6-xen-sparse/include/asm-ia64/hypercall.h Mon Dec 11 11:16:29
2006 -0800
+++ b/linux-2.6-xen-sparse/include/asm-ia64/hypercall.h Mon Dec 11 11:17:11
2006 -0800
@@ -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 3e2b6365ba75 -r aabceba1dbc5 linux-2.6-xen-sparse/include/asm-ia64/io.h
--- a/linux-2.6-xen-sparse/include/asm-ia64/io.h Mon Dec 11 11:16:29
2006 -0800
+++ b/linux-2.6-xen-sparse/include/asm-ia64/io.h Mon Dec 11 11:17:11
2006 -0800
@@ -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 3e2b6365ba75 -r aabceba1dbc5 linux-2.6-xen-sparse/include/asm-ia64/irq.h
--- a/linux-2.6-xen-sparse/include/asm-ia64/irq.h Mon Dec 11 11:16:29
2006 -0800
+++ b/linux-2.6-xen-sparse/include/asm-ia64/irq.h Mon Dec 11 11:17:11
2006 -0800
@@ -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 3e2b6365ba75 -r aabceba1dbc5
linux-2.6-xen-sparse/include/asm-ia64/privop.h
--- a/linux-2.6-xen-sparse/include/asm-ia64/privop.h Mon Dec 11 11:16:29
2006 -0800
+++ b/linux-2.6-xen-sparse/include/asm-ia64/privop.h Mon Dec 11 11:17:11
2006 -0800
@@ -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 3e2b6365ba75 -r aabceba1dbc5
linux-2.6-xen-sparse/include/asm-ia64/xen/privop.h
--- a/linux-2.6-xen-sparse/include/asm-ia64/xen/privop.h Mon Dec 11
11:16:29 2006 -0800
+++ b/linux-2.6-xen-sparse/include/asm-ia64/xen/privop.h Mon Dec 11
11:17:11 2006 -0800
@@ -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 3e2b6365ba75 -r aabceba1dbc5
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 Mon Dec 11
11:16:29 2006 -0800
+++ b/linux-2.6-xen-sparse/include/asm-ia64/xen/xcom_hcall.h Mon Dec 11
11:17:11 2006 -0800
@@ -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 3e2b6365ba75 -r aabceba1dbc5 patches/linux-2.6.16.33/series
--- a/patches/linux-2.6.16.33/series Mon Dec 11 11:16:29 2006 -0800
+++ b/patches/linux-2.6.16.33/series Mon Dec 11 11:17:11 2006 -0800
@@ -1,12 +1,9 @@ kexec-generic.patch
-kexec-generic.patch
git-2efe55a9cec8418f0e0cde3dc3787a42fddc4411.patch
git-2a8a3d5b65e86ec1dfef7d268c64a909eab94af7.patch
git-3566561bfadffcb5dbc85d576be80c0dbf2cccc9.patch
linux-2.6.19-rc1-kexec-move_segment_code-i386.patch
-linux-2.6.19-rc1-kexec-xen-i386.patch
git-4bfaaef01a1badb9e8ffb0c0a37cd2379008d21f.patch
linux-2.6.19-rc1-kexec-move_segment_code-x86_64.patch
-linux-2.6.19-rc1-kexec-xen-x86_64.patch
blktap-aio-16_03_06.patch
device_bind.patch
fix-hz-suspend.patch
diff -r 3e2b6365ba75 -r aabceba1dbc5 tools/examples/init.d/xendomains
--- a/tools/examples/init.d/xendomains Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/examples/init.d/xendomains Mon Dec 11 11:17:11 2006 -0800
@@ -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 3e2b6365ba75 -r aabceba1dbc5 tools/firmware/vmxassist/head.S
--- a/tools/firmware/vmxassist/head.S Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/firmware/vmxassist/head.S Mon Dec 11 11:17:11 2006 -0800
@@ -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 3e2b6365ba75 -r aabceba1dbc5 tools/firmware/vmxassist/setup.c
--- a/tools/firmware/vmxassist/setup.c Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/firmware/vmxassist/setup.c Mon Dec 11 11:17:11 2006 -0800
@@ -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 */
@@ -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 3e2b6365ba75 -r aabceba1dbc5 tools/firmware/vmxassist/vm86.c
--- a/tools/firmware/vmxassist/vm86.c Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/firmware/vmxassist/vm86.c Mon Dec 11 11:17:11 2006 -0800
@@ -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);
@@ -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);
}
@@ -988,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 */
@@ -1029,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;
@@ -1049,25 +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);
- } else
+ if (mode != VM86_REAL_TO_PROTECTED)
panic("unexpected protected mode transition");
+ protected_mode(regs);
break;
}
@@ -1081,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");
}
@@ -1110,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");
}
@@ -1151,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");
}
@@ -1259,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);
@@ -1386,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:"));
@@ -1412,7 +1389,7 @@ opcode(struct regs *regs)
prefix |= DATA32;
continue;
- case 0x67:
+ case 0x67:
TRACE((regs, regs->eip - eip, "addr32"));
prefix |= ADDR32;
continue;
@@ -1421,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);
@@ -1447,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))
@@ -1459,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"));
@@ -1487,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);
@@ -1521,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;
}
@@ -1567,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;
}
@@ -1579,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;
}
@@ -1596,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;
@@ -1619,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 */
@@ -1682,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);
@@ -1702,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 3e2b6365ba75 -r aabceba1dbc5 tools/ioemu/Makefile.target
--- a/tools/ioemu/Makefile.target Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/ioemu/Makefile.target Mon Dec 11 11:17:11 2006 -0800
@@ -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 3e2b6365ba75 -r aabceba1dbc5 tools/ioemu/hw/tpm_tis.c
--- a/tools/ioemu/hw/tpm_tis.c Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/ioemu/hw/tpm_tis.c Mon Dec 11 11:17:11 2006 -0800
@@ -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 3e2b6365ba75 -r aabceba1dbc5 tools/ioemu/hw/usb-hid.c
--- a/tools/ioemu/hw/usb-hid.c Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/ioemu/hw/usb-hid.c Mon Dec 11 11:17:11 2006 -0800
@@ -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 3e2b6365ba75 -r aabceba1dbc5 tools/ioemu/hw/usb-uhci.c
--- a/tools/ioemu/hw/usb-uhci.c Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/ioemu/hw/usb-uhci.c Mon Dec 11 11:17:11 2006 -0800
@@ -424,12 +424,10 @@ static int uhci_handle_td(UHCIState *s,
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 3e2b6365ba75 -r aabceba1dbc5 tools/ioemu/patches/acpi-support
--- a/tools/ioemu/patches/acpi-support Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/ioemu/patches/acpi-support Mon Dec 11 11:17:11 2006 -0800
@@ -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 3e2b6365ba75 -r aabceba1dbc5 tools/ioemu/patches/acpi-timer-support
--- a/tools/ioemu/patches/acpi-timer-support Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/ioemu/patches/acpi-timer-support Mon Dec 11 11:17:11 2006 -0800
@@ -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 3e2b6365ba75 -r aabceba1dbc5 tools/ioemu/patches/domain-destroy
--- a/tools/ioemu/patches/domain-destroy Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/ioemu/patches/domain-destroy Mon Dec 11 11:17:11 2006 -0800
@@ -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 3e2b6365ba75 -r aabceba1dbc5 tools/ioemu/patches/domain-reset
--- a/tools/ioemu/patches/domain-reset Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/ioemu/patches/domain-reset Mon Dec 11 11:17:11 2006 -0800
@@ -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
===================================================================
---- ioemu.orig/vl.h 2006-08-17 19:47:32.680418959 +0100
-+++ ioemu/vl.h 2006-08-17 19:49:40.120333326 +0100
+--- ioemu.orig/vl.h 2006-12-08 01:26:07.000000000 +0000
++++ ioemu/vl.h 2006-12-08 01:26:08.000000000 +0000
@@ -131,6 +131,7 @@
void qemu_register_reset(QEMUResetHandler *func, void *opaque);
diff -r 3e2b6365ba75 -r aabceba1dbc5 tools/ioemu/patches/domain-timeoffset
--- a/tools/ioemu/patches/domain-timeoffset Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/ioemu/patches/domain-timeoffset Mon Dec 11 11:17:11 2006 -0800
@@ -1,7 +1,7 @@ Index: ioemu/hw/mc146818rtc.c
Index: ioemu/hw/mc146818rtc.c
===================================================================
---- ioemu.orig/hw/mc146818rtc.c 2006-10-24 14:45:21.000000000 +0100
-+++ ioemu/hw/mc146818rtc.c 2006-10-24 14:45:39.000000000 +0100
+--- ioemu.orig/hw/mc146818rtc.c 2006-12-08 18:36:31.000000000 +0000
++++ ioemu/hw/mc146818rtc.c 2006-12-08 18:36:36.000000000 +0000
@@ -178,10 +178,27 @@
}
}
@@ -46,8 +46,8 @@ Index: ioemu/hw/mc146818rtc.c
static void rtc_copy_date(RTCState *s)
Index: ioemu/hw/pc.c
===================================================================
---- ioemu.orig/hw/pc.c 2006-10-24 14:45:38.000000000 +0100
-+++ ioemu/hw/pc.c 2006-10-24 14:45:39.000000000 +0100
+--- ioemu.orig/hw/pc.c 2006-12-08 18:36:35.000000000 +0000
++++ ioemu/hw/pc.c 2006-12-08 18:36:36.000000000 +0000
@@ -159,7 +159,7 @@
}
@@ -117,8 +117,8 @@ Index: ioemu/hw/pc.c
QEMUMachine pc_machine = {
Index: ioemu/vl.c
===================================================================
---- ioemu.orig/vl.c 2006-10-24 14:45:38.000000000 +0100
-+++ ioemu/vl.c 2006-10-24 14:45:39.000000000 +0100
+--- ioemu.orig/vl.c 2006-12-08 18:36:35.000000000 +0000
++++ ioemu/vl.c 2006-12-08 18:36:36.000000000 +0000
@@ -163,6 +163,8 @@
int xc_handle;
@@ -152,7 +152,7 @@ Index: ioemu/vl.c
{ NULL },
};
-@@ -6248,6 +6253,9 @@
+@@ -6232,6 +6237,9 @@
vcpus = atoi(optarg);
fprintf(logfile, "qemu: the number of cpus is %d\n", vcpus);
break;
@@ -162,7 +162,7 @@ Index: ioemu/vl.c
}
}
}
-@@ -6507,7 +6515,8 @@
+@@ -6492,7 +6500,8 @@
machine->init(ram_size, vga_ram_size, boot_device,
ds, fd_filename, snapshot,
@@ -174,8 +174,8 @@ Index: ioemu/vl.c
if (usb_enabled) {
Index: ioemu/vl.h
===================================================================
---- ioemu.orig/vl.h 2006-10-24 14:45:38.000000000 +0100
-+++ ioemu/vl.h 2006-10-24 14:45:39.000000000 +0100
+--- ioemu.orig/vl.h 2006-12-08 18:36:35.000000000 +0000
++++ ioemu/vl.h 2006-12-08 18:36:36.000000000 +0000
@@ -576,7 +576,7 @@
int boot_device,
DisplayState *ds, const char **fd_filename, int snapshot,
diff -r 3e2b6365ba75 -r aabceba1dbc5 tools/ioemu/patches/hypervisor-pit
--- a/tools/ioemu/patches/hypervisor-pit Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/ioemu/patches/hypervisor-pit Mon Dec 11 11:17:11 2006 -0800
@@ -1,8 +1,8 @@ Index: ioemu/Makefile.target
Index: ioemu/Makefile.target
===================================================================
---- ioemu.orig/Makefile.target 2006-08-17 19:49:33.813030472 +0100
-+++ ioemu/Makefile.target 2006-08-17 19:49:50.228216099 +0100
-@@ -354,7 +354,7 @@
+--- ioemu.orig/Makefile.target 2006-12-08 01:41:12.000000000 +0000
++++ ioemu/Makefile.target 2006-12-08 01:41:12.000000000 +0000
+@@ -355,7 +355,7 @@
ifeq ($(TARGET_BASE_ARCH), i386)
# Hardware support
VL_OBJS+= ide.o pckbd.o ps2.o vga.o $(SOUND_HW) dma.o $(AUDIODRV)
@@ -13,8 +13,8 @@ Index: ioemu/Makefile.target
DEFINES += -DHAS_AUDIO
Index: ioemu/hw/pc.c
===================================================================
---- ioemu.orig/hw/pc.c 2006-08-17 19:49:35.507843144 +0100
-+++ ioemu/hw/pc.c 2006-08-17 19:49:50.229215988 +0100
+--- ioemu.orig/hw/pc.c 2006-12-08 01:41:12.000000000 +0000
++++ ioemu/hw/pc.c 2006-12-08 01:41:12.000000000 +0000
@@ -38,7 +38,9 @@
static fdctrl_t *floppy_controller;
@@ -38,8 +38,8 @@ Index: ioemu/hw/pc.c
pic_set_alt_irq_func(isa_pic, ioapic_set_irq, ioapic);
Index: ioemu/vl.c
===================================================================
---- ioemu.orig/vl.c 2006-08-17 19:49:48.566399780 +0100
-+++ ioemu/vl.c 2006-08-17 19:49:50.231215767 +0100
+--- ioemu.orig/vl.c 2006-12-08 01:41:12.000000000 +0000
++++ ioemu/vl.c 2006-12-08 01:41:12.000000000 +0000
@@ -5570,6 +5570,7 @@
#ifdef HAS_AUDIO
diff -r 3e2b6365ba75 -r aabceba1dbc5 tools/ioemu/patches/hypervisor-rtc
--- a/tools/ioemu/patches/hypervisor-rtc Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/ioemu/patches/hypervisor-rtc Mon Dec 11 11:17:11 2006 -0800
@@ -5,9 +5,11 @@
[HVM] Move RTC emulation into the hypervisor.
Signed-off-by: Xiaowei Yang <xiaowei.yang@xxxxxxxxx>
---- ioemu/Makefile.target Wed Oct 18 18:13:57 2006 +0100
-+++ ioemu/Makefile.target Wed Oct 18 18:35:21 2006 +0100
-@@ -294,7 +294,11 @@ endif
+Index: ioemu/Makefile.target
+===================================================================
+--- ioemu.orig/Makefile.target 2006-12-08 01:41:15.000000000 +0000
++++ ioemu/Makefile.target 2006-12-08 01:41:15.000000000 +0000
+@@ -295,7 +295,11 @@
endif
# qemu-dm objects
@@ -19,7 +21,7 @@ Signed-off-by: Xiaowei Yang <xiaowei.yan
all: $(PROGS)
-@@ -354,7 +358,11 @@ ifeq ($(TARGET_BASE_ARCH), i386)
+@@ -355,7 +359,11 @@
ifeq ($(TARGET_BASE_ARCH), i386)
# Hardware support
VL_OBJS+= ide.o pckbd.o ps2.o vga.o $(SOUND_HW) dma.o $(AUDIODRV)
@@ -31,8 +33,10 @@ Signed-off-by: Xiaowei Yang <xiaowei.yan
VL_OBJS+= cirrus_vga.o mixeng.o parallel.o acpi.o piix_pci.o
VL_OBJS+= usb-uhci.o
VL_OBJS+= piix4acpi.o
---- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ ioemu/target-i386-dm/rtc-dm.c Wed Oct 18 18:35:21 2006 +0100
+Index: ioemu/target-i386-dm/rtc-dm.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ ioemu/target-i386-dm/rtc-dm.c 2006-12-08 01:41:15.000000000 +0000
@@ -0,0 +1,107 @@
+/*
+ * QEMU MC146818 RTC emulation
diff -r 3e2b6365ba75 -r aabceba1dbc5 tools/ioemu/patches/ioemu-ia64
--- a/tools/ioemu/patches/ioemu-ia64 Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/ioemu/patches/ioemu-ia64 Mon Dec 11 11:17:11 2006 -0800
@@ -1,7 +1,7 @@ Index: ioemu/hw/iommu.c
Index: ioemu/hw/iommu.c
===================================================================
---- ioemu.orig/hw/iommu.c 2006-08-17 19:37:36.791476068 +0100
-+++ ioemu/hw/iommu.c 2006-08-17 19:48:27.357375720 +0100
+--- ioemu.orig/hw/iommu.c 2006-12-08 02:02:07.000000000 +0000
++++ ioemu/hw/iommu.c 2006-12-08 02:02:34.000000000 +0000
@@ -82,7 +82,11 @@
#define IOPTE_VALID 0x00000002 /* IOPTE is valid */
#define IOPTE_WAZ 0x00000001 /* Write as zeros */
@@ -16,8 +16,8 @@ Index: ioemu/hw/iommu.c
Index: ioemu/cpu-all.h
===================================================================
---- ioemu.orig/cpu-all.h 2006-08-17 19:37:36.791476068 +0100
-+++ ioemu/cpu-all.h 2006-08-17 19:48:27.358375609 +0100
+--- ioemu.orig/cpu-all.h 2006-12-08 02:02:07.000000000 +0000
++++ ioemu/cpu-all.h 2006-12-08 02:02:34.000000000 +0000
@@ -835,6 +835,31 @@
:"=m" (*(volatile long *)addr)
:"dIr" (nr));
@@ -52,36 +52,36 @@ Index: ioemu/cpu-all.h
/* memory API */
Index: ioemu/vl.c
===================================================================
---- ioemu.orig/vl.c 2006-08-17 19:47:08.538087284 +0100
-+++ ioemu/vl.c 2006-08-17 19:57:50.666108706 +0100
-@@ -6144,6 +6144,11 @@
-
- xc_handle = xc_interface_open();
+--- ioemu.orig/vl.c 2006-12-08 02:02:28.000000000 +0000
++++ ioemu/vl.c 2006-12-08 02:02:34.000000000 +0000
+@@ -6137,6 +6137,11 @@
+ exit(1);
+ }
+#if defined (__ia64__)
+ if (ram_size > MMIO_START)
+ ram_size += 1 * MEM_G; /* skip 3G-4G MMIO, LEGACY_IO_SPACE etc. */
+#endif
+
- nr_pages = ram_size/PAGE_SIZE;
- tmp_nr_pages = nr_pages;
+ /* init the memory */
+ phys_ram_size = ram_size + vga_ram_size + bios_size;
@@ -6161,6 +6166,7 @@
exit(-1);
}
+#if defined(__i386__) || defined(__x86_64__)
- if (xc_get_pfn_list(xc_handle, domid, page_array, nr_pages) != nr_pages) {
- fprintf(logfile, "xc_get_pfn_list returned error %d\n", errno);
- exit(-1);
-@@ -6191,6 +6197,41 @@
+ for ( i = 0; i < tmp_nr_pages; i++)
+ page_array[i] = i;
+
+@@ -6185,6 +6191,48 @@
free(page_array);
+#elif defined(__ia64__)
+
+ if (xc_ia64_get_pfn_list(xc_handle, domid, page_array,
-+ IO_PAGE_START >> PAGE_SHIFT, 1) != 1) {
++ IO_PAGE_START >> PAGE_SHIFT, 3) != 3) {
+ fprintf(logfile, "xc_ia64_get_pfn_list returned error %d\n", errno);
+ exit(-1);
+ }
@@ -92,6 +92,12 @@ Index: ioemu/vl.c
+
+ fprintf(logfile, "shared page at pfn:%lx, mfn: %016lx\n",
+ IO_PAGE_START >> PAGE_SHIFT, page_array[0]);
++
++ buffered_io_page =xc_map_foreign_range(xc_handle, domid, PAGE_SIZE,
++ PROT_READ|PROT_WRITE,
++ page_array[2]);
++ fprintf(logfile, "Buffered IO page at pfn:%lx, mfn: %016lx\n",
++ BUFFER_IO_PAGE_START >> PAGE_SHIFT, page_array[2]);
+
+ if (xc_ia64_get_pfn_list(xc_handle, domid,
+ page_array, 0, nr_pages) != nr_pages) {
@@ -100,9 +106,9 @@ Index: ioemu/vl.c
+ }
+
+ if (ram_size > MMIO_START) {
-+ for (i = 0 ; i < MEM_G >> PAGE_SHIFT; i++)
-+ page_array[MMIO_START >> PAGE_SHIFT + i] =
-+ page_array[IO_PAGE_START >> PAGE_SHIFT + 1];
++ for (i = 0 ; i < (MEM_G >> PAGE_SHIFT); i++)
++ page_array[(MMIO_START >> PAGE_SHIFT) + i] =
++ page_array[(IO_PAGE_START >> PAGE_SHIFT) + 1];
+ }
+
+ phys_ram_base = xc_map_foreign_batch(xc_handle, domid,
@@ -112,52 +118,15 @@ Index: ioemu/vl.c
+ fprintf(logfile, "xc_map_foreign_batch returned error %d\n", errno);
+ exit(-1);
+ }
++ free(page_array);
+#endif
#else /* !CONFIG_DM */
phys_ram_base = qemu_vmalloc(phys_ram_size);
-Index: ioemu/target-i386-dm/exec-dm.c
-===================================================================
---- ioemu.orig/target-i386-dm/exec-dm.c 2006-08-17 19:37:36.792475957
+0100
-+++ ioemu/target-i386-dm/exec-dm.c 2006-08-17 19:48:27.361375278 +0100
-@@ -341,6 +341,23 @@
- return io_mem_read[io_index >> IO_MEM_SHIFT];
- }
-
-+#ifdef __ia64__
-+/* IA64 has seperate I/D cache, with coherence maintained by DMA controller.
-+ * So to emulate right behavior that guest OS is assumed, we need to flush
-+ * I/D cache here.
-+ */
-+static void sync_icache(unsigned long address, int len)
-+{
-+ int l;
-+
-+ for(l = 0; l < (len + 32); l += 32)
-+ __ia64_fc(address + l);
-+
-+ ia64_sync_i();
-+ ia64_srlz_i();
-+}
-+#endif
-+
- /* physical memory access (slow version, mainly for debug) */
- #if defined(CONFIG_USER_ONLY)
- void cpu_physical_memory_rw(target_phys_addr_t addr, uint8_t *buf,
-@@ -432,6 +449,9 @@
- /* RAM case */
- ptr = phys_ram_base + addr1;
- memcpy(ptr, buf, l);
-+#ifdef __ia64__
-+ sync_icache((unsigned long)ptr, l);
-+#endif
- }
- } else {
- if (io_index) {
Index: ioemu/exec-all.h
===================================================================
---- ioemu.orig/exec-all.h 2006-08-17 19:37:36.791476068 +0100
-+++ ioemu/exec-all.h 2006-08-17 19:48:27.362375167 +0100
+--- ioemu.orig/exec-all.h 2006-12-08 02:02:07.000000000 +0000
++++ ioemu/exec-all.h 2006-12-08 02:02:34.000000000 +0000
@@ -462,12 +462,13 @@
}
#endif
@@ -177,9 +146,9 @@ Index: ioemu/exec-all.h
Index: ioemu/target-i386-dm/cpu.h
===================================================================
---- ioemu.orig/target-i386-dm/cpu.h 2006-08-17 19:37:36.792475957 +0100
-+++ ioemu/target-i386-dm/cpu.h 2006-08-17 19:48:27.362375167 +0100
-@@ -80,7 +80,11 @@
+--- ioemu.orig/target-i386-dm/cpu.h 2006-12-08 02:02:07.000000000 +0000
++++ ioemu/target-i386-dm/cpu.h 2006-12-08 02:02:34.000000000 +0000
+@@ -78,7 +78,11 @@
/* helper2.c */
int main_loop(void);
@@ -194,7 +163,7 @@ Index: ioemu/ia64_intrinsic.h
Index: ioemu/ia64_intrinsic.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ ioemu/ia64_intrinsic.h 2006-08-17 19:48:27.363375057 +0100
++++ ioemu/ia64_intrinsic.h 2006-12-08 02:02:34.000000000 +0000
@@ -0,0 +1,276 @@
+#ifndef IA64_INTRINSIC_H
+#define IA64_INTRINSIC_H
diff -r 3e2b6365ba75 -r aabceba1dbc5 tools/ioemu/patches/qemu-bootorder
--- a/tools/ioemu/patches/qemu-bootorder Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/ioemu/patches/qemu-bootorder Mon Dec 11 11:17:11 2006 -0800
@@ -1,7 +1,7 @@ Index: ioemu/vl.c
Index: ioemu/vl.c
===================================================================
---- ioemu.orig/vl.c 2006-10-24 14:33:47.000000000 +0100
-+++ ioemu/vl.c 2006-10-24 14:33:47.000000000 +0100
+--- ioemu.orig/vl.c 2006-12-08 02:02:38.000000000 +0000
++++ ioemu/vl.c 2006-12-08 02:02:38.000000000 +0000
@@ -125,7 +125,7 @@
struct sockaddr_in vnclisten_addr;
const char* keyboard_layout = NULL;
@@ -11,7 +11,7 @@ Index: ioemu/vl.c
uint64_t ram_size;
int pit_min_timer_count = 0;
int nb_nics;
-@@ -6075,14 +6075,14 @@
+@@ -6059,14 +6059,14 @@
break;
#endif /* !CONFIG_DM */
case QEMU_OPTION_boot:
@@ -32,7 +32,7 @@ Index: ioemu/vl.c
exit(1);
}
break;
-@@ -6349,6 +6349,7 @@
+@@ -6333,6 +6333,7 @@
fd_filename[0] == '\0')
help();
@@ -40,7 +40,7 @@ Index: ioemu/vl.c
/* boot to cd by default if no hard disk */
if (hd_filename[0] == '\0' && boot_device == 'c') {
if (fd_filename[0] != '\0')
-@@ -6356,6 +6357,7 @@
+@@ -6340,6 +6341,7 @@
else
boot_device = 'd';
}
@@ -48,7 +48,7 @@ Index: ioemu/vl.c
#endif /* !CONFIG_DM */
setvbuf(stdout, NULL, _IOLBF, 0);
-@@ -6614,6 +6616,7 @@
+@@ -6598,6 +6600,7 @@
ds, fd_filename, snapshot,
kernel_filename, kernel_cmdline, initrd_filename,
timeoffset);
@@ -58,8 +58,8 @@ Index: ioemu/vl.c
if (usb_enabled) {
Index: ioemu/vl.h
===================================================================
---- ioemu.orig/vl.h 2006-10-24 14:33:47.000000000 +0100
-+++ ioemu/vl.h 2006-10-24 14:33:47.000000000 +0100
+--- ioemu.orig/vl.h 2006-12-08 02:02:38.000000000 +0000
++++ ioemu/vl.h 2006-12-08 02:02:38.000000000 +0000
@@ -578,7 +578,7 @@
#ifndef QEMU_TOOL
@@ -80,8 +80,8 @@ Index: ioemu/vl.h
uint32_t initrd_image, uint32_t initrd_size,
Index: ioemu/hw/pc.c
===================================================================
---- ioemu.orig/hw/pc.c 2006-10-24 14:33:47.000000000 +0100
-+++ ioemu/hw/pc.c 2006-10-24 14:33:47.000000000 +0100
+--- ioemu.orig/hw/pc.c 2006-12-08 02:02:38.000000000 +0000
++++ ioemu/hw/pc.c 2006-12-08 02:02:38.000000000 +0000
@@ -158,8 +158,23 @@
rtc_set_memory(s, info_ofs + 8, sectors);
}
diff -r 3e2b6365ba75 -r aabceba1dbc5 tools/ioemu/patches/qemu-daemonize
--- a/tools/ioemu/patches/qemu-daemonize Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/ioemu/patches/qemu-daemonize Mon Dec 11 11:17:11 2006 -0800
@@ -2,9 +2,9 @@ Changes required because qemu-dm runs da
Index: ioemu/vl.c
===================================================================
---- ioemu.orig/vl.c 2006-10-24 14:33:47.000000000 +0100
-+++ ioemu/vl.c 2006-10-24 14:33:47.000000000 +0100
-@@ -6054,10 +6054,11 @@
+--- ioemu.orig/vl.c 2006-12-08 02:00:42.000000000 +0000
++++ ioemu/vl.c 2006-12-08 02:00:42.000000000 +0000
+@@ -6038,10 +6038,11 @@
}
break;
case QEMU_OPTION_nographic:
diff -r 3e2b6365ba75 -r aabceba1dbc5 tools/ioemu/patches/qemu-dm
--- a/tools/ioemu/patches/qemu-dm Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/ioemu/patches/qemu-dm Mon Dec 11 11:17:11 2006 -0800
@@ -1,8 +1,8 @@ Index: ioemu/Makefile.target
Index: ioemu/Makefile.target
===================================================================
---- ioemu.orig/Makefile.target 2006-08-06 02:14:04.797460093 +0100
-+++ ioemu/Makefile.target 2006-08-06 02:14:09.794902973 +0100
-@@ -302,7 +302,7 @@
+--- ioemu.orig/Makefile.target 2006-12-08 01:41:05.000000000 +0000
++++ ioemu/Makefile.target 2006-12-08 01:41:10.000000000 +0000
+@@ -303,7 +303,7 @@
endif
# must use static linking to avoid leaving stuff in virtual address space
@@ -13,8 +13,8 @@ Index: ioemu/Makefile.target
VL_OBJS+=tap-win32.o
Index: ioemu/configure
===================================================================
---- ioemu.orig/configure 2006-08-06 02:14:04.797460093 +0100
-+++ ioemu/configure 2006-08-06 02:14:09.795902861 +0100
+--- ioemu.orig/configure 2006-12-08 01:40:58.000000000 +0000
++++ ioemu/configure 2006-12-08 01:41:10.000000000 +0000
@@ -75,8 +75,8 @@
bigendian="no"
mingw32="no"
@@ -37,8 +37,8 @@ Index: ioemu/configure
target_user_only="yes"
Index: ioemu/cpu-all.h
===================================================================
---- ioemu.orig/cpu-all.h 2006-08-06 02:14:04.797460093 +0100
-+++ ioemu/cpu-all.h 2006-08-06 02:14:09.796902750 +0100
+--- ioemu.orig/cpu-all.h 2006-12-08 01:40:58.000000000 +0000
++++ ioemu/cpu-all.h 2006-12-08 01:41:10.000000000 +0000
@@ -690,7 +690,9 @@
void page_set_flags(target_ulong start, target_ulong end, int flags);
void page_unprotect_range(target_ulong data, target_ulong data_size);
@@ -64,8 +64,8 @@ Index: ioemu/cpu-all.h
void cpu_dump_state(CPUState *env, FILE *f,
Index: ioemu/disas.h
===================================================================
---- ioemu.orig/disas.h 2006-08-06 02:14:04.797460093 +0100
-+++ ioemu/disas.h 2006-08-06 02:14:09.796902750 +0100
+--- ioemu.orig/disas.h 2006-12-08 01:40:58.000000000 +0000
++++ ioemu/disas.h 2006-12-08 01:41:10.000000000 +0000
@@ -1,6 +1,7 @@
#ifndef _QEMU_DISAS_H
#define _QEMU_DISAS_H
@@ -83,8 +83,8 @@ Index: ioemu/disas.h
#endif /* _QEMU_DISAS_H */
Index: ioemu/exec-all.h
===================================================================
---- ioemu.orig/exec-all.h 2006-08-06 02:14:04.798459982 +0100
-+++ ioemu/exec-all.h 2006-08-06 02:14:09.796902750 +0100
+--- ioemu.orig/exec-all.h 2006-12-08 01:40:58.000000000 +0000
++++ ioemu/exec-all.h 2006-12-08 01:41:10.000000000 +0000
@@ -509,7 +509,7 @@
extern int tb_invalidated_flag;
@@ -105,8 +105,8 @@ Index: ioemu/exec-all.h
return addr;
Index: ioemu/hw/pc.c
===================================================================
---- ioemu.orig/hw/pc.c 2006-08-06 02:14:04.797460093 +0100
-+++ ioemu/hw/pc.c 2006-08-06 02:14:09.797902638 +0100
+--- ioemu.orig/hw/pc.c 2006-12-08 01:40:58.000000000 +0000
++++ ioemu/hw/pc.c 2006-12-08 01:41:10.000000000 +0000
@@ -73,6 +73,7 @@
}
}
@@ -184,8 +184,8 @@ Index: ioemu/hw/pc.c
if (serial_hds[i]) {
Index: ioemu/hw/vga_int.h
===================================================================
---- ioemu.orig/hw/vga_int.h 2006-08-06 02:14:04.797460093 +0100
-+++ ioemu/hw/vga_int.h 2006-08-06 02:14:09.797902638 +0100
+--- ioemu.orig/hw/vga_int.h 2006-12-08 01:40:58.000000000 +0000
++++ ioemu/hw/vga_int.h 2006-12-08 01:41:10.000000000 +0000
@@ -28,7 +28,7 @@
#define ST01_DISP_ENABLE 0x01
@@ -197,8 +197,8 @@ Index: ioemu/hw/vga_int.h
#define VBE_DISPI_MAX_YRES 1200
Index: ioemu/monitor.c
===================================================================
---- ioemu.orig/monitor.c 2006-08-06 02:14:04.798459982 +0100
-+++ ioemu/monitor.c 2006-08-06 02:14:49.574468309 +0100
+--- ioemu.orig/monitor.c 2006-12-08 01:40:58.000000000 +0000
++++ ioemu/monitor.c 2006-12-08 01:41:10.000000000 +0000
@@ -68,6 +68,12 @@
void term_flush(void)
@@ -429,8 +429,8 @@ Index: ioemu/monitor.c
{
Index: ioemu/vl.c
===================================================================
---- ioemu.orig/vl.c 2006-08-06 02:14:04.797460093 +0100
-+++ ioemu/vl.c 2006-08-06 02:14:09.802902081 +0100
+--- ioemu.orig/vl.c 2006-12-08 01:40:58.000000000 +0000
++++ ioemu/vl.c 2006-12-08 01:41:10.000000000 +0000
@@ -422,12 +422,15 @@
void hw_error(const char *fmt, ...)
{
diff -r 3e2b6365ba75 -r aabceba1dbc5 tools/ioemu/patches/qemu-no-apic
--- a/tools/ioemu/patches/qemu-no-apic Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/ioemu/patches/qemu-no-apic Mon Dec 11 11:17:11 2006 -0800
@@ -1,8 +1,8 @@ Index: ioemu/Makefile.target
Index: ioemu/Makefile.target
===================================================================
---- ioemu.orig/Makefile.target 2006-08-06 02:21:42.270461924 +0100
-+++ ioemu/Makefile.target 2006-08-06 02:22:26.380544784 +0100
-@@ -355,7 +355,7 @@
+--- ioemu.orig/Makefile.target 2006-12-08 01:41:11.000000000 +0000
++++ ioemu/Makefile.target 2006-12-08 01:41:12.000000000 +0000
+@@ -356,7 +356,7 @@
# Hardware support
VL_OBJS+= ide.o pckbd.o ps2.o vga.o $(SOUND_HW) dma.o $(AUDIODRV)
VL_OBJS+= fdc.o mc146818rtc.o serial.o i8254.o pcspk.o pc.o
@@ -13,8 +13,8 @@ Index: ioemu/Makefile.target
endif
Index: ioemu/hw/pc.c
===================================================================
---- ioemu.orig/hw/pc.c 2006-08-06 02:22:01.524315611 +0100
-+++ ioemu/hw/pc.c 2006-08-06 02:22:11.875161758 +0100
+--- ioemu.orig/hw/pc.c 2006-12-08 01:41:12.000000000 +0000
++++ ioemu/hw/pc.c 2006-12-08 01:41:12.000000000 +0000
@@ -39,7 +39,9 @@
static fdctrl_t *floppy_controller;
static RTCState *rtc_state;
diff -r 3e2b6365ba75 -r aabceba1dbc5 tools/ioemu/patches/qemu-pci
--- a/tools/ioemu/patches/qemu-pci Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/ioemu/patches/qemu-pci Mon Dec 11 11:17:11 2006 -0800
@@ -1,7 +1,7 @@ Index: ioemu/hw/pci.c
Index: ioemu/hw/pci.c
===================================================================
---- ioemu.orig/hw/pci.c 2006-09-21 11:31:14.000000000 +0100
-+++ ioemu/hw/pci.c 2006-09-21 11:31:32.000000000 +0100
+--- ioemu.orig/hw/pci.c 2006-12-08 02:02:05.000000000 +0000
++++ ioemu/hw/pci.c 2006-12-08 18:16:55.000000000 +0000
@@ -286,6 +286,7 @@
case 0x0b:
case 0x0e:
@@ -31,8 +31,8 @@ Index: ioemu/hw/pci.c
addr++;
Index: ioemu/hw/rtl8139.c
===================================================================
---- ioemu.orig/hw/rtl8139.c 2006-09-21 11:31:14.000000000 +0100
-+++ ioemu/hw/rtl8139.c 2006-09-21 11:31:32.000000000 +0100
+--- ioemu.orig/hw/rtl8139.c 2006-12-08 02:02:05.000000000 +0000
++++ ioemu/hw/rtl8139.c 2006-12-08 18:16:47.000000000 +0000
@@ -3423,6 +3423,8 @@
pci_conf[0x0e] = 0x00; /* header_type */
pci_conf[0x3d] = 1; /* interrupt pin 0 */
@@ -44,8 +44,8 @@ Index: ioemu/hw/rtl8139.c
Index: ioemu/hw/usb-uhci.c
===================================================================
---- ioemu.orig/hw/usb-uhci.c 2006-09-21 11:31:14.000000000 +0100
-+++ ioemu/hw/usb-uhci.c 2006-09-21 11:31:32.000000000 +0100
+--- ioemu.orig/hw/usb-uhci.c 2006-12-08 02:02:05.000000000 +0000
++++ ioemu/hw/usb-uhci.c 2006-12-08 02:02:38.000000000 +0000
@@ -659,6 +659,8 @@
pci_conf[0x0e] = 0x00; // header_type
pci_conf[0x3d] = 4; // interrupt pin 3
@@ -55,3 +55,21 @@ Index: ioemu/hw/usb-uhci.c
for(i = 0; i < NB_PORTS; i++) {
qemu_register_usb_port(&s->ports[i].port, s, i, uhci_attach);
+Index: ioemu/vl.h
+===================================================================
+--- ioemu.orig/vl.h 2006-12-08 18:16:47.000000000 +0000
++++ ioemu/vl.h 2006-12-08 18:16:55.000000000 +0000
+@@ -650,8 +650,11 @@
+ #define PCI_MAX_LAT 0x3f /* 8 bits */
+
+ struct PCIDevice {
+- /* PCI config space */
+- uint8_t config[256];
++ /*
++ * PCI config space. The 4 extra bytes are a safety buffer for guest
++ * word/dword writes that can extend past byte 0xff.
++ */
++ uint8_t config[256+4];
+
+ /* the following fields are read only */
+ PCIBus *bus;
diff -r 3e2b6365ba75 -r aabceba1dbc5 tools/ioemu/patches/qemu-target-i386-dm
--- a/tools/ioemu/patches/qemu-target-i386-dm Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/ioemu/patches/qemu-target-i386-dm Mon Dec 11 11:17:11 2006 -0800
@@ -1,7 +1,7 @@ Index: ioemu/Makefile.target
Index: ioemu/Makefile.target
===================================================================
---- ioemu.orig/Makefile.target 2006-10-24 13:47:23.000000000 +0100
-+++ ioemu/Makefile.target 2006-10-24 14:30:56.000000000 +0100
+--- ioemu.orig/Makefile.target 2006-12-08 01:41:10.000000000 +0000
++++ ioemu/Makefile.target 2006-12-08 01:41:11.000000000 +0000
@@ -62,6 +62,8 @@
QEMU_SYSTEM=qemu-fast
endif
@@ -11,7 +11,7 @@ Index: ioemu/Makefile.target
ifdef CONFIG_USER_ONLY
PROGS=$(QEMU_USER)
else
-@@ -291,6 +293,9 @@
+@@ -292,6 +294,9 @@
OBJS+=gdbstub.o
endif
@@ -21,7 +21,7 @@ Index: ioemu/Makefile.target
all: $(PROGS)
$(QEMU_USER): $(OBJS)
-@@ -349,7 +354,7 @@
+@@ -350,7 +355,7 @@
ifeq ($(TARGET_BASE_ARCH), i386)
# Hardware support
VL_OBJS+= ide.o pckbd.o ps2.o vga.o $(SOUND_HW) dma.o $(AUDIODRV)
@@ -32,8 +32,8 @@ Index: ioemu/Makefile.target
DEFINES += -DHAS_AUDIO
Index: ioemu/configure
===================================================================
---- ioemu.orig/configure 2006-10-24 13:47:23.000000000 +0100
-+++ ioemu/configure 2006-10-24 14:29:34.000000000 +0100
+--- ioemu.orig/configure 2006-12-08 01:41:10.000000000 +0000
++++ ioemu/configure 2006-12-08 01:41:11.000000000 +0000
@@ -373,6 +373,8 @@
if [ "$user" = "yes" ] ; then
target_list="i386-user arm-user armeb-user sparc-user ppc-user
mips-user mipsel-user $target_list"
@@ -45,8 +45,8 @@ Index: ioemu/configure
fi
Index: ioemu/monitor.c
===================================================================
---- ioemu.orig/monitor.c 2006-10-24 13:47:23.000000000 +0100
-+++ ioemu/monitor.c 2006-10-24 14:30:56.000000000 +0100
+--- ioemu.orig/monitor.c 2006-12-08 01:41:10.000000000 +0000
++++ ioemu/monitor.c 2006-12-08 01:41:11.000000000 +0000
@@ -1262,6 +1262,10 @@
"", "show profiling information", },
{ "capture", "", do_info_capture,
@@ -60,8 +60,8 @@ Index: ioemu/monitor.c
Index: ioemu/vl.c
===================================================================
---- ioemu.orig/vl.c 2006-10-24 13:47:23.000000000 +0100
-+++ ioemu/vl.c 2006-10-24 14:30:56.000000000 +0100
+--- ioemu.orig/vl.c 2006-12-08 01:41:10.000000000 +0000
++++ ioemu/vl.c 2006-12-08 01:41:11.000000000 +0000
@@ -87,7 +87,7 @@
#include "exec-all.h"
@@ -98,8 +98,8 @@ Index: ioemu/vl.c
{
Index: ioemu/vl.h
===================================================================
---- ioemu.orig/vl.h 2006-10-24 13:47:23.000000000 +0100
-+++ ioemu/vl.h 2006-10-24 14:30:56.000000000 +0100
+--- ioemu.orig/vl.h 2006-12-08 01:40:58.000000000 +0000
++++ ioemu/vl.h 2006-12-08 01:41:11.000000000 +0000
@@ -37,6 +37,8 @@
#include <unistd.h>
#include <fcntl.h>
@@ -132,8 +132,8 @@ Index: ioemu/target-i386-dm/cpu.h
Index: ioemu/target-i386-dm/cpu.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ ioemu/target-i386-dm/cpu.h 2006-10-24 14:30:56.000000000 +0100
-@@ -0,0 +1,86 @@
++++ ioemu/target-i386-dm/cpu.h 2006-12-08 01:41:11.000000000 +0000
+@@ -0,0 +1,84 @@
+/*
+ * i386 virtual CPU header
+ *
@@ -191,8 +191,6 @@ Index: ioemu/target-i386-dm/cpu.h
+ int interrupt_request;
+
+ CPU_COMMON
-+
-+ int send_event;
+} CPUX86State;
+
+CPUX86State *cpu_x86_init(void);
@@ -223,8 +221,8 @@ Index: ioemu/target-i386-dm/exec-dm.c
Index: ioemu/target-i386-dm/exec-dm.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ ioemu/target-i386-dm/exec-dm.c 2006-10-24 14:30:56.000000000 +0100
-@@ -0,0 +1,516 @@
++++ ioemu/target-i386-dm/exec-dm.c 2006-12-08 01:41:11.000000000 +0000
+@@ -0,0 +1,546 @@
+/*
+ * virtual page mapping and translated block handling
+ *
@@ -258,6 +256,8 @@ Index: ioemu/target-i386-dm/exec-dm.c
+#include <errno.h>
+#include <unistd.h>
+#include <inttypes.h>
++
++#include <xen/hvm/e820.h>
+
+#include "cpu.h"
+#include "exec-all.h"
@@ -567,6 +567,23 @@ Index: ioemu/target-i386-dm/exec-dm.c
+{
+ return io_mem_read[io_index >> IO_MEM_SHIFT];
+}
++
++#ifdef __ia64__
++/* IA64 has seperate I/D cache, with coherence maintained by DMA controller.
++ * So to emulate right behavior that guest OS is assumed, we need to flush
++ * I/D cache here.
++ */
++static void sync_icache(unsigned long address, int len)
++{
++ int l;
++
++ for(l = 0; l < (len + 32); l += 32)
++ __ia64_fc(address + l);
++
++ ia64_sync_i();
++ ia64_srlz_i();
++}
++#endif
+
+/* physical memory access (slow version, mainly for debug) */
+#if defined(CONFIG_USER_ONLY)
@@ -617,22 +634,36 @@ Index: ioemu/target-i386-dm/exec-dm.c
+ return 0;
+}
+
++static inline int paddr_is_ram(target_phys_addr_t addr)
++{
++ /* Is this guest physical address RAM-backed? */
++#if defined(CONFIG_DM) && (defined(__i386__) || defined(__x86_64__))
++ if (ram_size <= HVM_BELOW_4G_RAM_END)
++ /* RAM is contiguous */
++ return (addr < ram_size);
++ else
++ /* There is RAM below and above the MMIO hole */
++ return ((addr < HVM_BELOW_4G_MMIO_START) ||
++ ((addr >= HVM_BELOW_4G_MMIO_START + HVM_BELOW_4G_MMIO_LENGTH)
++ && (addr < ram_size + HVM_BELOW_4G_MMIO_LENGTH)));
++#else
++ return (addr < ram_size);
++#endif
++}
++
+void cpu_physical_memory_rw(target_phys_addr_t addr, uint8_t *buf,
+ int len, int is_write)
+{
+ int l, io_index;
+ uint8_t *ptr;
+ uint32_t val;
-+ target_phys_addr_t page;
-+ unsigned long pd;
+
+ while (len > 0) {
-+ page = addr & TARGET_PAGE_MASK;
-+ l = (page + TARGET_PAGE_SIZE) - addr;
++ /* How much can we copy before the next page boundary? */
++ l = TARGET_PAGE_SIZE - (addr & ~TARGET_PAGE_MASK);
+ if (l > len)
+ l = len;
+
-+ pd = page;
+ io_index = iomem_index(addr);
+ if (is_write) {
+ if (io_index) {
@@ -652,13 +683,12 @@ Index: ioemu/target-i386-dm/exec-dm.c
+ io_mem_write[io_index][0](io_mem_opaque[io_index], addr,
val);
+ l = 1;
+ }
-+ } else {
-+ unsigned long addr1;
-+
-+ addr1 = (pd & TARGET_PAGE_MASK) + (addr & ~TARGET_PAGE_MASK);
-+ /* RAM case */
-+ ptr = phys_ram_base + addr1;
-+ memcpy(ptr, buf, l);
++ } else if (paddr_is_ram(addr)) {
++ /* Reading from RAM */
++ memcpy(phys_ram_base + addr, buf, l);
++#ifdef __ia64__
++ sync_icache((unsigned long)(phys_ram_base + addr), l);
++#endif
+ }
+ } else {
+ if (io_index) {
@@ -678,14 +708,12 @@ Index: ioemu/target-i386-dm/exec-dm.c
+ stb_raw(buf, val);
+ l = 1;
+ }
-+ } else if (addr < ram_size) {
-+ /* RAM case */
-+ ptr = phys_ram_base + (pd & TARGET_PAGE_MASK) +
-+ (addr & ~TARGET_PAGE_MASK);
-+ memcpy(buf, ptr, l);
++ } else if (paddr_is_ram(addr)) {
++ /* Reading from RAM */
++ memcpy(buf, phys_ram_base + addr, l);
+ } else {
-+ /* unreported MMIO space */
-+ memset(buf, 0xff, len);
++ /* Neither RAM nor known MMIO space */
++ memset(buf, 0xff, len);
+ }
+ }
+ len -= l;
@@ -744,8 +772,8 @@ Index: ioemu/target-i386-dm/helper2.c
Index: ioemu/target-i386-dm/helper2.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ ioemu/target-i386-dm/helper2.c 2006-10-24 14:31:01.000000000 +0100
-@@ -0,0 +1,469 @@
++++ ioemu/target-i386-dm/helper2.c 2006-12-08 01:41:11.000000000 +0000
+@@ -0,0 +1,488 @@
+/*
+ * i386 helpers (without register variable usage)
+ *
@@ -918,10 +946,10 @@ Index: ioemu/target-i386-dm/helper2.c
+ for (i = 0; i < vcpus; i++) {
+ req = &(shared_page->vcpu_iodata[i].vp_ioreq);
+ term_printf("vcpu %d: event port %d\n", i, ioreq_local_port[i]);
-+ term_printf(" req state: %x, pvalid: %x, addr: %"PRIx64", "
++ term_printf(" req state: %x, ptr: %x, addr: %"PRIx64", "
+ "data: %"PRIx64", count: %"PRIx64", size: %"PRIx64"\n",
-+ req->state, req->pdata_valid, req->addr,
-+ req->u.data, req->count, req->size);
++ req->state, req->data_is_ptr, req->addr,
++ req->data, req->count, req->size);
+ term_printf(" IO totally occurred on this vcpu: %"PRIx64"\n",
+ req->io_count);
+ }
@@ -934,18 +962,19 @@ Index: ioemu/target-i386-dm/helper2.c
+
+ req = &(shared_page->vcpu_iodata[vcpu].vp_ioreq);
+
-+ if (req->state == STATE_IOREQ_READY) {
-+ req->state = STATE_IOREQ_INPROCESS;
-+ rmb();
-+ return req;
-+ }
-+
-+ fprintf(logfile, "False I/O request ... in-service already: "
-+ "%x, pvalid: %x, port: %"PRIx64", "
-+ "data: %"PRIx64", count: %"PRIx64", size: %"PRIx64"\n",
-+ req->state, req->pdata_valid, req->addr,
-+ req->u.data, req->count, req->size);
-+ return NULL;
++ if (req->state != STATE_IOREQ_READY) {
++ fprintf(logfile, "I/O request not ready: "
++ "%x, ptr: %x, port: %"PRIx64", "
++ "data: %"PRIx64", count: %"PRIx64", size: %"PRIx64"\n",
++ req->state, req->data_is_ptr, req->addr,
++ req->data, req->count, req->size);
++ return NULL;
++ }
++
++ rmb(); /* see IOREQ_READY /then/ read contents of ioreq */
++
++ req->state = STATE_IOREQ_INPROCESS;
++ return req;
+}
+
+//use poll to get the port notification
@@ -1030,26 +1059,26 @@ Index: ioemu/target-i386-dm/helper2.c
+ sign = req->df ? -1 : 1;
+
+ if (req->dir == IOREQ_READ) {
-+ if (!req->pdata_valid) {
-+ req->u.data = do_inp(env, req->addr, req->size);
++ if (!req->data_is_ptr) {
++ req->data = do_inp(env, req->addr, req->size);
+ } else {
+ unsigned long tmp;
+
+ for (i = 0; i < req->count; i++) {
+ tmp = do_inp(env, req->addr, req->size);
-+ write_physical((target_phys_addr_t) req->u.pdata
++ write_physical((target_phys_addr_t) req->data
+ + (sign * i * req->size),
+ req->size, &tmp);
+ }
+ }
+ } else if (req->dir == IOREQ_WRITE) {
-+ if (!req->pdata_valid) {
-+ do_outp(env, req->addr, req->size, req->u.data);
++ if (!req->data_is_ptr) {
++ do_outp(env, req->addr, req->size, req->data);
+ } else {
+ for (i = 0; i < req->count; i++) {
+ unsigned long tmp;
+
-+ read_physical((target_phys_addr_t) req->u.pdata
++ read_physical((target_phys_addr_t) req->data
+ + (sign * i * req->size),
+ req->size, &tmp);
+ do_outp(env, req->addr, req->size, tmp);
@@ -1064,18 +1093,18 @@ Index: ioemu/target-i386-dm/helper2.c
+
+ sign = req->df ? -1 : 1;
+
-+ if (!req->pdata_valid) {
++ if (!req->data_is_ptr) {
+ if (req->dir == IOREQ_READ) {
+ for (i = 0; i < req->count; i++) {
+ read_physical(req->addr
+ + (sign * i * req->size),
-+ req->size, &req->u.data);
++ req->size, &req->data);
+ }
+ } else if (req->dir == IOREQ_WRITE) {
+ for (i = 0; i < req->count; i++) {
+ write_physical(req->addr
+ + (sign * i * req->size),
-+ req->size, &req->u.data);
++ req->size, &req->data);
+ }
+ }
+ } else {
@@ -1086,13 +1115,13 @@ Index: ioemu/target-i386-dm/helper2.c
+ read_physical(req->addr
+ + (sign * i * req->size),
+ req->size, &tmp);
-+ write_physical((target_phys_addr_t )req->u.pdata
++ write_physical((target_phys_addr_t )req->data
+ + (sign * i * req->size),
+ req->size, &tmp);
+ }
+ } else if (req->dir == IOREQ_WRITE) {
+ for (i = 0; i < req->count; i++) {
-+ read_physical((target_phys_addr_t) req->u.pdata
++ read_physical((target_phys_addr_t) req->data
+ + (sign * i * req->size),
+ req->size, &tmp);
+ write_physical(req->addr
@@ -1107,45 +1136,60 @@ Index: ioemu/target-i386-dm/helper2.c
+{
+ unsigned long tmp1, tmp2;
+
-+ if (req->pdata_valid != 0)
++ if (req->data_is_ptr != 0)
+ hw_error("expected scalar value");
+
+ read_physical(req->addr, req->size, &tmp1);
+ if (req->dir == IOREQ_WRITE) {
-+ tmp2 = tmp1 & (unsigned long) req->u.data;
++ tmp2 = tmp1 & (unsigned long) req->data;
+ write_physical(req->addr, req->size, &tmp2);
+ }
-+ req->u.data = tmp1;
-+}
-+
-+void cpu_ioreq_or(CPUState *env, ioreq_t *req)
++ req->data = tmp1;
++}
++
++void cpu_ioreq_add(CPUState *env, ioreq_t *req)
+{
+ unsigned long tmp1, tmp2;
+
-+ if (req->pdata_valid != 0)
++ if (req->data_is_ptr != 0)
+ hw_error("expected scalar value");
+
+ read_physical(req->addr, req->size, &tmp1);
+ if (req->dir == IOREQ_WRITE) {
-+ tmp2 = tmp1 | (unsigned long) req->u.data;
++ tmp2 = tmp1 + (unsigned long) req->data;
+ write_physical(req->addr, req->size, &tmp2);
+ }
-+ req->u.data = tmp1;
-+}
-+
-+void cpu_ioreq_xor(CPUState *env, ioreq_t *req)
++ req->data = tmp1;
++}
++
++void cpu_ioreq_or(CPUState *env, ioreq_t *req)
+{
+ unsigned long tmp1, tmp2;
+
-+ if (req->pdata_valid != 0)
++ if (req->data_is_ptr != 0)
+ hw_error("expected scalar value");
+
+ read_physical(req->addr, req->size, &tmp1);
+ if (req->dir == IOREQ_WRITE) {
-+ tmp2 = tmp1 ^ (unsigned long) req->u.data;
++ tmp2 = tmp1 | (unsigned long) req->data;
+ write_physical(req->addr, req->size, &tmp2);
+ }
-+ req->u.data = tmp1;
++ req->data = tmp1;
++}
++
++void cpu_ioreq_xor(CPUState *env, ioreq_t *req)
++{
++ unsigned long tmp1, tmp2;
++
++ if (req->data_is_ptr != 0)
++ hw_error("expected scalar value");
++
++ read_physical(req->addr, req->size, &tmp1);
++ if (req->dir == IOREQ_WRITE) {
++ tmp2 = tmp1 ^ (unsigned long) req->data;
++ write_physical(req->addr, req->size, &tmp2);
++ }
++ req->data = tmp1;
+}
+
+void cpu_handle_ioreq(void *opaque)
@@ -1154,9 +1198,9 @@ Index: ioemu/target-i386-dm/helper2.c
+ ioreq_t *req = cpu_get_ioreq();
+
+ if (req) {
-+ if ((!req->pdata_valid) && (req->dir == IOREQ_WRITE)) {
++ if ((!req->data_is_ptr) && (req->dir == IOREQ_WRITE)) {
+ if (req->size != 4)
-+ req->u.data &= (1UL << (8 * req->size))-1;
++ req->data &= (1UL << (8 * req->size))-1;
+ }
+
+ switch (req->type) {
@@ -1169,6 +1213,9 @@ Index: ioemu/target-i386-dm/helper2.c
+ case IOREQ_TYPE_AND:
+ cpu_ioreq_and(env, req);
+ break;
++ case IOREQ_TYPE_ADD:
++ cpu_ioreq_add(env, req);
++ break;
+ case IOREQ_TYPE_OR:
+ cpu_ioreq_or(env, req);
+ break;
@@ -1179,12 +1226,19 @@ Index: ioemu/target-i386-dm/helper2.c
+ hw_error("Invalid ioreq type 0x%x\n", req->type);
+ }
+
-+ /* No state change if state = STATE_IORESP_HOOK */
-+ if (req->state == STATE_IOREQ_INPROCESS) {
-+ mb();
-+ req->state = STATE_IORESP_READY;
-+ }
-+ env->send_event = 1;
++ if (req->state != STATE_IOREQ_INPROCESS) {
++ fprintf(logfile, "Badness in I/O request ... not in service?!: "
++ "%x, ptr: %x, port: %"PRIx64", "
++ "data: %"PRIx64", count: %"PRIx64", size: %"PRIx64"\n",
++ req->state, req->data_is_ptr, req->addr,
++ req->data, req->count, req->size);
++ destroy_hvm_domain();
++ return;
++ }
++
++ wmb(); /* Update ioreq contents /then/ update state. */
++ req->state = STATE_IORESP_READY;
++ xc_evtchn_notify(xce_handle, ioreq_local_port[send_vcpu]);
+ }
+}
+
@@ -1197,8 +1251,6 @@ Index: ioemu/target-i386-dm/helper2.c
+
+ qemu_set_fd_handler(evtchn_fd, cpu_handle_ioreq, NULL, env);
+
-+ env->send_event = 0;
-+
+ while (1) {
+ if (vm_running) {
+ if (shutdown_requested)
@@ -1207,19 +1259,14 @@ Index: ioemu/target-i386-dm/helper2.c
+
+ /* Wait up to 10 msec. */
+ main_loop_wait(10);
-+
-+ if (env->send_event) {
-+ env->send_event = 0;
-+ xc_evtchn_notify(xce_handle, ioreq_local_port[send_vcpu]);
-+ }
+ }
+ return 0;
+}
Index: ioemu/target-i386-dm/i8259-dm.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ ioemu/target-i386-dm/i8259-dm.c 2006-10-24 13:47:23.000000000 +0100
-@@ -0,0 +1,107 @@
++++ ioemu/target-i386-dm/i8259-dm.c 2006-12-08 01:41:11.000000000 +0000
+@@ -0,0 +1,67 @@
+/* Xen 8259 stub for interrupt controller emulation
+ *
+ * Copyright (c) 2003-2004 Fabrice Bellard
@@ -1244,58 +1291,18 @@ Index: ioemu/target-i386-dm/i8259-dm.c
+ * THE SOFTWARE.
+ */
+#include "vl.h"
-+
-+/* debug PIC */
-+//#define DEBUG_PIC
-+
-+//#define DEBUG_IRQ_LATENCY
-+//#define DEBUG_IRQ_COUNT
-+
+#include "xenctrl.h"
+#include <xen/hvm/ioreq.h>
+#include <stdio.h>
+#include "cpu.h"
+#include "cpu-all.h"
+
-+extern shared_iopage_t *shared_page;
-+
+struct PicState2 {
+};
+
+void pic_set_irq_new(void *opaque, int irq, int level)
+{
-+ /* PicState2 *s = opaque; */
-+ global_iodata_t *gio;
-+ int mask;
-+
-+ gio = &shared_page->sp_global;
-+ mask = 1 << irq;
-+ if ( gio->pic_elcr & mask ) {
-+ /* level */
-+ if ( level ) {
-+ atomic_clear_bit(irq, &gio->pic_clear_irr);
-+ atomic_set_bit(irq, &gio->pic_irr);
-+ cpu_single_env->send_event = 1;
-+ }
-+ else {
-+ atomic_clear_bit(irq, &gio->pic_irr);
-+ atomic_set_bit(irq, &gio->pic_clear_irr);
-+ cpu_single_env->send_event = 1;
-+ }
-+ }
-+ else {
-+ /* edge */
-+ if ( level ) {
-+ if ( (mask & gio->pic_last_irr) == 0 ) {
-+ atomic_set_bit(irq, &gio->pic_irr);
-+ atomic_set_bit(irq, &gio->pic_last_irr);
-+ cpu_single_env->send_event = 1;
-+ }
-+ }
-+ else {
-+ atomic_clear_bit(irq, &gio->pic_last_irr);
-+ }
-+ }
++ xc_hvm_set_irq_level(xc_handle, domid, irq, level);
+}
+
+/* obsolete function */
@@ -1330,17 +1337,22 @@ Index: ioemu/target-i386-dm/qemu-dm.debu
Index: ioemu/target-i386-dm/qemu-dm.debug
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ ioemu/target-i386-dm/qemu-dm.debug 2006-10-24 13:47:23.000000000 +0100
-@@ -0,0 +1,5 @@
++++ ioemu/target-i386-dm/qemu-dm.debug 2006-12-08 01:41:11.000000000 +0000
+@@ -0,0 +1,10 @@
+#!/bin/sh
+
++if [ "`arch`" = "x86_64" ]; then
++ LIBDIR="lib64"
++else
++ LIBDIR="lib"
++fi
+echo $* > /tmp/args
+echo $DISPLAY >> /tmp/args
-+exec /usr/lib/xen/bin/qemu-dm $*
++exec /usr/$LIBDIR/xen/bin/qemu-dm $*
Index: ioemu/target-i386-dm/qemu-ifup
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ ioemu/target-i386-dm/qemu-ifup 2006-10-24 13:47:23.000000000 +0100
++++ ioemu/target-i386-dm/qemu-ifup 2006-12-08 01:41:11.000000000 +0000
@@ -0,0 +1,10 @@
+#!/bin/sh
+
diff -r 3e2b6365ba75 -r aabceba1dbc5 tools/ioemu/patches/series
--- a/tools/ioemu/patches/series Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/ioemu/patches/series Mon Dec 11 11:17:11 2006 -0800
@@ -53,3 +53,19 @@ hypervisor-rtc
hypervisor-rtc
ide-cd-dma
vnc-password
+ne2000-bounds-checks
+xenstore-device-info-functions
+tpm-tis-device
+qemu-serial-fixes
+vnc-japan-keymap
+rtl8139-bound-chaining
+fix-interrupt-routing
+nodelay-serial-over-tcp
+remove-pci-bridge-setup
+limit-fdc-sector-size-to-16K
+usb-uhci-buffer-size
+vnc-monitor-shift-key-processing
+ide-error-reporting
+vnc-numpad-handling
+xen-mapcache -p3
+usb-mouse-tablet-status-check -p3
diff -r 3e2b6365ba75 -r aabceba1dbc5 tools/ioemu/patches/shared-vram
--- a/tools/ioemu/patches/shared-vram Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/ioemu/patches/shared-vram Mon Dec 11 11:17:11 2006 -0800
@@ -1,7 +1,7 @@ Index: ioemu/hw/cirrus_vga.c
Index: ioemu/hw/cirrus_vga.c
===================================================================
---- ioemu.orig/hw/cirrus_vga.c 2006-08-17 19:37:36.372522620 +0100
-+++ ioemu/hw/cirrus_vga.c 2006-08-17 19:49:52.157002909 +0100
+--- ioemu.orig/hw/cirrus_vga.c 2006-12-08 01:57:54.000000000 +0000
++++ ioemu/hw/cirrus_vga.c 2006-12-08 02:00:04.000000000 +0000
@@ -28,6 +28,9 @@
*/
#include "vl.h"
@@ -176,8 +176,8 @@ Index: ioemu/hw/cirrus_vga.c
}
Index: ioemu/hw/pc.c
===================================================================
---- ioemu.orig/hw/pc.c 2006-08-17 19:49:50.229215988 +0100
-+++ ioemu/hw/pc.c 2006-08-17 19:49:52.158002799 +0100
+--- ioemu.orig/hw/pc.c 2006-12-08 02:00:04.000000000 +0000
++++ ioemu/hw/pc.c 2006-12-08 02:00:04.000000000 +0000
@@ -790,14 +790,14 @@
if (cirrus_vga_enabled) {
if (pci_enabled) {
@@ -198,8 +198,8 @@ Index: ioemu/hw/pc.c
Index: ioemu/hw/vga.c
===================================================================
---- ioemu.orig/hw/vga.c 2006-08-17 19:49:37.764593706 +0100
-+++ ioemu/hw/vga.c 2006-08-17 19:49:52.159002688 +0100
+--- ioemu.orig/hw/vga.c 2006-12-08 02:00:04.000000000 +0000
++++ ioemu/hw/vga.c 2006-12-08 02:00:04.000000000 +0000
@@ -1858,6 +1858,7 @@
/* TODO: add vbe support if enabled */
}
@@ -251,8 +251,8 @@ Index: ioemu/hw/vga.c
Index: ioemu/hw/vga_int.h
===================================================================
---- ioemu.orig/hw/vga_int.h 2006-08-17 19:37:36.372522620 +0100
-+++ ioemu/hw/vga_int.h 2006-08-17 19:49:52.159002688 +0100
+--- ioemu.orig/hw/vga_int.h 2006-12-08 01:57:54.000000000 +0000
++++ ioemu/hw/vga_int.h 2006-12-08 02:00:04.000000000 +0000
@@ -169,5 +169,6 @@
unsigned int color0, unsigned int color1,
unsigned int color_xor);
@@ -262,9 +262,9 @@ Index: ioemu/hw/vga_int.h
extern const uint8_t gr_mask[16];
Index: ioemu/vl.c
===================================================================
---- ioemu.orig/vl.c 2006-08-17 19:49:50.231215767 +0100
-+++ ioemu/vl.c 2006-08-17 19:49:52.162002356 +0100
-@@ -5693,6 +5693,78 @@
+--- ioemu.orig/vl.c 2006-12-08 02:00:04.000000000 +0000
++++ ioemu/vl.c 2006-12-08 02:00:27.000000000 +0000
+@@ -5693,6 +5693,62 @@
#define MAX_NET_CLIENTS 32
@@ -303,9 +303,6 @@ Index: ioemu/vl.c
+ unsigned long nr_pages, unsigned int address_bits,
+ xen_pfn_t *extent_start)
+{
-+#if 0
-+ int i;
-+#endif
+ xc_dominfo_t info;
+ int err = 0;
+
@@ -324,19 +321,6 @@ Index: ioemu/vl.c
+ return -1;
+ }
+
-+ err = xc_domain_translate_gpfn_list(xc_handle, domid, nr_pages,
-+ extent_start, extent_start);
-+ if (err) {
-+ fprintf(stderr, "Failed to translate gpfn list\n");
-+ return -1;
-+ }
-+
-+#if 0 /* Generates lots of log file output - turn on for debugging */
-+ for (i = 0; i < nr_pages; i++)
-+ fprintf(stderr, "set_map result i %x result %lx\n", i,
-+ extent_start[i]);
-+#endif
-+
+ return 0;
+}
+
@@ -345,8 +329,8 @@ Index: ioemu/vl.c
#ifdef CONFIG_GDBSTUB
Index: ioemu/vl.h
===================================================================
---- ioemu.orig/vl.h 2006-08-17 19:49:44.492850031 +0100
-+++ ioemu/vl.h 2006-08-17 19:49:52.163002246 +0100
+--- ioemu.orig/vl.h 2006-12-08 02:00:04.000000000 +0000
++++ ioemu/vl.h 2006-12-08 02:00:04.000000000 +0000
@@ -145,6 +145,13 @@
void main_loop_wait(int timeout);
diff -r 3e2b6365ba75 -r aabceba1dbc5 tools/ioemu/patches/vnc-access-monitor-vt
--- a/tools/ioemu/patches/vnc-access-monitor-vt Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/ioemu/patches/vnc-access-monitor-vt Mon Dec 11 11:17:11 2006 -0800
@@ -1,7 +1,7 @@ Index: ioemu/vnc.c
Index: ioemu/vnc.c
===================================================================
---- ioemu.orig/vnc.c 2006-10-24 14:33:46.000000000 +0100
-+++ ioemu/vnc.c 2006-10-24 14:33:46.000000000 +0100
+--- ioemu.orig/vnc.c 2006-12-06 23:46:11.000000000 +0000
++++ ioemu/vnc.c 2006-12-06 23:46:11.000000000 +0000
@@ -33,6 +33,10 @@
#include "vnc_keysym.h"
#include "keymaps.c"
@@ -22,7 +22,7 @@ Index: ioemu/vnc.c
};
#define DIRTY_PIXEL_BITS 64
-@@ -794,16 +800,80 @@
+@@ -796,16 +802,80 @@
static void do_key_event(VncState *vs, int down, uint32_t sym)
{
diff -r 3e2b6365ba75 -r aabceba1dbc5 tools/ioemu/patches/vnc-backoff-screen-scan
--- a/tools/ioemu/patches/vnc-backoff-screen-scan Mon Dec 11 11:16:29
2006 -0800
+++ b/tools/ioemu/patches/vnc-backoff-screen-scan Mon Dec 11 11:17:11
2006 -0800
@@ -1,7 +1,7 @@ Index: ioemu/vnc.c
Index: ioemu/vnc.c
===================================================================
---- ioemu.orig/vnc.c 2006-10-24 14:33:17.000000000 +0100
-+++ ioemu/vnc.c 2006-10-24 14:33:24.000000000 +0100
+--- ioemu.orig/vnc.c 2006-12-06 23:46:12.000000000 +0000
++++ ioemu/vnc.c 2006-12-06 23:46:12.000000000 +0000
@@ -28,7 +28,19 @@
#include "qemu_socket.h"
#include <assert.h>
@@ -45,7 +45,7 @@ Index: ioemu/vnc.c
int ctl_keys; /* Ctrl+Alt starts calibration */
};
-@@ -381,7 +392,7 @@
+@@ -383,7 +394,7 @@
int y = 0;
int pitch = ds->linesize;
VncState *vs = ds->opaque;
@@ -54,7 +54,7 @@ Index: ioemu/vnc.c
if (src_x < vs->visible_x || src_y < vs->visible_y ||
dst_x < vs->visible_x || dst_y < vs->visible_y ||
-@@ -391,10 +402,8 @@
+@@ -393,10 +404,8 @@
(dst_y + h) > (vs->visible_y + vs->visible_h))
updating_client = 0;
@@ -66,7 +66,7 @@ Index: ioemu/vnc.c
if (dst_y > src_y) {
y = h - 1;
-@@ -446,110 +455,149 @@
+@@ -448,110 +457,149 @@
static void _vnc_update_client(void *opaque)
{
VncState *vs = opaque;
@@ -299,7 +299,7 @@ Index: ioemu/vnc.c
}
static void vnc_update_client(void *opaque)
-@@ -562,8 +610,10 @@
+@@ -564,8 +612,10 @@
static void vnc_timer_init(VncState *vs)
{
@@ -311,7 +311,7 @@ Index: ioemu/vnc.c
}
static void vnc_dpy_refresh(DisplayState *ds)
-@@ -623,7 +673,6 @@
+@@ -625,7 +675,6 @@
vs->csock = -1;
buffer_reset(&vs->input);
buffer_reset(&vs->output);
@@ -319,7 +319,7 @@ Index: ioemu/vnc.c
return 0;
}
return ret;
-@@ -895,7 +944,6 @@
+@@ -897,7 +946,6 @@
int x_position, int y_position,
int w, int h)
{
@@ -327,7 +327,7 @@ Index: ioemu/vnc.c
if (!incremental)
framebuffer_set_updated(vs, x_position, y_position, w, h);
vs->visible_x = x_position;
-@@ -1018,6 +1066,7 @@
+@@ -1020,6 +1068,7 @@
{
int i;
uint16_t limit;
@@ -335,7 +335,7 @@ Index: ioemu/vnc.c
switch (data[0]) {
case 0:
-@@ -1061,12 +1110,18 @@
+@@ -1063,12 +1112,18 @@
if (len == 1)
return 8;
@@ -356,8 +356,8 @@ Index: ioemu/vnc.c
case 6:
Index: ioemu/vl.c
===================================================================
---- ioemu.orig/vl.c 2006-10-24 14:33:17.000000000 +0100
-+++ ioemu/vl.c 2006-10-24 14:33:24.000000000 +0100
+--- ioemu.orig/vl.c 2006-12-06 23:46:12.000000000 +0000
++++ ioemu/vl.c 2006-12-06 23:46:12.000000000 +0000
@@ -726,6 +726,12 @@
}
}
@@ -373,8 +373,8 @@ Index: ioemu/vl.c
void qemu_mod_timer(QEMUTimer *ts, int64_t expire_time)
Index: ioemu/vl.h
===================================================================
---- ioemu.orig/vl.h 2006-10-24 14:33:17.000000000 +0100
-+++ ioemu/vl.h 2006-10-24 14:33:24.000000000 +0100
+--- ioemu.orig/vl.h 2006-12-06 23:46:12.000000000 +0000
++++ ioemu/vl.h 2006-12-06 23:46:12.000000000 +0000
@@ -407,6 +407,7 @@
void qemu_free_timer(QEMUTimer *ts);
void qemu_del_timer(QEMUTimer *ts);
diff -r 3e2b6365ba75 -r aabceba1dbc5 tools/ioemu/patches/vnc-display-find-unused
--- a/tools/ioemu/patches/vnc-display-find-unused Mon Dec 11 11:16:29
2006 -0800
+++ b/tools/ioemu/patches/vnc-display-find-unused Mon Dec 11 11:17:11
2006 -0800
@@ -1,8 +1,8 @@ Index: ioemu/vnc.c
Index: ioemu/vnc.c
===================================================================
---- ioemu.orig/vnc.c 2006-10-24 14:31:09.000000000 +0100
-+++ ioemu/vnc.c 2006-10-24 14:31:36.000000000 +0100
-@@ -1195,7 +1195,7 @@
+--- ioemu.orig/vnc.c 2006-12-08 02:02:36.000000000 +0000
++++ ioemu/vnc.c 2006-12-08 02:02:37.000000000 +0000
+@@ -1197,7 +1197,7 @@
}
}
@@ -11,7 +11,7 @@ Index: ioemu/vnc.c
{
struct sockaddr_in addr;
int reuse_addr, ret;
-@@ -1226,10 +1226,6 @@
+@@ -1228,10 +1228,6 @@
exit(1);
}
@@ -22,7 +22,7 @@ Index: ioemu/vnc.c
reuse_addr = 1;
ret = setsockopt(vs->lsock, SOL_SOCKET, SO_REUSEADDR,
(const char *)&reuse_addr, sizeof(reuse_addr));
-@@ -1238,7 +1234,16 @@
+@@ -1240,7 +1236,16 @@
exit(1);
}
@@ -39,7 +39,7 @@ Index: ioemu/vnc.c
fprintf(stderr, "bind() failed\n");
exit(1);
}
-@@ -1259,6 +1264,8 @@
+@@ -1261,6 +1266,8 @@
vs->ds->dpy_refresh = vnc_dpy_refresh;
vnc_dpy_resize(vs->ds, 640, 400);
@@ -50,8 +50,8 @@ Index: ioemu/vnc.c
int vnc_start_viewer(int port)
Index: ioemu/vl.c
===================================================================
---- ioemu.orig/vl.c 2006-10-24 14:31:09.000000000 +0100
-+++ ioemu/vl.c 2006-10-24 14:31:41.000000000 +0100
+--- ioemu.orig/vl.c 2006-12-08 02:02:36.000000000 +0000
++++ ioemu/vl.c 2006-12-08 02:02:37.000000000 +0000
@@ -121,6 +121,7 @@
static DisplayState display_state;
int nographic;
@@ -84,7 +84,7 @@ Index: ioemu/vl.c
/* temporary options */
{ "usb", 0, QEMU_OPTION_usb },
-@@ -5873,6 +5877,7 @@
+@@ -5857,6 +5861,7 @@
snapshot = 0;
nographic = 0;
vncviewer = 0;
@@ -92,7 +92,7 @@ Index: ioemu/vl.c
kernel_filename = NULL;
kernel_cmdline = "";
#ifdef TARGET_PPC
-@@ -6270,6 +6275,11 @@
+@@ -6254,6 +6259,11 @@
case QEMU_OPTION_vncviewer:
vncviewer++;
break;
@@ -104,7 +104,7 @@ Index: ioemu/vl.c
}
}
}
-@@ -6483,7 +6493,7 @@
+@@ -6468,7 +6478,7 @@
if (nographic) {
dumb_display_init(ds);
} else if (vnc_display != -1) {
@@ -115,8 +115,8 @@ Index: ioemu/vl.c
} else {
Index: ioemu/vl.h
===================================================================
---- ioemu.orig/vl.h 2006-10-24 14:31:09.000000000 +0100
-+++ ioemu/vl.h 2006-10-24 14:31:36.000000000 +0100
+--- ioemu.orig/vl.h 2006-12-08 02:02:36.000000000 +0000
++++ ioemu/vl.h 2006-12-08 02:02:37.000000000 +0000
@@ -785,7 +785,7 @@
void cocoa_display_init(DisplayState *ds, int full_screen);
diff -r 3e2b6365ba75 -r aabceba1dbc5 tools/ioemu/patches/vnc-fixes
--- a/tools/ioemu/patches/vnc-fixes Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/ioemu/patches/vnc-fixes Mon Dec 11 11:17:11 2006 -0800
@@ -1,8 +1,8 @@ Index: ioemu/vl.c
Index: ioemu/vl.c
===================================================================
---- ioemu.orig/vl.c 2006-10-24 13:47:23.000000000 +0100
-+++ ioemu/vl.c 2006-10-24 14:19:36.000000000 +0100
-@@ -6534,8 +6534,10 @@
+--- ioemu.orig/vl.c 2006-12-08 02:02:36.000000000 +0000
++++ ioemu/vl.c 2006-12-08 02:02:36.000000000 +0000
+@@ -6519,8 +6519,10 @@
}
}
@@ -17,8 +17,8 @@ Index: ioemu/vl.c
if (use_gdbstub) {
Index: ioemu/vnc.c
===================================================================
---- ioemu.orig/vnc.c 2006-10-24 13:47:23.000000000 +0100
-+++ ioemu/vnc.c 2006-10-24 14:20:00.000000000 +0100
+--- ioemu.orig/vnc.c 2006-12-08 02:02:36.000000000 +0000
++++ ioemu/vnc.c 2006-12-08 02:02:36.000000000 +0000
@@ -3,6 +3,7 @@
*
* Copyright (C) 2006 Anthony Liguori <anthony@xxxxxxxxxxxxx>
@@ -92,7 +92,7 @@ Index: ioemu/vnc.c
static inline void vnc_set_bit(uint32_t *d, int k)
{
d[k >> 5] |= 1 << (k & 0x1f);
-@@ -139,20 +161,35 @@
+@@ -139,20 +161,37 @@
}
return 0;
}
@@ -121,6 +121,8 @@ Index: ioemu/vnc.c
mask = ~(0ULL);
+ h += y;
++ if (h > vs->ds->height)
++ h = vs->ds->height;
for (; y < h; y++)
- vs->dirty_row[y] |= mask;
+ row[y] |= mask;
@@ -134,7 +136,7 @@ Index: ioemu/vnc.c
}
static void vnc_framebuffer_update(VncState *vs, int x, int y, int w, int h,
-@@ -169,16 +206,23 @@
+@@ -169,16 +208,23 @@
static void vnc_dpy_resize(DisplayState *ds, int w, int h)
{
VncState *vs = ds->opaque;
@@ -160,7 +162,7 @@ Index: ioemu/vnc.c
ds->width = w;
ds->height = h;
ds->linesize = w * vs->depth;
-@@ -191,6 +235,10 @@
+@@ -191,6 +237,10 @@
vs->width = ds->width;
vs->height = ds->height;
}
@@ -171,7 +173,7 @@ Index: ioemu/vnc.c
}
/* fastest code */
-@@ -326,8 +374,20 @@
+@@ -326,8 +376,20 @@
int y = 0;
int pitch = ds->linesize;
VncState *vs = ds->opaque;
@@ -193,7 +195,7 @@ Index: ioemu/vnc.c
if (dst_y > src_y) {
y = h - 1;
-@@ -349,31 +409,34 @@
+@@ -349,31 +411,34 @@
old_row += pitch;
}
@@ -240,7 +242,7 @@ Index: ioemu/vnc.c
{
VncState *vs = opaque;
int64_t now = qemu_get_clock(rt_clock);
-@@ -382,14 +445,18 @@
+@@ -382,14 +447,18 @@
int y;
char *row;
char *old_row;
@@ -262,7 +264,7 @@ Index: ioemu/vnc.c
/* Walk through the dirty map and eliminate tiles that
really aren't dirty */
-@@ -397,23 +464,25 @@
+@@ -397,23 +466,25 @@
old_row = vs->old_data;
for (y = 0; y < vs->ds->height; y++) {
@@ -297,7 +299,7 @@ Index: ioemu/vnc.c
}
}
-@@ -421,7 +490,8 @@
+@@ -421,7 +492,8 @@
old_row += vs->ds->linesize;
}
@@ -307,7 +309,7 @@ Index: ioemu/vnc.c
return;
/* Count rectangles */
-@@ -431,34 +501,56 @@
+@@ -431,34 +503,56 @@
saved_offset = vs->output.offset;
vnc_write_u16(vs, 0);
@@ -375,7 +377,7 @@ Index: ioemu/vnc.c
}
static void vnc_timer_init(VncState *vs)
-@@ -469,8 +561,6 @@
+@@ -469,8 +563,6 @@
static void vnc_dpy_refresh(DisplayState *ds)
{
@@ -384,7 +386,7 @@ Index: ioemu/vnc.c
vga_hw_update();
}
-@@ -506,7 +596,7 @@
+@@ -506,7 +598,7 @@
static void buffer_reset(Buffer *buffer)
{
@@ -393,7 +395,7 @@ Index: ioemu/vnc.c
}
static void buffer_append(Buffer *buffer, const void *data, size_t len)
-@@ -547,12 +637,12 @@
+@@ -547,12 +639,12 @@
if (!ret)
return;
@@ -409,7 +411,7 @@ Index: ioemu/vnc.c
}
static void vnc_read_when(VncState *vs, VncReadEvent *func, size_t expecting)
-@@ -584,11 +674,11 @@
+@@ -584,11 +676,11 @@
return;
if (!ret) {
@@ -424,7 +426,7 @@ Index: ioemu/vnc.c
}
}
-@@ -596,9 +686,9 @@
+@@ -596,9 +688,9 @@
{
buffer_reserve(&vs->output, len);
@@ -437,7 +439,7 @@ Index: ioemu/vnc.c
buffer_append(&vs->output, data, len);
}
-@@ -720,22 +810,25 @@
+@@ -720,22 +812,25 @@
do_key_event(vs, down, sym);
}
@@ -474,7 +476,7 @@ Index: ioemu/vnc.c
qemu_mod_timer(vs->timer, qemu_get_clock(rt_clock));
}
-@@ -843,8 +936,6 @@
+@@ -843,8 +938,6 @@
}
vnc_dpy_resize(vs->ds, vs->ds->width, vs->ds->height);
@@ -483,7 +485,7 @@ Index: ioemu/vnc.c
vga_hw_invalidate();
vga_hw_update();
-@@ -924,6 +1015,8 @@
+@@ -924,6 +1017,8 @@
{
char pad[3] = { 0, 0, 0 };
@@ -492,7 +494,7 @@ Index: ioemu/vnc.c
vs->width = vs->ds->width;
vs->height = vs->ds->height;
vnc_write_u16(vs, vs->ds->width);
-@@ -1010,11 +1103,11 @@
+@@ -1010,11 +1105,11 @@
vnc_write(vs, "RFB 003.003\n", 12);
vnc_flush(vs);
vnc_read_when(vs, protocol_version, 12);
@@ -506,7 +508,7 @@ Index: ioemu/vnc.c
}
}
-@@ -1071,17 +1164,15 @@
+@@ -1071,17 +1166,15 @@
exit(1);
}
@@ -529,8 +531,8 @@ Index: ioemu/vnc.c
}
Index: ioemu/vl.h
===================================================================
---- ioemu.orig/vl.h 2006-10-24 13:47:23.000000000 +0100
-+++ ioemu/vl.h 2006-10-24 14:19:36.000000000 +0100
+--- ioemu.orig/vl.h 2006-12-08 02:02:36.000000000 +0000
++++ ioemu/vl.h 2006-12-08 02:02:36.000000000 +0000
@@ -319,6 +319,7 @@
int is_graphic_console(void);
CharDriverState *text_console_init(DisplayState *ds);
diff -r 3e2b6365ba75 -r aabceba1dbc5
tools/ioemu/patches/vnc-listen-specific-interface
--- a/tools/ioemu/patches/vnc-listen-specific-interface Mon Dec 11 11:16:29
2006 -0800
+++ b/tools/ioemu/patches/vnc-listen-specific-interface Mon Dec 11 11:17:11
2006 -0800
@@ -20,8 +20,8 @@ Signed-off-by: Daniel P. Berrange <berr
Index: ioemu/vl.c
===================================================================
---- ioemu.orig/vl.c 2006-10-24 14:33:46.000000000 +0100
-+++ ioemu/vl.c 2006-10-24 14:34:28.000000000 +0100
+--- ioemu.orig/vl.c 2006-12-08 02:02:37.000000000 +0000
++++ ioemu/vl.c 2006-12-08 02:02:37.000000000 +0000
@@ -122,6 +122,7 @@
int nographic;
int vncviewer;
@@ -95,7 +95,7 @@ Index: ioemu/vl.c
/* temporary options */
{ "usb", 0, QEMU_OPTION_usb },
-@@ -5905,6 +5915,8 @@
+@@ -5889,6 +5899,8 @@
nb_nics = 0;
/* default mac address of the first network interface */
@@ -103,8 +103,8 @@ Index: ioemu/vl.c
+ memset(&vnclisten_addr.sin_addr, 0, sizeof(vnclisten_addr.sin_addr));
/* init debug */
- sprintf(qemu_dm_logfilename, "/var/log/xen/qemu-dm.%d.log", getpid());
-@@ -6280,6 +6292,9 @@
+ sprintf(qemu_dm_logfilename, "/var/log/xen/qemu-dm.%ld.log",
(long)getpid());
+@@ -6264,6 +6276,9 @@
if (vnc_display == -1)
vnc_display = 0;
break;
@@ -114,7 +114,7 @@ Index: ioemu/vl.c
}
}
}
-@@ -6493,7 +6508,7 @@
+@@ -6478,7 +6493,7 @@
if (nographic) {
dumb_display_init(ds);
} else if (vnc_display != -1) {
@@ -125,8 +125,8 @@ Index: ioemu/vl.c
} else {
Index: ioemu/vl.h
===================================================================
---- ioemu.orig/vl.h 2006-10-24 14:33:46.000000000 +0100
-+++ ioemu/vl.h 2006-10-24 14:34:22.000000000 +0100
+--- ioemu.orig/vl.h 2006-12-08 02:02:37.000000000 +0000
++++ ioemu/vl.h 2006-12-08 02:02:37.000000000 +0000
@@ -37,6 +37,8 @@
#include <unistd.h>
#include <fcntl.h>
@@ -147,9 +147,9 @@ Index: ioemu/vl.h
/* ide.c */
Index: ioemu/vnc.c
===================================================================
---- ioemu.orig/vnc.c 2006-10-24 14:33:46.000000000 +0100
-+++ ioemu/vnc.c 2006-10-24 14:34:22.000000000 +0100
-@@ -1195,9 +1195,8 @@
+--- ioemu.orig/vnc.c 2006-12-08 02:02:37.000000000 +0000
++++ ioemu/vnc.c 2006-12-08 02:02:37.000000000 +0000
+@@ -1197,9 +1197,8 @@
}
}
@@ -160,7 +160,7 @@ Index: ioemu/vnc.c
int reuse_addr, ret;
VncState *vs;
-@@ -1235,11 +1234,10 @@
+@@ -1237,11 +1236,10 @@
}
retry:
diff -r 3e2b6365ba75 -r aabceba1dbc5 tools/ioemu/patches/vnc-password
--- a/tools/ioemu/patches/vnc-password Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/ioemu/patches/vnc-password Mon Dec 11 11:17:11 2006 -0800
@@ -15,9 +15,11 @@ The difference is follows.
Signed-off-by: Masami Watanabe <masami.watanabe@xxxxxxxxxxxxxx>
---- ioemu/Makefile.target Fri Oct 20 09:32:16 2006 +0100
-+++ ioemu/Makefile.target Fri Oct 20 09:50:09 2006 +0100
-@@ -406,6 +406,7 @@ VL_OBJS+=sdl.o
+Index: ioemu/Makefile.target
+===================================================================
+--- ioemu.orig/Makefile.target 2006-12-08 18:20:53.000000000 +0000
++++ ioemu/Makefile.target 2006-12-08 18:20:53.000000000 +0000
+@@ -407,6 +407,7 @@
VL_OBJS+=sdl.o
endif
VL_OBJS+=vnc.o
@@ -25,29 +27,31 @@ Signed-off-by: Masami Watanabe <masami.w
ifdef CONFIG_COCOA
VL_OBJS+=cocoa.o
COCOA_LIBS=-F/System/Library/Frameworks -framework Cocoa -framework IOKit
-@@ -464,6 +465,9 @@ sdl.o: sdl.c keymaps.c sdl_keysym.h
+@@ -467,6 +468,9 @@
+ vnc.o: vnc.c keymaps.c sdl_keysym.h vnchextile.h
+ $(CC) $(CFLAGS) $(DEFINES) -c -o $@ $<
+
++d3des.o: d3des.c d3des.h
++ $(CC) $(CFLAGS) $(DEFINES) -c -o $@ $<
++
+ sdlaudio.o: sdlaudio.c
$(CC) $(CFLAGS) $(DEFINES) $(SDL_CFLAGS) -c -o $@ $<
- vnc.o: vnc.c keymaps.c sdl_keysym.h vnchextile.h
-+ $(CC) $(CFLAGS) $(DEFINES) -c -o $@ $<
-+
-+d3des.o: d3des.c d3des.h
- $(CC) $(CFLAGS) $(DEFINES) -c -o $@ $<
-
- sdlaudio.o: sdlaudio.c
---- ioemu/vl.c Fri Oct 20 09:32:16 2006 +0100
-+++ ioemu/vl.c Fri Oct 20 09:50:09 2006 +0100
-@@ -170,6 +170,9 @@ time_t timeoffset = 0;
-
+Index: ioemu/vl.c
+===================================================================
+--- ioemu.orig/vl.c 2006-12-08 18:20:52.000000000 +0000
++++ ioemu/vl.c 2006-12-08 18:20:53.000000000 +0000
+@@ -171,6 +171,9 @@
char domain_name[1024] = { 'H','V', 'M', 'X', 'E', 'N', '-'};
extern int domid;
-+
+
+char vncpasswd[64];
+unsigned char challenge[AUTHCHALLENGESIZE];
-
++
/***********************************************************/
/* x86 ISA bus support */
-@@ -5911,6 +5914,7 @@ int main(int argc, char **argv)
+
+@@ -5895,6 +5898,7 @@
vncunused = 0;
kernel_filename = NULL;
kernel_cmdline = "";
@@ -55,7 +59,7 @@ Signed-off-by: Masami Watanabe <masami.w
#ifndef CONFIG_DM
#ifdef TARGET_PPC
cdrom_index = 1;
-@@ -6559,6 +6563,10 @@ int main(int argc, char **argv)
+@@ -6543,6 +6547,10 @@
init_ioports();
@@ -66,9 +70,11 @@ Signed-off-by: Masami Watanabe <masami.w
/* terminal init */
if (nographic) {
dumb_display_init(ds);
---- ioemu/vl.h Fri Oct 20 09:32:16 2006 +0100
-+++ ioemu/vl.h Fri Oct 20 09:50:09 2006 +0100
-@@ -1211,6 +1211,7 @@ void xenstore_process_event(void *opaque
+Index: ioemu/vl.h
+===================================================================
+--- ioemu.orig/vl.h 2006-12-08 18:20:52.000000000 +0000
++++ ioemu/vl.h 2006-12-08 18:20:53.000000000 +0000
+@@ -1214,6 +1214,7 @@
void xenstore_process_event(void *opaque);
void xenstore_check_new_media_present(int timeout);
void xenstore_write_vncport(int vnc_display);
@@ -76,7 +82,7 @@ Signed-off-by: Masami Watanabe <masami.w
/* xen_platform.c */
void pci_xen_platform_init(PCIBus *bus);
-@@ -1222,4 +1223,7 @@ extern char domain_name[];
+@@ -1225,4 +1226,7 @@
void destroy_hvm_domain(void);
@@ -84,8 +90,10 @@ Signed-off-by: Masami Watanabe <masami.w
+#define AUTHCHALLENGESIZE 16
+
#endif /* VL_H */
---- ioemu/vnc.c Fri Oct 20 09:32:16 2006 +0100
-+++ ioemu/vnc.c Fri Oct 20 09:50:09 2006 +0100
+Index: ioemu/vnc.c
+===================================================================
+--- ioemu.orig/vnc.c 2006-12-08 18:20:52.000000000 +0000
++++ ioemu/vnc.c 2006-12-08 18:20:53.000000000 +0000
@@ -44,6 +44,7 @@
#include "vnc_keysym.h"
@@ -94,7 +102,7 @@ Signed-off-by: Masami Watanabe <masami.w
#define XK_MISCELLANY
#define XK_LATIN1
-@@ -137,6 +138,9 @@ static void vnc_update_client(void *opaq
+@@ -137,6 +138,9 @@
static void vnc_update_client(void *opaque);
static void vnc_client_read(void *opaque);
static void framebuffer_set_updated(VncState *vs, int x, int y, int w, int h);
@@ -104,7 +112,7 @@ Signed-off-by: Masami Watanabe <masami.w
#if 0
static inline void vnc_set_bit(uint32_t *d, int k)
-@@ -1208,23 +1212,92 @@ static int protocol_client_init(VncState
+@@ -1210,23 +1214,92 @@
return 0;
}
@@ -166,9 +174,8 @@ Signed-off-by: Masami Watanabe <masami.w
- vnc_write_u32(vs, 1); /* None */
- vnc_flush(vs);
--
+
- vnc_read_when(vs, protocol_client_init, 1);
-+
+ support = 0;
+ if (maj = 3) {
+ if (min == 3 || min ==4) {
@@ -202,7 +209,7 @@ Signed-off-by: Masami Watanabe <masami.w
return 0;
}
-@@ -1342,3 +1415,32 @@ int vnc_start_viewer(int port)
+@@ -1344,3 +1417,32 @@
return pid;
}
}
@@ -235,9 +242,11 @@ Signed-off-by: Masami Watanabe <masami.w
+
+ return;
+}
---- ioemu/xenstore.c Fri Oct 20 09:32:16 2006 +0100
-+++ ioemu/xenstore.c Fri Oct 20 09:50:09 2006 +0100
-@@ -213,3 +213,54 @@ void xenstore_write_vncport(int display)
+Index: ioemu/xenstore.c
+===================================================================
+--- ioemu.orig/xenstore.c 2006-12-08 18:20:52.000000000 +0000
++++ ioemu/xenstore.c 2006-12-08 18:20:53.000000000 +0000
+@@ -213,3 +213,54 @@
free(portstr);
free(buf);
}
@@ -292,8 +301,10 @@ Signed-off-by: Masami Watanabe <masami.w
+
+ return rc;
+}
---- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ ioemu/d3des.c Fri Oct 20 09:50:09 2006 +0100
+Index: ioemu/d3des.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ ioemu/d3des.c 2006-12-08 18:20:53.000000000 +0000
@@ -0,0 +1,434 @@
+/*
+ * This is D3DES (V5.09) by Richard Outerbridge with the double and
@@ -729,8 +740,10 @@ Signed-off-by: Masami Watanabe <masami.w
+ *
+ * d3des V5.0a rwo 9208.07 18:44 Graven Imagery
+ **********************************************************************/
---- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ ioemu/d3des.h Fri Oct 20 09:50:09 2006 +0100
+Index: ioemu/d3des.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ ioemu/d3des.h 2006-12-08 18:20:53.000000000 +0000
@@ -0,0 +1,51 @@
+/*
+ * This is D3DES (V5.09) by Richard Outerbridge with the double and
diff -r 3e2b6365ba75 -r aabceba1dbc5 tools/ioemu/patches/vnc-protocol-fixes
--- a/tools/ioemu/patches/vnc-protocol-fixes Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/ioemu/patches/vnc-protocol-fixes Mon Dec 11 11:17:11 2006 -0800
@@ -9,8 +9,8 @@ Signed-off-by: Steven Smith <sos22@xxxxx
Index: ioemu/vnc.c
===================================================================
---- ioemu.orig/vnc.c 2006-10-24 14:28:05.000000000 +0100
-+++ ioemu/vnc.c 2006-10-24 14:30:11.000000000 +0100
+--- ioemu.orig/vnc.c 2006-12-06 23:46:11.000000000 +0000
++++ ioemu/vnc.c 2006-12-06 23:46:11.000000000 +0000
@@ -26,6 +26,7 @@
#include "vl.h"
@@ -19,7 +19,7 @@ Index: ioemu/vnc.c
#define VNC_REFRESH_INTERVAL (1000 / 30)
-@@ -677,8 +678,10 @@
+@@ -679,8 +680,10 @@
memmove(vs->input.buffer, vs->input.buffer + len,
vs->input.offset - len);
vs->input.offset -= len;
@@ -31,7 +31,7 @@ Index: ioemu/vnc.c
}
}
-@@ -961,8 +964,12 @@
+@@ -963,8 +966,12 @@
if (len == 1)
return 4;
@@ -46,7 +46,7 @@ Index: ioemu/vnc.c
limit = read_u16(data, 2);
for (i = 0; i < limit; i++) {
-@@ -996,8 +1003,12 @@
+@@ -998,8 +1005,12 @@
if (len == 1)
return 8;
diff -r 3e2b6365ba75 -r aabceba1dbc5 tools/ioemu/patches/vnc-start-vncviewer
--- a/tools/ioemu/patches/vnc-start-vncviewer Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/ioemu/patches/vnc-start-vncviewer Mon Dec 11 11:17:11 2006 -0800
@@ -1,8 +1,8 @@ Index: ioemu/vnc.c
Index: ioemu/vnc.c
===================================================================
---- ioemu.orig/vnc.c 2006-10-24 14:33:46.000000000 +0100
-+++ ioemu/vnc.c 2006-10-24 14:33:46.000000000 +0100
-@@ -1187,3 +1187,25 @@
+--- ioemu.orig/vnc.c 2006-12-08 02:02:36.000000000 +0000
++++ ioemu/vnc.c 2006-12-08 02:02:36.000000000 +0000
+@@ -1189,3 +1189,25 @@
vnc_dpy_resize(vs->ds, 640, 400);
}
@@ -30,8 +30,8 @@ Index: ioemu/vnc.c
+}
Index: ioemu/vl.c
===================================================================
---- ioemu.orig/vl.c 2006-10-24 14:33:46.000000000 +0100
-+++ ioemu/vl.c 2006-10-24 14:33:46.000000000 +0100
+--- ioemu.orig/vl.c 2006-12-08 02:02:36.000000000 +0000
++++ ioemu/vl.c 2006-12-08 02:02:36.000000000 +0000
@@ -120,6 +120,7 @@
int bios_size;
static DisplayState display_state;
@@ -64,7 +64,7 @@ Index: ioemu/vl.c
/* temporary options */
{ "usb", 0, QEMU_OPTION_usb },
-@@ -5868,6 +5872,7 @@
+@@ -5852,6 +5856,7 @@
#endif
snapshot = 0;
nographic = 0;
@@ -72,7 +72,7 @@ Index: ioemu/vl.c
kernel_filename = NULL;
kernel_cmdline = "";
#ifdef TARGET_PPC
-@@ -6262,6 +6267,9 @@
+@@ -6246,6 +6251,9 @@
case QEMU_OPTION_acpi:
acpi_enabled = 1;
break;
@@ -82,7 +82,7 @@ Index: ioemu/vl.c
}
}
}
-@@ -6476,6 +6484,8 @@
+@@ -6461,6 +6469,8 @@
dumb_display_init(ds);
} else if (vnc_display != -1) {
vnc_display_init(ds, vnc_display);
@@ -93,8 +93,8 @@ Index: ioemu/vl.c
sdl_display_init(ds, full_screen);
Index: ioemu/vl.h
===================================================================
---- ioemu.orig/vl.h 2006-10-24 14:33:46.000000000 +0100
-+++ ioemu/vl.h 2006-10-24 14:33:46.000000000 +0100
+--- ioemu.orig/vl.h 2006-12-08 02:02:36.000000000 +0000
++++ ioemu/vl.h 2006-12-08 02:02:36.000000000 +0000
@@ -786,6 +786,7 @@
/* vnc.c */
diff -r 3e2b6365ba75 -r aabceba1dbc5 tools/ioemu/patches/vnc-title-domain-name
--- a/tools/ioemu/patches/vnc-title-domain-name Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/ioemu/patches/vnc-title-domain-name Mon Dec 11 11:17:11 2006 -0800
@@ -1,8 +1,8 @@ Index: ioemu/vnc.c
Index: ioemu/vnc.c
===================================================================
---- ioemu.orig/vnc.c 2006-10-24 14:33:46.000000000 +0100
-+++ ioemu/vnc.c 2006-10-24 14:33:46.000000000 +0100
-@@ -1024,6 +1024,7 @@
+--- ioemu.orig/vnc.c 2006-12-06 23:46:11.000000000 +0000
++++ ioemu/vnc.c 2006-12-06 23:46:11.000000000 +0000
+@@ -1026,6 +1026,7 @@
static int protocol_client_init(VncState *vs, char *data, size_t len)
{
@@ -10,7 +10,7 @@ Index: ioemu/vnc.c
char pad[3] = { 0, 0, 0 };
vga_hw_update();
-@@ -1071,8 +1072,10 @@
+@@ -1073,8 +1074,10 @@
vnc_write(vs, pad, 3); /* padding */
diff -r 3e2b6365ba75 -r aabceba1dbc5 tools/ioemu/patches/xen-build
--- a/tools/ioemu/patches/xen-build Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/ioemu/patches/xen-build Mon Dec 11 11:17:11 2006 -0800
@@ -1,7 +1,7 @@ Index: ioemu/Makefile
Index: ioemu/Makefile
===================================================================
---- ioemu.orig/Makefile 2006-10-24 14:37:25.000000000 +0100
-+++ ioemu/Makefile 2006-10-24 14:37:28.000000000 +0100
+--- ioemu.orig/Makefile 2006-12-08 01:26:04.000000000 +0000
++++ ioemu/Makefile 2006-12-08 01:26:06.000000000 +0000
@@ -1,11 +1,14 @@
# Makefile for QEMU.
@@ -85,8 +85,8 @@ Index: ioemu/Makefile
info: qemu-doc.info qemu-tech.info
Index: ioemu/Makefile.target
===================================================================
---- ioemu.orig/Makefile.target 2006-10-24 14:37:25.000000000 +0100
-+++ ioemu/Makefile.target 2006-10-24 14:40:25.000000000 +0100
+--- ioemu.orig/Makefile.target 2006-12-08 01:26:04.000000000 +0000
++++ ioemu/Makefile.target 2006-12-08 01:41:05.000000000 +0000
@@ -1,5 +1,8 @@
include config.mak
@@ -120,9 +120,13 @@ Index: ioemu/Makefile.target
#CFLAGS+=-Werror
LDFLAGS=-g
LIBS=
-@@ -167,6 +177,9 @@
-
- DEFINES+=-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
+@@ -165,8 +175,12 @@
+
+ #########################################################
+
+-DEFINES+=-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
++DEFINES+=-D_GNU_SOURCE
++#-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
LIBS+=-lm
+LIBS+=-L../../libxc -lxenctrl -lxenguest
+LIBS+=-L../../xenstore -lxenstore
@@ -130,7 +134,7 @@ Index: ioemu/Makefile.target
ifndef CONFIG_USER_ONLY
LIBS+=-lz
endif
-@@ -281,7 +294,7 @@
+@@ -281,7 +295,7 @@
all: $(PROGS)
$(QEMU_USER): $(OBJS)
@@ -139,7 +143,7 @@ Index: ioemu/Makefile.target
ifeq ($(ARCH),alpha)
# Mark as 32 bit binary, i. e. it will be mapped into the low 31 bit of
# the address space (31 bit so sign extending doesn't matter)
-@@ -528,10 +541,16 @@
+@@ -528,10 +542,16 @@
clean:
rm -f *.o *.a *~ $(PROGS) gen-op.h opc.h op.h nwfpe/*.o slirp/*.o
fpu/*.o
@@ -159,8 +163,8 @@ Index: ioemu/Makefile.target
include .depend
Index: ioemu/configure
===================================================================
---- ioemu.orig/configure 2006-10-24 14:37:25.000000000 +0100
-+++ ioemu/configure 2006-10-24 14:40:20.000000000 +0100
+--- ioemu.orig/configure 2006-12-08 01:26:04.000000000 +0000
++++ ioemu/configure 2006-12-08 01:40:58.000000000 +0000
@@ -18,8 +18,8 @@
# default parameters
diff -r 3e2b6365ba75 -r aabceba1dbc5 tools/ioemu/patches/xen-mm
--- a/tools/ioemu/patches/xen-mm Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/ioemu/patches/xen-mm Mon Dec 11 11:17:11 2006 -0800
@@ -1,7 +1,7 @@ Index: ioemu/hw/pc.c
Index: ioemu/hw/pc.c
===================================================================
---- ioemu.orig/hw/pc.c 2006-08-17 19:36:00.588166019 +0100
-+++ ioemu/hw/pc.c 2006-08-17 19:37:36.704485734 +0100
+--- ioemu.orig/hw/pc.c 2006-12-08 02:00:38.000000000 +0000
++++ ioemu/hw/pc.c 2006-12-08 02:02:07.000000000 +0000
@@ -646,7 +646,9 @@
}
@@ -25,8 +25,8 @@ Index: ioemu/hw/pc.c
isa_bios_size = bios_size;
Index: ioemu/vl.c
===================================================================
---- ioemu.orig/vl.c 2006-08-17 19:36:00.667157242 +0100
-+++ ioemu/vl.c 2006-08-17 19:47:08.538087284 +0100
+--- ioemu.orig/vl.c 2006-12-08 02:00:39.000000000 +0000
++++ ioemu/vl.c 2006-12-08 02:02:28.000000000 +0000
@@ -158,6 +158,8 @@
int acpi_enabled = 1;
int fd_bootchk = 1;
@@ -60,7 +60,7 @@ Index: ioemu/vl.c
break;
case QEMU_OPTION_l:
{
-@@ -6133,12 +6140,67 @@
+@@ -6133,12 +6140,61 @@
/* init the memory */
phys_ram_size = ram_size + vga_ram_size + bios_size;
@@ -85,14 +85,8 @@ Index: ioemu/vl.c
+ exit(-1);
+ }
+
-+ if (xc_get_pfn_list(xc_handle, domid, page_array, nr_pages) != nr_pages) {
-+ fprintf(logfile, "xc_get_pfn_list returned error %d\n", errno);
-+ exit(-1);
-+ }
-+
-+ if (ram_size > HVM_BELOW_4G_RAM_END)
-+ for (i = 0; i < nr_pages - (HVM_BELOW_4G_RAM_END >> PAGE_SHIFT); i++)
-+ page_array[tmp_nr_pages - 1 - i] = page_array[nr_pages - 1 - i];
++ for ( i = 0; i < tmp_nr_pages; i++)
++ page_array[i] = i;
+
+ phys_ram_base = xc_map_foreign_batch(xc_handle, domid,
+ PROT_READ|PROT_WRITE, page_array,
@@ -130,8 +124,8 @@ Index: ioemu/vl.c
if (cdrom_index >= 0) {
Index: ioemu/hw/piix_pci.c
===================================================================
---- ioemu.orig/hw/piix_pci.c 2006-08-17 19:37:36.189542951 +0100
-+++ ioemu/hw/piix_pci.c 2006-08-17 19:38:05.806252180 +0100
+--- ioemu.orig/hw/piix_pci.c 2006-12-08 02:00:36.000000000 +0000
++++ ioemu/hw/piix_pci.c 2006-12-08 02:02:06.000000000 +0000
@@ -399,7 +399,7 @@
uint8_t elcr[2];
@@ -143,8 +137,8 @@ Index: ioemu/hw/piix_pci.c
elcr[0] = 0x00;
Index: ioemu/vl.h
===================================================================
---- ioemu.orig/vl.h 2006-08-17 19:37:36.529505177 +0100
-+++ ioemu/vl.h 2006-08-17 19:47:32.680418959 +0100
+--- ioemu.orig/vl.h 2006-12-08 02:00:39.000000000 +0000
++++ ioemu/vl.h 2006-12-08 02:02:07.000000000 +0000
@@ -39,6 +39,7 @@
#include <sys/stat.h>
#include "xenctrl.h"
diff -r 3e2b6365ba75 -r aabceba1dbc5 tools/ioemu/patches/xen-platform-device
--- a/tools/ioemu/patches/xen-platform-device Mon Dec 11 11:16:29 2006 -0800
+++ b/tools/ioemu/patches/xen-platform-device Mon Dec 11 11:17:11 2006 -0800
@@ -3,9 +3,9 @@ will come later.
Index: ioemu/Makefile.target
===================================================================
---- ioemu.orig/Makefile.target 2006-10-24 14:41:01.000000000 +0100
-+++ ioemu/Makefile.target 2006-10-24 14:41:01.000000000 +0100
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|