[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] Merge.
# 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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |